DO NOT MERGE Live update cred man settings
This CL will enable live update of credential providers if any are added/removed. Test: atest Bug: 264420106 Change-Id: I14804bac17a4efe5eccd3c5824558eace18da186
This commit is contained in:
@@ -41,6 +41,8 @@ import android.os.UserHandle;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import com.android.settingslib.utils.ThreadUtils;
|
||||
import com.android.internal.content.PackageMonitor;
|
||||
import android.util.IconDrawableFactory;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -236,20 +238,11 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
|
||||
|
||||
@OnLifecycleEvent(ON_CREATE)
|
||||
void onCreate(LifecycleOwner lifecycleOwner) {
|
||||
if (mCredentialManager == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
setAvailableServices(
|
||||
lifecycleOwner,
|
||||
mCredentialManager.getCredentialProviderServices(
|
||||
getUser(), CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY),
|
||||
null);
|
||||
update();
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
void setAvailableServices(
|
||||
LifecycleOwner lifecycleOwner,
|
||||
List<CredentialProviderInfo> availableServices,
|
||||
String flagOverrideForTest) {
|
||||
mFlagOverrideForTest = flagOverrideForTest;
|
||||
@@ -642,6 +635,40 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
|
||||
void setActivityResult(int resultCode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Monitor coming and going credman services and calls {@link #update()} when necessary
|
||||
*/
|
||||
private final PackageMonitor mSettingsPackageMonitor = new PackageMonitor() {
|
||||
@Override
|
||||
public void onPackageAdded(String packageName, int uid) {
|
||||
ThreadUtils.postOnMainThread(() -> update());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPackageModified(String packageName) {
|
||||
ThreadUtils.postOnMainThread(() -> update());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPackageRemoved(String packageName, int uid) {
|
||||
ThreadUtils.postOnMainThread(() -> update());
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 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 {
|
||||
|
@@ -484,7 +484,7 @@ public class CredentialManagerPreferenceControllerTest {
|
||||
CredentialManagerPreferenceController controller =
|
||||
new CredentialManagerPreferenceController(
|
||||
mContext, mCredentialsPreferenceCategory.getKey());
|
||||
controller.setAvailableServices(() -> mock(Lifecycle.class), availableServices, addServiceOverride);
|
||||
controller.setAvailableServices(availableServices, addServiceOverride);
|
||||
controller.setDelegate(mDelegate);
|
||||
return controller;
|
||||
}
|
||||
|
Reference in New Issue
Block a user