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

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

Merge "Do not block UI when this page didn't have slice"

parents 202b84b8 d49de61f
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
    private final Map<Class, List<AbstractPreferenceController>> mPreferenceControllers =
            new ArrayMap<>();
    private final Set<String> mDashboardTilePrefKeys = new ArraySet<>();
    private final List<AbstractPreferenceController> mControllers = new ArrayList<>();

    private DashboardFeatureProvider mDashboardFeatureProvider;
    private DashboardTilePlaceholderPreferenceController mPlaceholderPreferenceController;
@@ -79,7 +80,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
                R.array.config_suppress_injected_tile_keys));
        mDashboardFeatureProvider = FeatureFactory.getFactory(context).
                getDashboardFeatureProvider(context);
        final List<AbstractPreferenceController> controllers = new ArrayList<>();
        // Load preference controllers from code
        final List<AbstractPreferenceController> controllersFromCode =
                createPreferenceControllers(context);
@@ -93,9 +93,9 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment

        // Add unique controllers to list.
        if (controllersFromCode != null) {
            controllers.addAll(controllersFromCode);
            mControllers.addAll(controllersFromCode);
        }
        controllers.addAll(uniqueControllerFromXml);
        mControllers.addAll(uniqueControllerFromXml);

        // And wire up with lifecycle.
        final Lifecycle lifecycle = getSettingsLifecycle();
@@ -107,12 +107,10 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment

        mPlaceholderPreferenceController =
                new DashboardTilePlaceholderPreferenceController(context);
        controllers.add(mPlaceholderPreferenceController);
        for (AbstractPreferenceController controller : controllers) {
        mControllers.add(mPlaceholderPreferenceController);
        for (AbstractPreferenceController controller : mControllers) {
            addPreferenceController(controller);
        }

        checkUiBlocker(controllers);
    }

    @VisibleForTesting
@@ -122,8 +120,10 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
                .stream()
                .filter(controller -> controller instanceof BasePreferenceController.UiBlocker)
                .forEach(controller -> {
                    if (controller.isAvailable()) {
                        ((BasePreferenceController) controller).setUiBlockListener(this);
                        keys.add(controller.getPreferenceKey());
                    }
                });

        if (!keys.isEmpty()) {
@@ -157,6 +157,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment

    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        checkUiBlocker(mControllers);
        refreshAllPreferences(getLogTag());
    }

+17 −2
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.when;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.net.Uri;
import android.os.Bundle;

import androidx.preference.Preference;
@@ -240,16 +241,30 @@ public class DashboardFragmentTest {
    }

    @Test
    public void checkUiBlocker_hasUiBlocker_controllerNotNull() {
    public void checkUiBlocker_hasUiBlockerAndControllerIsAvailable_controllerNotNull() {
        final BlockingSlicePrefController controller =
                new BlockingSlicePrefController(mContext, "pref_key");
        controller.setSliceUri(Uri.parse("testUri"));
        mTestFragment.mBlockerController = null;
        mControllers.add(new TestPreferenceController(mContext));
        mControllers.add(new BlockingSlicePrefController(mContext, "pref_key"));
        mControllers.add(controller);

        mTestFragment.checkUiBlocker(mControllers);

        assertThat(mTestFragment.mBlockerController).isNotNull();
    }

    @Test
    public void checkUiBlocker_hasUiBlockerAndControllerIsNotAvailable_controllerIsNull() {
        mTestFragment.mBlockerController = null;
        mControllers.add(new TestPreferenceController(mContext));
        mControllers.add(new BlockingSlicePrefController(mContext, "pref_key"));

        mTestFragment.checkUiBlocker(mControllers);

        assertThat(mTestFragment.mBlockerController).isNull();
    }

    public static class TestPreferenceController extends AbstractPreferenceController
            implements PreferenceControllerMixin {