Merge "Do not block UI when this page didn't have slice"
This commit is contained in:
committed by
Android (Google) Code Review
commit
818ad60218
@@ -63,6 +63,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
|||||||
private final Map<Class, List<AbstractPreferenceController>> mPreferenceControllers =
|
private final Map<Class, List<AbstractPreferenceController>> mPreferenceControllers =
|
||||||
new ArrayMap<>();
|
new ArrayMap<>();
|
||||||
private final Set<String> mDashboardTilePrefKeys = new ArraySet<>();
|
private final Set<String> mDashboardTilePrefKeys = new ArraySet<>();
|
||||||
|
private final List<AbstractPreferenceController> mControllers = new ArrayList<>();
|
||||||
|
|
||||||
private DashboardFeatureProvider mDashboardFeatureProvider;
|
private DashboardFeatureProvider mDashboardFeatureProvider;
|
||||||
private DashboardTilePlaceholderPreferenceController mPlaceholderPreferenceController;
|
private DashboardTilePlaceholderPreferenceController mPlaceholderPreferenceController;
|
||||||
@@ -79,7 +80,6 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
|||||||
R.array.config_suppress_injected_tile_keys));
|
R.array.config_suppress_injected_tile_keys));
|
||||||
mDashboardFeatureProvider = FeatureFactory.getFactory(context).
|
mDashboardFeatureProvider = FeatureFactory.getFactory(context).
|
||||||
getDashboardFeatureProvider(context);
|
getDashboardFeatureProvider(context);
|
||||||
final List<AbstractPreferenceController> controllers = new ArrayList<>();
|
|
||||||
// Load preference controllers from code
|
// Load preference controllers from code
|
||||||
final List<AbstractPreferenceController> controllersFromCode =
|
final List<AbstractPreferenceController> controllersFromCode =
|
||||||
createPreferenceControllers(context);
|
createPreferenceControllers(context);
|
||||||
@@ -93,9 +93,9 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
// Add unique controllers to list.
|
// Add unique controllers to list.
|
||||||
if (controllersFromCode != null) {
|
if (controllersFromCode != null) {
|
||||||
controllers.addAll(controllersFromCode);
|
mControllers.addAll(controllersFromCode);
|
||||||
}
|
}
|
||||||
controllers.addAll(uniqueControllerFromXml);
|
mControllers.addAll(uniqueControllerFromXml);
|
||||||
|
|
||||||
// And wire up with lifecycle.
|
// And wire up with lifecycle.
|
||||||
final Lifecycle lifecycle = getSettingsLifecycle();
|
final Lifecycle lifecycle = getSettingsLifecycle();
|
||||||
@@ -107,12 +107,10 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
mPlaceholderPreferenceController =
|
mPlaceholderPreferenceController =
|
||||||
new DashboardTilePlaceholderPreferenceController(context);
|
new DashboardTilePlaceholderPreferenceController(context);
|
||||||
controllers.add(mPlaceholderPreferenceController);
|
mControllers.add(mPlaceholderPreferenceController);
|
||||||
for (AbstractPreferenceController controller : controllers) {
|
for (AbstractPreferenceController controller : mControllers) {
|
||||||
addPreferenceController(controller);
|
addPreferenceController(controller);
|
||||||
}
|
}
|
||||||
|
|
||||||
checkUiBlocker(controllers);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -122,8 +120,10 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
|||||||
.stream()
|
.stream()
|
||||||
.filter(controller -> controller instanceof BasePreferenceController.UiBlocker)
|
.filter(controller -> controller instanceof BasePreferenceController.UiBlocker)
|
||||||
.forEach(controller -> {
|
.forEach(controller -> {
|
||||||
((BasePreferenceController) controller).setUiBlockListener(this);
|
if (controller.isAvailable()) {
|
||||||
keys.add(controller.getPreferenceKey());
|
((BasePreferenceController) controller).setUiBlockListener(this);
|
||||||
|
keys.add(controller.getPreferenceKey());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!keys.isEmpty()) {
|
if (!keys.isEmpty()) {
|
||||||
@@ -157,6 +157,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||||
|
checkUiBlocker(mControllers);
|
||||||
refreshAllPreferences(getLogTag());
|
refreshAllPreferences(getLogTag());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,6 +31,7 @@ import static org.mockito.Mockito.when;
|
|||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
||||||
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
@@ -240,14 +241,28 @@ public class DashboardFragmentTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@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(controller);
|
||||||
|
|
||||||
|
mTestFragment.checkUiBlocker(mControllers);
|
||||||
|
|
||||||
|
assertThat(mTestFragment.mBlockerController).isNotNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void checkUiBlocker_hasUiBlockerAndControllerIsNotAvailable_controllerIsNull() {
|
||||||
mTestFragment.mBlockerController = null;
|
mTestFragment.mBlockerController = null;
|
||||||
mControllers.add(new TestPreferenceController(mContext));
|
mControllers.add(new TestPreferenceController(mContext));
|
||||||
mControllers.add(new BlockingSlicePrefController(mContext, "pref_key"));
|
mControllers.add(new BlockingSlicePrefController(mContext, "pref_key"));
|
||||||
|
|
||||||
mTestFragment.checkUiBlocker(mControllers);
|
mTestFragment.checkUiBlocker(mControllers);
|
||||||
|
|
||||||
assertThat(mTestFragment.mBlockerController).isNotNull();
|
assertThat(mTestFragment.mBlockerController).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class TestPreferenceController extends AbstractPreferenceController
|
public static class TestPreferenceController extends AbstractPreferenceController
|
||||||
|
Reference in New Issue
Block a user