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