From 1beae1bf91d0b7a238cf3fb5b2aaea070ca6877c Mon Sep 17 00:00:00 2001 From: Arc Wang Date: Fri, 4 Jun 2021 15:17:11 +0800 Subject: [PATCH] Set storage volume spinner invsible when only 1 volume Bug: 189390166 Test: atest StorageSelectionPreferenceControllerTest Change-Id: I93e5fbf50153580ec60c146959d21e61f556c18c --- .../StorageSelectionPreferenceController.java | 4 +- ...rageSelectionPreferenceControllerTest.java | 45 ++++++++++++++----- 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceController.java index 2ab02391d62..5d5a2a58194 100644 --- a/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceController.java +++ b/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceController.java @@ -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 diff --git a/tests/unit/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceControllerTest.java index 86351cb70b1..f4661ef7646 100644 --- a/tests/unit/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceControllerTest.java +++ b/tests/unit/src/com/android/settings/deviceinfo/storage/StorageSelectionPreferenceControllerTest.java @@ -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 storageEntries = new ArrayList<>(); + storageEntries.add(mock(StorageEntry.class)); + + mController.setStorageEntries(storageEntries); + + assertThat(mController.mSpinnerPreference.isVisible()).isFalse(); + } + + @Test + public void setStorageEntries_2StorageEntries_preferenceVisible() { + final List storageEntries = new ArrayList<>(); + storageEntries.add(mock(StorageEntry.class)); + storageEntries.add(mock(StorageEntry.class)); + + mController.setStorageEntries(storageEntries); + + assertThat(mController.mSpinnerPreference.isVisible()).isTrue(); + } }