Merge "Don't overly hide the Files preference." into oc-dev

This commit is contained in:
Daniel Nishi
2017-05-03 17:59:06 +00:00
committed by Android (Google) Code Review
2 changed files with 84 additions and 8 deletions

View File

@@ -81,6 +81,7 @@ public class StorageItemPreferenceController extends PreferenceController {
private long mUsedBytes; private long mUsedBytes;
private long mTotalSize; private long mTotalSize;
private PreferenceScreen mScreen;
private StorageItemPreference mPhotoPreference; private StorageItemPreference mPhotoPreference;
private StorageItemPreference mAudioPreference; private StorageItemPreference mAudioPreference;
private StorageItemPreference mGamePreference; private StorageItemPreference mGamePreference;
@@ -169,6 +170,22 @@ public class StorageItemPreferenceController extends PreferenceController {
*/ */
public void setVolume(VolumeInfo volume) { public void setVolume(VolumeInfo volume) {
mVolume = volume; mVolume = volume;
setFilesPreferenceVisibility();
}
private void setFilesPreferenceVisibility() {
if (mScreen != null) {
final VolumeInfo sharedVolume = mSvp.findEmulatedForPrivate(mVolume);
// If we don't have a shared volume for our internal storage (or the shared volume isn't
// mounted as readable for whatever reason), we should hide the File preference.
final boolean hideFilePreference =
(sharedVolume == null) || !sharedVolume.isMountedReadable();
if (hideFilePreference) {
mScreen.removePreference(mFilePreference);
} else {
mScreen.addPreference(mFilePreference);
}
}
} }
/** /**
@@ -207,6 +224,7 @@ public class StorageItemPreferenceController extends PreferenceController {
@Override @Override
public void displayPreference(PreferenceScreen screen) { public void displayPreference(PreferenceScreen screen) {
mScreen = screen;
mPhotoPreference = (StorageItemPreference) screen.findPreference(PHOTO_KEY); mPhotoPreference = (StorageItemPreference) screen.findPreference(PHOTO_KEY);
mAudioPreference = (StorageItemPreference) screen.findPreference(AUDIO_KEY); mAudioPreference = (StorageItemPreference) screen.findPreference(AUDIO_KEY);
mGamePreference = (StorageItemPreference) screen.findPreference(GAME_KEY); mGamePreference = (StorageItemPreference) screen.findPreference(GAME_KEY);
@@ -215,14 +233,7 @@ public class StorageItemPreferenceController extends PreferenceController {
mSystemPreference = (StorageItemPreference) screen.findPreference(SYSTEM_KEY); mSystemPreference = (StorageItemPreference) screen.findPreference(SYSTEM_KEY);
mFilePreference = (StorageItemPreference) screen.findPreference(FILES_KEY); mFilePreference = (StorageItemPreference) screen.findPreference(FILES_KEY);
final VolumeInfo sharedVolume = mSvp.findEmulatedForPrivate(mVolume); setFilesPreferenceVisibility();
// If we don't have a shared volume for our internal storage (or the shared volume isn't
// mounted as readable for whatever reason), we should hide the File preference.
final boolean hideFilePreference =
(sharedVolume == null) || !sharedVolume.isMountedReadable();
if (hideFilePreference) {
screen.removePreference(mFilePreference);
}
} }
public void onLoadFinished(StorageAsyncLoader.AppsStorageResult data) { public void onLoadFinished(StorageAsyncLoader.AppsStorageResult data) {

View File

@@ -391,4 +391,69 @@ public class StorageItemPreferenceControllerTest {
verify(screen).removePreference(files); verify(screen).removePreference(files);
} }
@Test
public void displayPreference_updateFilePreferenceToHideAfterSettingVolume() {
StorageItemPreference audio = new StorageItemPreference(mContext);
StorageItemPreference image = new StorageItemPreference(mContext);
StorageItemPreference games = new StorageItemPreference(mContext);
StorageItemPreference apps = new StorageItemPreference(mContext);
StorageItemPreference system = new StorageItemPreference(mContext);
StorageItemPreference files = new StorageItemPreference(mContext);
PreferenceScreen screen = mock(PreferenceScreen.class);
when(screen.findPreference(eq(StorageItemPreferenceController.AUDIO_KEY)))
.thenReturn(audio);
when(screen.findPreference(eq(StorageItemPreferenceController.PHOTO_KEY)))
.thenReturn(image);
when(screen.findPreference(eq(StorageItemPreferenceController.GAME_KEY))).thenReturn(games);
when(screen.findPreference(eq(StorageItemPreferenceController.OTHER_APPS_KEY)))
.thenReturn(apps);
when(screen.findPreference(eq(StorageItemPreferenceController.SYSTEM_KEY)))
.thenReturn(system);
when(screen.findPreference(eq(StorageItemPreferenceController.FILES_KEY)))
.thenReturn(files);
when(mSvp.findEmulatedForPrivate(any(VolumeInfo.class))).thenReturn(mVolume);
when(mVolume.isMountedReadable()).thenReturn(true);
mController.displayPreference(screen);
when(mSvp.findEmulatedForPrivate(any(VolumeInfo.class))).thenReturn(null);
mController.setVolume(mVolume);
verify(screen).removePreference(files);
}
@Test
public void displayPreference_updateFilePreferenceToShowAfterSettingVolume() {
StorageItemPreference audio = new StorageItemPreference(mContext);
StorageItemPreference image = new StorageItemPreference(mContext);
StorageItemPreference games = new StorageItemPreference(mContext);
StorageItemPreference apps = new StorageItemPreference(mContext);
StorageItemPreference system = new StorageItemPreference(mContext);
StorageItemPreference files = new StorageItemPreference(mContext);
PreferenceScreen screen = mock(PreferenceScreen.class);
when(screen.findPreference(eq(StorageItemPreferenceController.AUDIO_KEY)))
.thenReturn(audio);
when(screen.findPreference(eq(StorageItemPreferenceController.PHOTO_KEY)))
.thenReturn(image);
when(screen.findPreference(eq(StorageItemPreferenceController.GAME_KEY))).thenReturn(games);
when(screen.findPreference(eq(StorageItemPreferenceController.OTHER_APPS_KEY)))
.thenReturn(apps);
when(screen.findPreference(eq(StorageItemPreferenceController.SYSTEM_KEY)))
.thenReturn(system);
when(screen.findPreference(eq(StorageItemPreferenceController.FILES_KEY)))
.thenReturn(files);
// This will hide it initially.
mController.displayPreference(screen);
when(mSvp.findEmulatedForPrivate(any(VolumeInfo.class))).thenReturn(mVolume);
when(mVolume.isMountedReadable()).thenReturn(true);
// And we bring it back.
mController.setVolume(mVolume);
verify(screen).addPreference(files);
}
} }