Loading res/xml/storage_dashboard_fragment.xml +2 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,8 @@ android:icon="@drawable/ic_storage" android:order="1" settings:allowDividerAbove="true" settings:allowDividerBelow="true"/> settings:allowDividerBelow="true" settings:controller="com.android.settings.deviceinfo.storage.AutomaticStorageManagementSwitchPreferenceController" /> <com.android.settings.deviceinfo.StorageItemPreference android:key="pref_photos_videos" android:title="@string/storage_photos_videos" Loading src/com/android/settings/deviceinfo/StorageDashboardFragment.java +7 −5 Original line number Diff line number Diff line Loading @@ -93,6 +93,13 @@ public class StorageDashboardFragment extends DashboardFragment initializeOptionsMenu(activity); } @Override public void onAttach(Context context) { super.onAttach(context); use(AutomaticStorageManagementSwitchPreferenceController.class).setFragmentManager( getFragmentManager()); } @VisibleForTesting void initializeOptionsMenu(Activity activity) { mOptionMenuController = new PrivateVolumeOptionMenuController( Loading Loading @@ -189,11 +196,6 @@ public class StorageDashboardFragment extends DashboardFragment mSecondaryUsers = SecondaryUserController.getSecondaryUserControllers(context, userManager); controllers.addAll(mSecondaryUsers); final AutomaticStorageManagementSwitchPreferenceController asmController = new AutomaticStorageManagementSwitchPreferenceController( context, mMetricsFeatureProvider, getFragmentManager()); getLifecycle().addObserver(asmController); controllers.add(asmController); return controllers; } Loading src/com/android/settings/deviceinfo/storage/AutomaticStorageManagementSwitchPreferenceController.java +22 −24 Original line number Diff line number Diff line Loading @@ -21,54 +21,52 @@ import android.app.FragmentManager; import android.content.Context; import android.os.SystemProperties; import android.provider.Settings; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.BasePreferenceController; import com.android.settings.deletionhelper.ActivationWarningFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.MasterSwitchController; import com.android.settings.widget.MasterSwitchPreference; import com.android.settings.widget.SwitchWidgetController; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnResume; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; public class AutomaticStorageManagementSwitchPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnResume, SwitchWidgetController.OnSwitchChangeListener { private static final String KEY_TOGGLE_ASM = "toggle_asm"; BasePreferenceController implements LifecycleObserver, OnResume, SwitchWidgetController.OnSwitchChangeListener { @VisibleForTesting static final String STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY = "ro.storage_manager.enabled"; private final MetricsFeatureProvider mMetricsFeatureProvider; private MasterSwitchPreference mSwitch; private MasterSwitchController mSwitchController; private final MetricsFeatureProvider mMetricsFeatureProvider; private final FragmentManager mFragmentManager; private FragmentManager mFragmentManager; public AutomaticStorageManagementSwitchPreferenceController(Context context, String key) { super(context, key); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); } public AutomaticStorageManagementSwitchPreferenceController(Context context, MetricsFeatureProvider metricsFeatureProvider, FragmentManager fragmentManager) { super(context); mMetricsFeatureProvider = metricsFeatureProvider; public AutomaticStorageManagementSwitchPreferenceController setFragmentManager( FragmentManager fragmentManager) { mFragmentManager = fragmentManager; return this; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mSwitch = (MasterSwitchPreference) screen.findPreference(KEY_TOGGLE_ASM); } @Override public boolean isAvailable() { return !ActivityManager.isLowRamDeviceStatic(); mSwitch = (MasterSwitchPreference) screen.findPreference(getPreferenceKey()); } @Override public String getPreferenceKey() { return KEY_TOGGLE_ASM; public int getAvailabilityStatus() { return !ActivityManager.isLowRamDeviceStatic() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override Loading Loading @@ -103,7 +101,7 @@ public class AutomaticStorageManagementSwitchPreferenceController extends != 0; // Show warning if it is disabled by default and turning it on or if it was disabled by // policy and we're turning it on. if ((isChecked && (!storageManagerEnabledByDefault || storageManagerDisabledByPolicy))) { if (isChecked && (!storageManagerEnabledByDefault || storageManagerDisabledByPolicy)) { ActivationWarningFragment fragment = ActivationWarningFragment.newInstance(); fragment.show(mFragmentManager, ActivationWarningFragment.TAG); } Loading tests/robotests/src/com/android/settings/deviceinfo/storage/AutomaticStorageManagementSwitchPreferenceControllerTest.java +11 −7 Original line number Diff line number Diff line Loading @@ -36,12 +36,12 @@ import androidx.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.os.RoSystemProperties; import com.android.settings.core.BasePreferenceController; import com.android.settings.deletionhelper.ActivationWarningFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.widget.MasterSwitchPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.junit.Before; import org.junit.Test; Loading Loading @@ -72,22 +72,25 @@ public class AutomaticStorageManagementSwitchPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application.getApplicationContext(); final FeatureFactory factory = FeatureFactory.getFactory(mContext); final MetricsFeatureProvider metricsFeature = factory.getMetricsFeatureProvider(); mController = new AutomaticStorageManagementSwitchPreferenceController( mContext, metricsFeature, mFragmentManager); mController = new AutomaticStorageManagementSwitchPreferenceController(mContext, "testkey"); mController.setFragmentManager(mFragmentManager); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); } @Test public void isAvailable_shouldReturnTrue_forHighRamDevice() { assertThat(mController.isAvailable()).isTrue(); assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.AVAILABLE); } @Test public void isAvailable_shouldAlwaysReturnFalse_forLowRamDevice() { ReflectionHelpers.setStaticField(RoSystemProperties.class, "CONFIG_LOW_RAM", true); assertThat(mController.isAvailable()).isFalse(); assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.UNSUPPORTED_ON_DEVICE); ReflectionHelpers.setStaticField(RoSystemProperties.class, "CONFIG_LOW_RAM", false); } Loading Loading @@ -117,8 +120,10 @@ public class AutomaticStorageManagementSwitchPreferenceControllerTest { // the instance variables. final FakeFeatureFactory factory = FakeFeatureFactory.setupForTest(); final AutomaticStorageManagementSwitchPreferenceController controller = new AutomaticStorageManagementSwitchPreferenceController( mMockContext, factory.metricsFeatureProvider, mFragmentManager); new AutomaticStorageManagementSwitchPreferenceController(mMockContext, "testkey"); ReflectionHelpers.setField(controller, "mMetricsFeatureProvider", factory.metricsFeatureProvider); controller.setFragmentManager(mFragmentManager); controller.onSwitchToggled(true); Loading Loading @@ -158,7 +163,6 @@ public class AutomaticStorageManagementSwitchPreferenceControllerTest { verify(transaction, never()).add(any(), eq(ActivationWarningFragment.TAG)); } @Test public void togglingOnShouldNotTriggerWarningFragmentIfEnabledByDefault() { final FragmentTransaction transaction = mock(FragmentTransaction.class); Loading Loading
res/xml/storage_dashboard_fragment.xml +2 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,8 @@ android:icon="@drawable/ic_storage" android:order="1" settings:allowDividerAbove="true" settings:allowDividerBelow="true"/> settings:allowDividerBelow="true" settings:controller="com.android.settings.deviceinfo.storage.AutomaticStorageManagementSwitchPreferenceController" /> <com.android.settings.deviceinfo.StorageItemPreference android:key="pref_photos_videos" android:title="@string/storage_photos_videos" Loading
src/com/android/settings/deviceinfo/StorageDashboardFragment.java +7 −5 Original line number Diff line number Diff line Loading @@ -93,6 +93,13 @@ public class StorageDashboardFragment extends DashboardFragment initializeOptionsMenu(activity); } @Override public void onAttach(Context context) { super.onAttach(context); use(AutomaticStorageManagementSwitchPreferenceController.class).setFragmentManager( getFragmentManager()); } @VisibleForTesting void initializeOptionsMenu(Activity activity) { mOptionMenuController = new PrivateVolumeOptionMenuController( Loading Loading @@ -189,11 +196,6 @@ public class StorageDashboardFragment extends DashboardFragment mSecondaryUsers = SecondaryUserController.getSecondaryUserControllers(context, userManager); controllers.addAll(mSecondaryUsers); final AutomaticStorageManagementSwitchPreferenceController asmController = new AutomaticStorageManagementSwitchPreferenceController( context, mMetricsFeatureProvider, getFragmentManager()); getLifecycle().addObserver(asmController); controllers.add(asmController); return controllers; } Loading
src/com/android/settings/deviceinfo/storage/AutomaticStorageManagementSwitchPreferenceController.java +22 −24 Original line number Diff line number Diff line Loading @@ -21,54 +21,52 @@ import android.app.FragmentManager; import android.content.Context; import android.os.SystemProperties; import android.provider.Settings; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.core.BasePreferenceController; import com.android.settings.deletionhelper.ActivationWarningFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.widget.MasterSwitchController; import com.android.settings.widget.MasterSwitchPreference; import com.android.settings.widget.SwitchWidgetController; import com.android.settingslib.Utils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnResume; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceScreen; public class AutomaticStorageManagementSwitchPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnResume, SwitchWidgetController.OnSwitchChangeListener { private static final String KEY_TOGGLE_ASM = "toggle_asm"; BasePreferenceController implements LifecycleObserver, OnResume, SwitchWidgetController.OnSwitchChangeListener { @VisibleForTesting static final String STORAGE_MANAGER_ENABLED_BY_DEFAULT_PROPERTY = "ro.storage_manager.enabled"; private final MetricsFeatureProvider mMetricsFeatureProvider; private MasterSwitchPreference mSwitch; private MasterSwitchController mSwitchController; private final MetricsFeatureProvider mMetricsFeatureProvider; private final FragmentManager mFragmentManager; private FragmentManager mFragmentManager; public AutomaticStorageManagementSwitchPreferenceController(Context context, String key) { super(context, key); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); } public AutomaticStorageManagementSwitchPreferenceController(Context context, MetricsFeatureProvider metricsFeatureProvider, FragmentManager fragmentManager) { super(context); mMetricsFeatureProvider = metricsFeatureProvider; public AutomaticStorageManagementSwitchPreferenceController setFragmentManager( FragmentManager fragmentManager) { mFragmentManager = fragmentManager; return this; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mSwitch = (MasterSwitchPreference) screen.findPreference(KEY_TOGGLE_ASM); } @Override public boolean isAvailable() { return !ActivityManager.isLowRamDeviceStatic(); mSwitch = (MasterSwitchPreference) screen.findPreference(getPreferenceKey()); } @Override public String getPreferenceKey() { return KEY_TOGGLE_ASM; public int getAvailabilityStatus() { return !ActivityManager.isLowRamDeviceStatic() ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } @Override Loading Loading @@ -103,7 +101,7 @@ public class AutomaticStorageManagementSwitchPreferenceController extends != 0; // Show warning if it is disabled by default and turning it on or if it was disabled by // policy and we're turning it on. if ((isChecked && (!storageManagerEnabledByDefault || storageManagerDisabledByPolicy))) { if (isChecked && (!storageManagerEnabledByDefault || storageManagerDisabledByPolicy)) { ActivationWarningFragment fragment = ActivationWarningFragment.newInstance(); fragment.show(mFragmentManager, ActivationWarningFragment.TAG); } Loading
tests/robotests/src/com/android/settings/deviceinfo/storage/AutomaticStorageManagementSwitchPreferenceControllerTest.java +11 −7 Original line number Diff line number Diff line Loading @@ -36,12 +36,12 @@ import androidx.preference.PreferenceScreen; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.os.RoSystemProperties; import com.android.settings.core.BasePreferenceController; import com.android.settings.deletionhelper.ActivationWarningFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.widget.MasterSwitchPreference; import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; import org.junit.Before; import org.junit.Test; Loading Loading @@ -72,22 +72,25 @@ public class AutomaticStorageManagementSwitchPreferenceControllerTest { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application.getApplicationContext(); final FeatureFactory factory = FeatureFactory.getFactory(mContext); final MetricsFeatureProvider metricsFeature = factory.getMetricsFeatureProvider(); mController = new AutomaticStorageManagementSwitchPreferenceController( mContext, metricsFeature, mFragmentManager); mController = new AutomaticStorageManagementSwitchPreferenceController(mContext, "testkey"); mController.setFragmentManager(mFragmentManager); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference); } @Test public void isAvailable_shouldReturnTrue_forHighRamDevice() { assertThat(mController.isAvailable()).isTrue(); assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.AVAILABLE); } @Test public void isAvailable_shouldAlwaysReturnFalse_forLowRamDevice() { ReflectionHelpers.setStaticField(RoSystemProperties.class, "CONFIG_LOW_RAM", true); assertThat(mController.isAvailable()).isFalse(); assertThat(mController.getAvailabilityStatus()).isEqualTo( BasePreferenceController.UNSUPPORTED_ON_DEVICE); ReflectionHelpers.setStaticField(RoSystemProperties.class, "CONFIG_LOW_RAM", false); } Loading Loading @@ -117,8 +120,10 @@ public class AutomaticStorageManagementSwitchPreferenceControllerTest { // the instance variables. final FakeFeatureFactory factory = FakeFeatureFactory.setupForTest(); final AutomaticStorageManagementSwitchPreferenceController controller = new AutomaticStorageManagementSwitchPreferenceController( mMockContext, factory.metricsFeatureProvider, mFragmentManager); new AutomaticStorageManagementSwitchPreferenceController(mMockContext, "testkey"); ReflectionHelpers.setField(controller, "mMetricsFeatureProvider", factory.metricsFeatureProvider); controller.setFragmentManager(mFragmentManager); controller.onSwitchToggled(true); Loading Loading @@ -158,7 +163,6 @@ public class AutomaticStorageManagementSwitchPreferenceControllerTest { verify(transaction, never()).add(any(), eq(ActivationWarningFragment.TAG)); } @Test public void togglingOnShouldNotTriggerWarningFragmentIfEnabledByDefault() { final FragmentTransaction transaction = mock(FragmentTransaction.class); Loading