Merge "Cleanup Storage Settings" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-04-15 02:28:35 +00:00
committed by Android (Google) Code Review
40 changed files with 143 additions and 2997 deletions

View File

@@ -1,80 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.deviceinfo;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.Activity;
import android.content.Intent;
import android.os.storage.VolumeInfo;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class StorageSettingsTest {
@Mock
private StorageManagerVolumeProvider mStorageManagerVolumeProvider;
@Mock
private Activity mActivity;
private List<VolumeInfo> mVolumes;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mVolumes = new ArrayList<>();
mVolumes.add(mock(VolumeInfo.class, RETURNS_DEEP_STUBS));
when(mStorageManagerVolumeProvider.getVolumes()).thenReturn(mVolumes);
}
@Test
public void handlePublicVolumeClick_startsANonNullActivityWhenVolumeHasNoBrowse() {
VolumeInfo volumeInfo = mock(VolumeInfo.class, RETURNS_DEEP_STUBS);
when(volumeInfo.isMountedReadable()).thenReturn(true);
StorageSettings.handlePublicVolumeClick(mActivity, volumeInfo);
verify(mActivity, never()).startActivity(null);
verify(mActivity).startActivity(any(Intent.class));
}
@Test
public void handleStubVolumeClick_startsANonNullActivityWhenVolumeHasNoBrowse() {
VolumeInfo volumeInfo = mock(VolumeInfo.class, RETURNS_DEEP_STUBS);
when(volumeInfo.isMountedReadable()).thenReturn(true);
StorageSettings.handleStubVolumeClick(mActivity, volumeInfo);
verify(mActivity, never()).startActivity(null);
verify(mActivity).startActivity(any(Intent.class));
}
}

View File

@@ -48,7 +48,6 @@ import com.android.settings.SettingsActivity;
import com.android.settings.SubSettings;
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
import com.android.settings.deviceinfo.PrivateVolumeSettings;
import com.android.settings.deviceinfo.StorageItemPreference;
import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.applications.StorageStatsSource;
@@ -329,7 +328,7 @@ public class StorageItemPreferenceControllerTest {
assertThat(mController.handlePreferenceTreeClick(mPreference)).isTrue();
verify(mFragment.getFragmentManager().beginTransaction())
.add(nullable(PrivateVolumeSettings.SystemInfoFragment.class), nullable(String.class));
.add(nullable(StorageUtils.SystemInfoFragment.class), nullable(String.class));
}
@Test

View File

@@ -1,164 +0,0 @@
/*
* Copyright (C) 2017 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.deviceinfo.storage;
import static com.android.settings.TestUtils.GIGABYTE;
import static com.android.settings.TestUtils.KILOBYTE;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.Activity;
import android.content.Context;
import android.os.storage.VolumeInfo;
import android.text.format.Formatter;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import androidx.preference.PreferenceScreen;
import androidx.preference.PreferenceViewHolder;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.shadow.ShadowPrivateStorageInfo;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.deviceinfo.PrivateStorageInfo;
import com.android.settingslib.deviceinfo.StorageVolumeProvider;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.io.File;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowPrivateStorageInfo.class)
public class StorageSummaryDonutPreferenceControllerTest {
private Context mContext;
private StorageSummaryDonutPreferenceController mController;
private StorageSummaryDonutPreference mPreference;
private PreferenceViewHolder mHolder;
private FakeFeatureFactory mFakeFeatureFactory;
private MetricsFeatureProvider mMetricsFeatureProvider;
private PreferenceScreen mScreen;
@Before
public void setUp() throws Exception {
ShadowPrivateStorageInfo.setPrivateStorageInfo(new PrivateStorageInfo(10L, 100L));
mContext = spy(Robolectric.setupActivity(Activity.class));
mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
mMetricsFeatureProvider = mFakeFeatureFactory.getMetricsFeatureProvider();
mController = new StorageSummaryDonutPreferenceController(mContext, "key");
mPreference = new StorageSummaryDonutPreference(mContext);
mScreen = spy(new PreferenceScreen(mContext, null));
when(mScreen.findPreference("key")).thenReturn(mPreference);
LayoutInflater inflater = LayoutInflater.from(mContext);
final View view =
inflater.inflate(mPreference.getLayoutResource(), new LinearLayout(mContext),
false);
mHolder = PreferenceViewHolder.createInstanceForTests(view);
}
@After
public void tearDown() {
ShadowPrivateStorageInfo.reset();
}
@Test
public void testEmpty() {
final long totalSpace = 32 * GIGABYTE;
final long usedSpace = 0;
mController.displayPreference(mScreen);
mController.updateBytes(0, 32 * GIGABYTE);
mController.updateState(mPreference);
final Formatter.BytesResult usedSpaceResults =
Formatter.formatBytes(mContext.getResources(), usedSpace, 0 /* flags */);
assertThat(mPreference.getTitle().toString())
.isEqualTo(usedSpaceResults.value + " " + usedSpaceResults.units);
assertThat(mPreference.getSummary().toString())
.isEqualTo("Used of " + Formatter.formatShortFileSize(mContext, totalSpace));
}
@Test
public void testTotalStorage() {
final long totalSpace = KILOBYTE * 10;
final long usedSpace = KILOBYTE;
mController.displayPreference(mScreen);
mController.updateBytes(KILOBYTE, totalSpace);
mController.updateState(mPreference);
final Formatter.BytesResult usedSpaceResults =
Formatter.formatBytes(mContext.getResources(), usedSpace, 0 /* flags */);
assertThat(mPreference.getTitle().toString())
.isEqualTo(usedSpaceResults.value + " " + usedSpaceResults.units);
assertThat(mPreference.getSummary().toString())
.isEqualTo("Used of " + Formatter.formatShortFileSize(mContext, totalSpace));
}
@Test
public void testPopulateWithVolume() {
final long totalSpace = KILOBYTE * 10;
final long freeSpace = KILOBYTE;
final long usedSpace = totalSpace - freeSpace;
final VolumeInfo volume = Mockito.mock(VolumeInfo.class);
final File file = Mockito.mock(File.class);
final StorageVolumeProvider svp = Mockito.mock(StorageVolumeProvider.class);
when(volume.getPath()).thenReturn(file);
when(file.getTotalSpace()).thenReturn(totalSpace);
when(file.getFreeSpace()).thenReturn(freeSpace);
when(svp.getPrimaryStorageSize()).thenReturn(totalSpace);
mController.displayPreference(mScreen);
mController.updateSizes(svp, volume);
mController.updateState(mPreference);
final Formatter.BytesResult usedSpaceResults =
Formatter.formatBytes(mContext.getResources(), usedSpace, 0 /* flags */);
assertThat(mPreference.getTitle().toString())
.isEqualTo(usedSpaceResults.value + " " + usedSpaceResults.units);
assertThat(mPreference.getSummary().toString())
.isEqualTo("Used of " + Formatter.formatShortFileSize(mContext, totalSpace));
}
@Test
public void testFreeUpSpaceMetricIsTriggered() {
mPreference.onBindViewHolder(mHolder);
final Button button = (Button) mHolder.findViewById(R.id.deletion_helper_button);
mPreference.onClick(button);
verify(mMetricsFeatureProvider, times(1))
.action(any(Context.class), eq(MetricsEvent.STORAGE_FREE_UP_SPACE_NOW));
}
}