summaryrefslogtreecommitdiff
path: root/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
diff options
context:
space:
mode:
Diffstat (limited to 'packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java')
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index 5f4b2391a763..6c983601b5a9 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -298,6 +298,22 @@ final class SettingsState {
}
// The settings provider must hold its lock when calling here.
+ public void resetSettingDefaultValueLocked(String name) {
+ Setting oldSetting = getSettingLocked(name);
+ if (oldSetting != null && !oldSetting.isNull() && oldSetting.getDefaultValue() != null) {
+ String oldValue = oldSetting.getValue();
+ String oldDefaultValue = oldSetting.getDefaultValue();
+ Setting newSetting = new Setting(name, oldSetting.getValue(), null,
+ oldSetting.getPackageName(), oldSetting.getTag(), false,
+ oldSetting.getId());
+ mSettings.put(name, newSetting);
+ updateMemoryUsagePerPackageLocked(newSetting.getPackageName(), oldValue,
+ newSetting.getValue(), oldDefaultValue, newSetting.getDefaultValue());
+ scheduleWriteIfNeededLocked();
+ }
+ }
+
+ // The settings provider must hold its lock when calling here.
public boolean insertSettingLocked(String name, String value, String tag,
boolean makeDefault, String packageName) {
if (TextUtils.isEmpty(name)) {
@@ -1003,6 +1019,10 @@ final class SettingsState {
}
public static boolean isSystemPackage(Context context, String packageName) {
+ return isSystemPackage(context, packageName, Binder.getCallingUid());
+ }
+
+ public static boolean isSystemPackage(Context context, String packageName, int callingUid) {
synchronized (sLock) {
if (SYSTEM_PACKAGE_NAME.equals(packageName)) {
return true;
@@ -1015,7 +1035,7 @@ final class SettingsState {
}
// Native services running as a special UID get a pass
- final int callingAppId = UserHandle.getAppId(Binder.getCallingUid());
+ final int callingAppId = UserHandle.getAppId(callingUid);
if (callingAppId < FIRST_APPLICATION_UID) {
sSystemUids.put(callingAppId, callingAppId);
return true;
@@ -1026,7 +1046,7 @@ final class SettingsState {
// profile for the purpose of determining whether the other end is a
// system component we need to use the user id of the caller for
// pulling information about the caller from the package manager.
- final int callingUserId = UserHandle.getCallingUserId();
+ final int callingUserId = UserHandle.getUserId(callingUid);
final long identity = Binder.clearCallingIdentity();
try {