diff options
Diffstat (limited to 'packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java')
-rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java | 24 |
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 { |