From a37d000c2b4acfc72f5a5e75e5cd711fd10acaa8 Mon Sep 17 00:00:00 2001 From: Kenny Guy Date: Wed, 1 Oct 2014 18:35:37 +0100 Subject: [PATCH] SettingsProvider should use correct cache when redirecting to user 0. SettingsProvider reads secure and system settings for managed profiles from user 0 instead. However it still checks the cache for the managed profile not user 0. Bug: 17736586 Change-Id: I15d44b8a5779b01e6b9032e528dc34f5c5602449 --- .../providers/settings/SettingsProvider.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index ba5d11df3eb2e..2502088d5dba6 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -691,12 +691,11 @@ public class SettingsProvider extends ContentProvider { if (Settings.CALL_METHOD_GET_SYSTEM.equals(method)) { if (LOCAL_LOGV) Slog.v(TAG, "call(system:" + request + ") for " + callingUser); // Check if this request should be (re)directed to the primary user's db - if (callingUser == UserHandle.USER_OWNER - || shouldShadowParentProfile(callingUser, sSystemCloneToManagedKeys, request)) { - dbHelper = getOrEstablishDatabase(UserHandle.USER_OWNER); - } else { - dbHelper = getOrEstablishDatabase(callingUser); + if (callingUser != UserHandle.USER_OWNER + && shouldShadowParentProfile(callingUser, sSystemCloneToManagedKeys, request)) { + callingUser = UserHandle.USER_OWNER; } + dbHelper = getOrEstablishDatabase(callingUser); cache = sSystemCaches.get(callingUser); return lookupValue(dbHelper, TABLE_SYSTEM, cache, request); } @@ -710,10 +709,9 @@ public class SettingsProvider extends ContentProvider { UserManager.DISALLOW_SHARE_LOCATION, new UserHandle(callingUser))) { return sSecureCaches.get(callingUser).putIfAbsent(request, ""); } - dbHelper = getOrEstablishDatabase(UserHandle.USER_OWNER); - } else { - dbHelper = getOrEstablishDatabase(callingUser); + callingUser = UserHandle.USER_OWNER; } + dbHelper = getOrEstablishDatabase(callingUser); cache = sSecureCaches.get(callingUser); return lookupValue(dbHelper, TABLE_SECURE, cache, request); }