Set storage volume spinner invsible when only 1 volume

Bug: 189390166
Test: atest StorageSelectionPreferenceControllerTest
Change-Id: I93e5fbf50153580ec60c146959d21e61f556c18c
This commit is contained in:
Arc Wang
2021-06-04 15:17:11 +08:00
parent 367fe0eae0
commit 1beae1bf91
2 changed files with 37 additions and 12 deletions

View File

@@ -75,7 +75,7 @@ public class StorageSelectionPreferenceController extends BasePreferenceControll
mStorageAdapter.addAll(storageEntries);
if (mSpinnerPreference != null) {
mSpinnerPreference.setClickable(mStorageAdapter.getCount() > 1);
mSpinnerPreference.setVisible(mStorageAdapter.getCount() > 1);
}
}
@@ -97,7 +97,7 @@ public class StorageSelectionPreferenceController extends BasePreferenceControll
mSpinnerPreference = screen.findPreference(getPreferenceKey());
mSpinnerPreference.setAdapter(mStorageAdapter);
mSpinnerPreference.setOnItemSelectedListener(this);
mSpinnerPreference.setClickable(mStorageAdapter.getCount() > 1);
mSpinnerPreference.setVisible(mStorageAdapter.getCount() > 1);
}
@Override

View File

@@ -18,6 +18,8 @@ package com.android.settings.deviceinfo.storage;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.mock;
import android.content.Context;
import android.os.Looper;
import android.os.storage.StorageManager;
@@ -33,6 +35,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -47,9 +50,20 @@ public class StorageSelectionPreferenceControllerTest {
@Before
public void setUp() throws Exception {
if (Looper.myLooper() == null) {
Looper.prepare();
}
mContext = ApplicationProvider.getApplicationContext();
mStorageManager = mContext.getSystemService(StorageManager.class);
mController = new StorageSelectionPreferenceController(mContext, PREFERENCE_KEY);
final PreferenceManager preferenceManager = new PreferenceManager(mContext);
final PreferenceScreen preferenceScreen =
preferenceManager.createPreferenceScreen(mContext);
final SettingsSpinnerPreference spinnerPreference = new SettingsSpinnerPreference(mContext);
spinnerPreference.setKey(PREFERENCE_KEY);
preferenceScreen.addPreference(spinnerPreference);
mController.displayPreference(preferenceScreen);
}
@Test
@@ -70,16 +84,6 @@ public class StorageSelectionPreferenceControllerTest {
@Test
public void setSelectedStorageEntry_primaryStorage_correctSelectedAdapterItem() {
if (Looper.myLooper() == null) {
Looper.prepare();
}
final PreferenceManager preferenceManager = new PreferenceManager(mContext);
final PreferenceScreen preferenceScreen =
preferenceManager.createPreferenceScreen(mContext);
final SettingsSpinnerPreference spinnerPreference = new SettingsSpinnerPreference(mContext);
spinnerPreference.setKey(PREFERENCE_KEY);
preferenceScreen.addPreference(spinnerPreference);
mController.displayPreference(preferenceScreen);
final StorageEntry primaryStorageEntry =
StorageEntry.getDefaultInternalStorageEntry(mContext);
mController.setStorageEntries(mStorageManager.getVolumes().stream()
@@ -91,5 +95,26 @@ public class StorageSelectionPreferenceControllerTest {
assertThat((StorageEntry) mController.mSpinnerPreference.getSelectedItem())
.isEqualTo(primaryStorageEntry);
}
@Test
public void setStorageEntries_1StorageEntry_preferenceInvisible() {
final List<StorageEntry> storageEntries = new ArrayList<>();
storageEntries.add(mock(StorageEntry.class));
mController.setStorageEntries(storageEntries);
assertThat(mController.mSpinnerPreference.isVisible()).isFalse();
}
@Test
public void setStorageEntries_2StorageEntries_preferenceVisible() {
final List<StorageEntry> storageEntries = new ArrayList<>();
storageEntries.add(mock(StorageEntry.class));
storageEntries.add(mock(StorageEntry.class));
mController.setStorageEntries(storageEntries);
assertThat(mController.mSpinnerPreference.isVisible()).isTrue();
}
}