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

Commit 25e8018d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix settings bug (pt 2)"

parents 526ababc 6bd41f20
Loading
Loading
Loading
Loading
+23 −11
Original line number Diff line number Diff line
@@ -58,8 +58,10 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.dashboard.DashboardFragment;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Executor;

@@ -76,6 +78,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
    private final @Nullable CredentialManager mCredentialManager;
    private final CancellationSignal mCancellationSignal = new CancellationSignal();
    private final Executor mExecutor;
    private final Map<String, SwitchPreference> mPrefs = new HashMap<>(); // key is package name

    private @Nullable DashboardFragment mParentFragment = null;

@@ -125,6 +128,13 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
            return;
        }

        List<ServiceInfo> services = new ArrayList<>();
        for (CredentialProviderInfo cpi :
                CredentialProviderInfo.getAvailableServices(mContext, getUser())) {
            services.add(cpi.getServiceInfo());
        }
        init(lifecycleOwner, services);

        mCredentialManager.listEnabledProviders(
                mCancellationSignal,
                mExecutor,
@@ -140,13 +150,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
                            }
                        }

                        List<ServiceInfo> services = new ArrayList<>();
                        for (CredentialProviderInfo cpi :
                                CredentialProviderInfo.getAvailableServices(mContext, getUser())) {
                            services.add(cpi.getServiceInfo());
                        }

                        init(lifecycleOwner, services, enabledPackages);
                        setEnabledPackageNames(enabledPackages);
                    }

                    @Override
@@ -157,15 +161,19 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
    }

    @VisibleForTesting
    void init(
            LifecycleOwner lifecycleOwner,
            List<ServiceInfo> availableServices,
            Set<String> enabledPackages) {
    void init(LifecycleOwner lifecycleOwner, List<ServiceInfo> availableServices) {
        mServices.clear();
        mServices.addAll(availableServices);
    }

    @VisibleForTesting
    void setEnabledPackageNames(Set<String> enabledPackages) {
        mEnabledPackageNames.clear();
        mEnabledPackageNames.addAll(enabledPackages);

        for (String packageName : mPrefs.keySet()) {
            mPrefs.get(packageName).setChecked(mEnabledPackageNames.contains(packageName));
        }
    }

    @Override
@@ -177,6 +185,9 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);

        // Since the UI is being cleared, clear any refs.
        mPrefs.clear();

        PreferenceGroup group = screen.findPreference(getPreferenceKey());
        Context context = screen.getContext();

@@ -254,6 +265,7 @@ public class CredentialManagerPreferenceController extends BasePreferenceControl
        final SwitchPreference pref = new SwitchPreference(prefContext);
        pref.setTitle(title);
        pref.setChecked(mEnabledPackageNames.contains(packageName));
        mPrefs.put(packageName, pref);

        if (icon != null) {
            pref.setIcon(Utils.getSafeIcon(icon));
+1 −2
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@@ -183,7 +182,7 @@ public class CredentialManagerPreferenceControllerTest {
        CredentialManagerPreferenceController controller =
                new CredentialManagerPreferenceController(
                        mContext, mCredentialsPreferenceCategory.getKey());
        controller.init(() -> mock(Lifecycle.class), availableServices, new HashSet<>());
        controller.init(() -> mock(Lifecycle.class), availableServices);
        return controller;
    }