From 347c165521bafb72b9e6bcdbd6247b504c31040c Mon Sep 17 00:00:00 2001 From: Becca Hughes Date: Wed, 10 May 2023 15:21:17 +0000 Subject: [PATCH] Fix change not picking up work profile Test: ondevice Bug: 281787107 Change-Id: I676384877ce21ae1f1e6972646fc465828013c74 --- ...CredentialManagerPreferenceController.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java index ed5804f8916..d6808a4014c 100644 --- a/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +++ b/src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java @@ -122,8 +122,9 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl mExecutor = ContextCompat.getMainExecutor(mContext); mCredentialManager = getCredentialManager(context, preferenceKey.equals("credentials_test")); - mSettingsContentObserver = new SettingContentObserver(mHandler); - mSettingsContentObserver.register(context.getContentResolver()); + mSettingsContentObserver = + new SettingContentObserver(mHandler, context.getContentResolver()); + mSettingsContentObserver.register(); mSettingsPackageMonitor.register(context, context.getMainLooper(), false); } @@ -184,6 +185,10 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl mIsWorkProfile = isWorkProfile; setDelegate(delegate); verifyReceivedIntent(launchIntent); + + // Recreate the content observers because the user might have changed. + mSettingsContentObserver.unregister(); + mSettingsContentObserver.register(); } /** @@ -889,17 +894,24 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl private final Uri mCredentialPrimaryService = Settings.Secure.getUriFor(Settings.Secure.CREDENTIAL_SERVICE_PRIMARY); - public SettingContentObserver(Handler handler) { + private ContentResolver mContentResolver; + + public SettingContentObserver(Handler handler, ContentResolver contentResolver) { super(handler); + mContentResolver = contentResolver; } - public void register(ContentResolver contentResolver) { - contentResolver.registerContentObserver(mAutofillService, false, this, getUser()); - contentResolver.registerContentObserver(mCredentialService, false, this, getUser()); - contentResolver.registerContentObserver( + public void register() { + mContentResolver.registerContentObserver(mAutofillService, false, this, getUser()); + mContentResolver.registerContentObserver(mCredentialService, false, this, getUser()); + mContentResolver.registerContentObserver( mCredentialPrimaryService, false, this, getUser()); } + public void unregister() { + mContentResolver.unregisterContentObserver(this); + } + @Override public void onChange(boolean selfChange, Uri uri) { updateFromExternal();