Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6dbc9554 authored by Becca Hughes's avatar Becca Hughes Committed by Automerger Merge Worker
Browse files

DO NOT MERGE Live update cred man settings am: d8b74b5c

parents c95d1524 d8b74b5c
Loading
Loading
Loading
Loading
+37 −10
Original line number Original line Diff line number Diff line
@@ -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 {
+1 −1
Original line number Original line Diff line number Diff line
@@ -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;
    }
    }