Loading src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +10 −3 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.dashboard.profileselector.ProfileSelectDialog; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.MasterSwitchPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.drawer.ActivityTile; import com.android.settingslib.drawer.DashboardCategory; Loading Loading @@ -303,7 +304,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { setSwitchEnabled(pref, false); ThreadUtils.postOnBackgroundThread(() -> { final Map<String, IContentProvider> providerMap = new ArrayMap<>(); final Bundle result = TileUtils.putBooleanToUri(mContext, uri, providerMap, final Bundle result = TileUtils.putBooleanToUriAndGetResult(mContext, uri, providerMap, EXTRA_SWITCH_CHECKED_STATE, checked); ThreadUtils.postOnMainThread(() -> { Loading Loading @@ -335,14 +336,20 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } private void setSwitchChecked(Preference pref, boolean checked) { if (pref instanceof SwitchPreference) { if (pref instanceof MasterSwitchPreference) { ((MasterSwitchPreference) pref).setChecked(checked); } else if (pref instanceof SwitchPreference) { ((SwitchPreference) pref).setChecked(checked); } } private void setSwitchEnabled(Preference pref, boolean enabled) { if (pref instanceof MasterSwitchPreference) { ((MasterSwitchPreference) pref).setSwitchEnabled(enabled); } else { pref.setEnabled(enabled); } } @VisibleForTesting void bindIcon(Preference preference, Tile tile, boolean forceRoundedIcon) { Loading src/com/android/settings/dashboard/DashboardFragment.java +4 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerListHelper; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.MasterSwitchPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -453,6 +454,8 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment Preference createPreference(Tile tile) { return tile instanceof ProviderTile ? new SwitchPreference(getPrefContext()) : tile.hasSwitch() ? new MasterSwitchPreference(getPrefContext()) : new Preference(getPrefContext()); } Loading src/com/android/settings/widget/MasterSwitchPreference.java +9 −3 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ public class MasterSwitchPreference extends TwoTargetPreference { private Switch mSwitch; private boolean mChecked; private boolean mCheckedSet; private boolean mEnableSwitch = true; public MasterSwitchPreference(Context context, AttributeSet attrs, Loading Loading @@ -94,11 +95,16 @@ public class MasterSwitchPreference extends TwoTargetPreference { } public void setChecked(boolean checked) { // Always set checked the first time; don't assume the field's default of false. final boolean changed = mChecked != checked; if (changed || !mCheckedSet) { mChecked = checked; mCheckedSet = true; if (mSwitch != null) { mSwitch.setChecked(checked); } } } public void setSwitchEnabled(boolean enabled) { mEnableSwitch = enabled; Loading tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +10 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.slices.BlockingSlicePrefController; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.widget.MasterSwitchPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; Loading Loading @@ -323,6 +324,15 @@ public class DashboardFragmentTest { assertThat(pref).isInstanceOf(SwitchPreference.class); } @Test public void createPreference_isActivityTileAndHasSwitch_returnMasterSwitchPreference() { mActivityTile.getMetaData().putString(META_DATA_PREFERENCE_SWITCH_URI, "uri"); final Preference pref = mTestFragment.createPreference(mActivityTile); assertThat(pref).isInstanceOf(MasterSwitchPreference.class); } private static class TestPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { Loading tests/robotests/src/com/android/settings/testutils/shadow/ShadowTileUtils.java +1 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,7 @@ public class ShadowTileUtils { } @Implementation public static Bundle putBooleanToUri(Context context, Uri uri, public static Bundle putBooleanToUriAndGetResult(Context context, Uri uri, Map<String, IContentProvider> providerMap, String key, boolean value) { sChecked = value; return sResult; Loading Loading
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +10 −3 Original line number Diff line number Diff line Loading @@ -60,6 +60,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.dashboard.profileselector.ProfileSelectDialog; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.MasterSwitchPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.drawer.ActivityTile; import com.android.settingslib.drawer.DashboardCategory; Loading Loading @@ -303,7 +304,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { setSwitchEnabled(pref, false); ThreadUtils.postOnBackgroundThread(() -> { final Map<String, IContentProvider> providerMap = new ArrayMap<>(); final Bundle result = TileUtils.putBooleanToUri(mContext, uri, providerMap, final Bundle result = TileUtils.putBooleanToUriAndGetResult(mContext, uri, providerMap, EXTRA_SWITCH_CHECKED_STATE, checked); ThreadUtils.postOnMainThread(() -> { Loading Loading @@ -335,14 +336,20 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { } private void setSwitchChecked(Preference pref, boolean checked) { if (pref instanceof SwitchPreference) { if (pref instanceof MasterSwitchPreference) { ((MasterSwitchPreference) pref).setChecked(checked); } else if (pref instanceof SwitchPreference) { ((SwitchPreference) pref).setChecked(checked); } } private void setSwitchEnabled(Preference pref, boolean enabled) { if (pref instanceof MasterSwitchPreference) { ((MasterSwitchPreference) pref).setSwitchEnabled(enabled); } else { pref.setEnabled(enabled); } } @VisibleForTesting void bindIcon(Preference preference, Tile tile, boolean forceRoundedIcon) { Loading
src/com/android/settings/dashboard/DashboardFragment.java +4 −1 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerListHelper; import com.android.settings.core.SettingsBaseActivity; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.MasterSwitchPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; Loading Loading @@ -453,6 +454,8 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment Preference createPreference(Tile tile) { return tile instanceof ProviderTile ? new SwitchPreference(getPrefContext()) : tile.hasSwitch() ? new MasterSwitchPreference(getPrefContext()) : new Preference(getPrefContext()); } Loading
src/com/android/settings/widget/MasterSwitchPreference.java +9 −3 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ public class MasterSwitchPreference extends TwoTargetPreference { private Switch mSwitch; private boolean mChecked; private boolean mCheckedSet; private boolean mEnableSwitch = true; public MasterSwitchPreference(Context context, AttributeSet attrs, Loading Loading @@ -94,11 +95,16 @@ public class MasterSwitchPreference extends TwoTargetPreference { } public void setChecked(boolean checked) { // Always set checked the first time; don't assume the field's default of false. final boolean changed = mChecked != checked; if (changed || !mCheckedSet) { mChecked = checked; mCheckedSet = true; if (mSwitch != null) { mSwitch.setChecked(checked); } } } public void setSwitchEnabled(boolean enabled) { mEnableSwitch = enabled; Loading
tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +10 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.slices.BlockingSlicePrefController; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.widget.MasterSwitchPreference; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.instrumentation.VisibilityLoggerMixin; Loading Loading @@ -323,6 +324,15 @@ public class DashboardFragmentTest { assertThat(pref).isInstanceOf(SwitchPreference.class); } @Test public void createPreference_isActivityTileAndHasSwitch_returnMasterSwitchPreference() { mActivityTile.getMetaData().putString(META_DATA_PREFERENCE_SWITCH_URI, "uri"); final Preference pref = mTestFragment.createPreference(mActivityTile); assertThat(pref).isInstanceOf(MasterSwitchPreference.class); } private static class TestPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { Loading
tests/robotests/src/com/android/settings/testutils/shadow/ShadowTileUtils.java +1 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,7 @@ public class ShadowTileUtils { } @Implementation public static Bundle putBooleanToUri(Context context, Uri uri, public static Bundle putBooleanToUriAndGetResult(Context context, Uri uri, Map<String, IContentProvider> providerMap, String key, boolean value) { sChecked = value; return sResult; Loading