Loading src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +52 −14 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.annotation.Nullable; import android.app.Activity; import android.app.Dialog; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; Loading @@ -33,9 +34,11 @@ import android.content.res.Resources; import android.credentials.CredentialManager; import android.credentials.CredentialProviderInfo; import android.credentials.SetEnabledProvidersException; import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.OutcomeReceiver; import android.os.UserHandle; import android.provider.DeviceConfig; Loading @@ -59,10 +62,12 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.PackageMonitor; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.HashMap; Loading @@ -89,10 +94,12 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl private final Executor mExecutor; private final Map<String, SwitchPreference> mPrefs = new HashMap<>(); // key is package name private final List<ServiceInfo> mPendingServiceInfos = new ArrayList<>(); private final Handler mHandler = new Handler(); private @Nullable FragmentManager mFragmentManager = null; private @Nullable Delegate mDelegate = null; private @Nullable String mFlagOverrideForTest = null; private @Nullable PreferenceScreen mPreferenceScreen = null; public CredentialManagerPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); Loading @@ -103,6 +110,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl mExecutor = ContextCompat.getMainExecutor(mContext); mCredentialManager = getCredentialManager(context, preferenceKey.equals("credentials_test")); new SettingContentObserver(mHandler).register(context.getContentResolver()); } private @Nullable CredentialManager getCredentialManager(Context context, boolean isTest) { Loading Loading @@ -241,6 +249,25 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl update(); } private void update() { if (mCredentialManager == null) { return; } setAvailableServices( mCredentialManager.getCredentialProviderServices( getUser(), CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY), null); } private void updateFromExternal() { update(); if (mPreferenceScreen != null) { displayPreference(mPreferenceScreen); } } @VisibleForTesting void setAvailableServices( List<CredentialProviderInfo> availableServices, Loading Loading @@ -276,6 +303,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl // Since the UI is being cleared, clear any refs. mPrefs.clear(); mPreferenceScreen = screen; PreferenceGroup group = screen.findPreference(getPreferenceKey()); Context context = screen.getContext(); mPrefs.putAll(buildPreferenceList(context, group)); Loading Loading @@ -655,20 +683,6 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl } }; /** * Update the data in this UI. */ private void update() { if (mCredentialManager == null) { return; } setAvailableServices( mCredentialManager.getCredentialProviderServices( getUser(), CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY), null); } /** Dialog fragment parent class. */ private abstract static class CredentialManagerDialogFragment extends DialogFragment implements DialogInterface.OnClickListener { Loading Loading @@ -790,4 +804,28 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl getDialogHost().onDialogClick(which); } } /** Updates the list if setting content changes. */ private final class SettingContentObserver extends ContentObserver { private final Uri mAutofillService = Settings.Secure.getUriFor(Settings.Secure.AUTOFILL_SERVICE); private final Uri mCredentialService = Settings.Secure.getUriFor(Settings.Secure.CREDENTIAL_SERVICE); public SettingContentObserver(Handler handler) { super(handler); } public void register(ContentResolver contentResolver) { contentResolver.registerContentObserver(mAutofillService, false, this, getUser()); contentResolver.registerContentObserver(mCredentialService, false, this, getUser()); } @Override public void onChange(boolean selfChange, Uri uri) { updateFromExternal(); } } } Loading
src/com/android/settings/applications/credentials/CredentialManagerPreferenceController.java +52 −14 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.annotation.Nullable; import android.app.Activity; import android.app.Dialog; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; Loading @@ -33,9 +34,11 @@ import android.content.res.Resources; import android.credentials.CredentialManager; import android.credentials.CredentialProviderInfo; import android.credentials.SetEnabledProvidersException; import android.database.ContentObserver; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.OutcomeReceiver; import android.os.UserHandle; import android.provider.DeviceConfig; Loading @@ -59,10 +62,12 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.content.PackageMonitor; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.utils.ThreadUtils; import java.util.ArrayList; import java.util.HashMap; Loading @@ -89,10 +94,12 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl private final Executor mExecutor; private final Map<String, SwitchPreference> mPrefs = new HashMap<>(); // key is package name private final List<ServiceInfo> mPendingServiceInfos = new ArrayList<>(); private final Handler mHandler = new Handler(); private @Nullable FragmentManager mFragmentManager = null; private @Nullable Delegate mDelegate = null; private @Nullable String mFlagOverrideForTest = null; private @Nullable PreferenceScreen mPreferenceScreen = null; public CredentialManagerPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); Loading @@ -103,6 +110,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl mExecutor = ContextCompat.getMainExecutor(mContext); mCredentialManager = getCredentialManager(context, preferenceKey.equals("credentials_test")); new SettingContentObserver(mHandler).register(context.getContentResolver()); } private @Nullable CredentialManager getCredentialManager(Context context, boolean isTest) { Loading Loading @@ -241,6 +249,25 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl update(); } private void update() { if (mCredentialManager == null) { return; } setAvailableServices( mCredentialManager.getCredentialProviderServices( getUser(), CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY), null); } private void updateFromExternal() { update(); if (mPreferenceScreen != null) { displayPreference(mPreferenceScreen); } } @VisibleForTesting void setAvailableServices( List<CredentialProviderInfo> availableServices, Loading Loading @@ -276,6 +303,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl // Since the UI is being cleared, clear any refs. mPrefs.clear(); mPreferenceScreen = screen; PreferenceGroup group = screen.findPreference(getPreferenceKey()); Context context = screen.getContext(); mPrefs.putAll(buildPreferenceList(context, group)); Loading Loading @@ -655,20 +683,6 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl } }; /** * Update the data in this UI. */ private void update() { if (mCredentialManager == null) { return; } setAvailableServices( mCredentialManager.getCredentialProviderServices( getUser(), CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY), null); } /** Dialog fragment parent class. */ private abstract static class CredentialManagerDialogFragment extends DialogFragment implements DialogInterface.OnClickListener { Loading Loading @@ -790,4 +804,28 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl getDialogHost().onDialogClick(which); } } /** Updates the list if setting content changes. */ private final class SettingContentObserver extends ContentObserver { private final Uri mAutofillService = Settings.Secure.getUriFor(Settings.Secure.AUTOFILL_SERVICE); private final Uri mCredentialService = Settings.Secure.getUriFor(Settings.Secure.CREDENTIAL_SERVICE); public SettingContentObserver(Handler handler) { super(handler); } public void register(ContentResolver contentResolver) { contentResolver.registerContentObserver(mAutofillService, false, this, getUser()); contentResolver.registerContentObserver(mCredentialService, false, this, getUser()); } @Override public void onChange(boolean selfChange, Uri uri) { updateFromExternal(); } } }