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.DeviceConfig;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
|
import com.android.internal.content.PackageMonitor;
|
||||||
import android.util.IconDrawableFactory;
|
import android.util.IconDrawableFactory;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -236,20 +238,11 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
|
|||||||
|
|
||||||
@OnLifecycleEvent(ON_CREATE)
|
@OnLifecycleEvent(ON_CREATE)
|
||||||
void onCreate(LifecycleOwner lifecycleOwner) {
|
void onCreate(LifecycleOwner lifecycleOwner) {
|
||||||
if (mCredentialManager == null) {
|
update();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
setAvailableServices(
|
|
||||||
lifecycleOwner,
|
|
||||||
mCredentialManager.getCredentialProviderServices(
|
|
||||||
getUser(), CredentialManager.PROVIDER_FILTER_USER_PROVIDERS_ONLY),
|
|
||||||
null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void setAvailableServices(
|
void setAvailableServices(
|
||||||
LifecycleOwner lifecycleOwner,
|
|
||||||
List<CredentialProviderInfo> availableServices,
|
List<CredentialProviderInfo> availableServices,
|
||||||
String flagOverrideForTest) {
|
String flagOverrideForTest) {
|
||||||
mFlagOverrideForTest = flagOverrideForTest;
|
mFlagOverrideForTest = flagOverrideForTest;
|
||||||
@@ -642,6 +635,40 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
|
|||||||
void setActivityResult(int resultCode);
|
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. */
|
/** Dialog fragment parent class. */
|
||||||
private abstract static class CredentialManagerDialogFragment extends DialogFragment
|
private abstract static class CredentialManagerDialogFragment extends DialogFragment
|
||||||
implements DialogInterface.OnClickListener {
|
implements DialogInterface.OnClickListener {
|
||||||
|
@@ -484,7 +484,7 @@ public class CredentialManagerPreferenceControllerTest {
|
|||||||
CredentialManagerPreferenceController controller =
|
CredentialManagerPreferenceController controller =
|
||||||
new CredentialManagerPreferenceController(
|
new CredentialManagerPreferenceController(
|
||||||
mContext, mCredentialsPreferenceCategory.getKey());
|
mContext, mCredentialsPreferenceCategory.getKey());
|
||||||
controller.setAvailableServices(() -> mock(Lifecycle.class), availableServices, addServiceOverride);
|
controller.setAvailableServices(availableServices, addServiceOverride);
|
||||||
controller.setDelegate(mDelegate);
|
controller.setDelegate(mDelegate);
|
||||||
return controller;
|
return controller;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user