diff --git a/res/drawable/ic_category_vd_theme_24.xml b/res/drawable/ic_category_vd_theme_24.xml new file mode 100644 index 00000000000..4cf30cf3716 --- /dev/null +++ b/res/drawable/ic_category_vd_theme_24.xml @@ -0,0 +1,25 @@ + + + + \ No newline at end of file diff --git a/res/values/config.xml b/res/values/config.xml index e3d8e7dd8ba..cd17ee0eb88 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -604,8 +604,11 @@ content://com.android.providers.media.documents/root/audio_root - - content://com.android.providers.media.documents/root/documents_root + + content://com.android.providers.media.documents/root/documents_root + + + content://com.android.providers.media.documents/root/others_root true diff --git a/res/values/strings.xml b/res/values/strings.xml index 3268b2f06dd..9401ee0997e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -10968,9 +10968,6 @@ Apps - - Documents & other - System diff --git a/res/xml/storage_category_fragment.xml b/res/xml/storage_category_fragment.xml index 58bd89138df..8af66396bd5 100644 --- a/res/xml/storage_category_fragment.xml +++ b/res/xml/storage_category_fragment.xml @@ -57,15 +57,20 @@ android:icon="@drawable/ic_videogame_vd_theme_24" android:order="105"/> + + android:order="108"/> + + android:order="108"/> (); - mPrivateStorageItemPreferences.add(mImagesPreference); - mPrivateStorageItemPreferences.add(mVideosPreference); - mPrivateStorageItemPreferences.add(mAudioPreference); - mPrivateStorageItemPreferences.add(mAppsPreference); - mPrivateStorageItemPreferences.add(mGamesPreference); - mPrivateStorageItemPreferences.add(mDocumentsAndOtherPreference); + // Adding categories in the reverse order so that + // They would be in the right order after sorting mPrivateStorageItemPreferences.add(mTrashPreference); + mPrivateStorageItemPreferences.add(mOtherPreference); + mPrivateStorageItemPreferences.add(mDocumentsPreference); + mPrivateStorageItemPreferences.add(mGamesPreference); + mPrivateStorageItemPreferences.add(mAppsPreference); + mPrivateStorageItemPreferences.add(mAudioPreference); + mPrivateStorageItemPreferences.add(mVideosPreference); + mPrivateStorageItemPreferences.add(mImagesPreference); } mScreen.removePreference(mImagesPreference); mScreen.removePreference(mVideosPreference); mScreen.removePreference(mAudioPreference); mScreen.removePreference(mAppsPreference); mScreen.removePreference(mGamesPreference); - mScreen.removePreference(mDocumentsAndOtherPreference); + mScreen.removePreference(mDocumentsPreference); + mScreen.removePreference(mOtherPreference); mScreen.removePreference(mTrashPreference); // Sort display order by size. @@ -378,7 +395,8 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle tintPreference(mAudioPreference); tintPreference(mAppsPreference); tintPreference(mGamesPreference); - tintPreference(mDocumentsAndOtherPreference); + tintPreference(mDocumentsPreference); + tintPreference(mOtherPreference); tintPreference(mSystemPreference); tintPreference(mTemporaryFilesPreference); tintPreference(mTrashPreference); @@ -408,7 +426,8 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle mAudioPreference = screen.findPreference(AUDIO_KEY); mAppsPreference = screen.findPreference(APPS_KEY); mGamesPreference = screen.findPreference(GAMES_KEY); - mDocumentsAndOtherPreference = screen.findPreference(DOCUMENTS_AND_OTHER_KEY); + mDocumentsPreference = screen.findPreference(DOCUMENTS_KEY); + mOtherPreference = screen.findPreference(OTHER_KEY); mCategorySplitterPreferenceCategory = screen.findPreference(CATEGORY_SPLITTER); mSystemPreference = screen.findPreference(SYSTEM_KEY); mTemporaryFilesPreference = screen.findPreference(TEMPORARY_FILES_KEY); @@ -434,8 +453,8 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle mAudioPreference.setStorageSize(storageCache.audioSize, mTotalSize, animate); mAppsPreference.setStorageSize(storageCache.allAppsExceptGamesSize, mTotalSize, animate); mGamesPreference.setStorageSize(storageCache.gamesSize, mTotalSize, animate); - mDocumentsAndOtherPreference.setStorageSize(storageCache.documentsAndOtherSize, mTotalSize, - animate); + mDocumentsPreference.setStorageSize(storageCache.documentsSize, mTotalSize, animate); + mOtherPreference.setStorageSize(storageCache.otherSize, mTotalSize, animate); mTrashPreference.setStorageSize(storageCache.trashSize, mTotalSize, animate); if (mSystemPreference != null) { mSystemPreference.setStorageSize(storageCache.systemSize, mTotalSize, animate); @@ -471,7 +490,8 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle storageCache.audioSize = data.audioSize; storageCache.allAppsExceptGamesSize = data.allAppsExceptGamesSize; storageCache.gamesSize = data.gamesSize; - storageCache.documentsAndOtherSize = data.documentsAndOtherSize; + storageCache.documentsSize = data.documentsSize; + storageCache.otherSize = data.otherSize; storageCache.trashSize = data.trashSize; storageCache.systemSize = data.systemSize; // Everything else that hasn't already been attributed is tracked as @@ -484,7 +504,8 @@ public class StorageItemPreferenceController extends AbstractPreferenceControlle + otherData.audioSize + otherData.videosSize + otherData.imagesSize - + otherData.documentsAndOtherSize + + otherData.documentsSize + + otherData.otherSize + otherData.trashSize + otherData.allAppsExceptGamesSize; attributedSize -= otherData.duplicateCodeSize; diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageCacheHelperTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageCacheHelperTest.java index a26ea1dfca2..64684466e40 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageCacheHelperTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageCacheHelperTest.java @@ -36,6 +36,7 @@ public class StorageCacheHelperTest { private static final long FAKE_APPS_SIZE = 4000L; private static final long FAKE_GAMES_SIZE = 5000L; private static final long FAKE_DOCS_SIZE = 1500L; + private static final long FAKE_OTHER_SIZE = 2000L; private static final long FAKE_TRASH_SIZE = 500L; private static final long FAKE_SYSTEM_SIZE = 2300L; private static final long FAKE_TOTAL_SIZE = 256000L; @@ -72,6 +73,8 @@ public class StorageCacheHelperTest { assertThat(storageCache.imagesSize).isEqualTo(FAKE_IMAGES_SIZE); assertThat(storageCache.temporaryFilesSize).isEqualTo(FAKE_TEMPORARY_FILES_SIZE); + assertThat(storageCache.documentsSize).isEqualTo(FAKE_DOCS_SIZE); + assertThat(storageCache.otherSize).isEqualTo(FAKE_OTHER_SIZE); assertThat(storageCache.totalSize).isEqualTo(0); } @@ -97,7 +100,8 @@ public class StorageCacheHelperTest { result.trashSize = FAKE_TRASH_SIZE; result.systemSize = FAKE_SYSTEM_SIZE; result.imagesSize = FAKE_IMAGES_SIZE; - result.documentsAndOtherSize = FAKE_DOCS_SIZE; + result.documentsSize = FAKE_DOCS_SIZE; + result.otherSize = FAKE_OTHER_SIZE; result.audioSize = FAKE_AUDIO_SIZE; result.gamesSize = FAKE_GAMES_SIZE; result.videosSize = FAKE_VIDEOS_SIZE; diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java index 2590f52340f..306d80c5c17 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java @@ -124,8 +124,10 @@ public class StorageItemPreferenceControllerTest { apps.setIcon(R.drawable.ic_storage_apps); final StorageItemPreference games = spy(new StorageItemPreference(mContext)); games.setIcon(R.drawable.ic_videogame_vd_theme_24); - final StorageItemPreference documentsAndOther = spy(new StorageItemPreference(mContext)); - documentsAndOther.setIcon(R.drawable.ic_folder_vd_theme_24); + final StorageItemPreference documents = spy(new StorageItemPreference(mContext)); + documents.setIcon(R.drawable.ic_folder_vd_theme_24); + final StorageItemPreference other = spy(new StorageItemPreference(mContext)); + other.setIcon(R.drawable.ic_category_vd_theme_24); final StorageItemPreference system = spy(new StorageItemPreference(mContext)); system.setIcon(R.drawable.ic_android_vd_theme_24); final StorageItemPreference temporaryFiles = spy(new StorageItemPreference(mContext)); @@ -147,8 +149,10 @@ public class StorageItemPreferenceControllerTest { .thenReturn(apps); when(screen.findPreference(eq(StorageItemPreferenceController.GAMES_KEY))) .thenReturn(games); - when(screen.findPreference(eq(StorageItemPreferenceController.DOCUMENTS_AND_OTHER_KEY))) - .thenReturn(documentsAndOther); + when(screen.findPreference(eq(StorageItemPreferenceController.DOCUMENTS_KEY))) + .thenReturn(documents); + when(screen.findPreference(eq(StorageItemPreferenceController.OTHER_KEY))) + .thenReturn(other); when(screen.findPreference(eq(StorageItemPreferenceController.SYSTEM_KEY))) .thenReturn(system); when(screen.findPreference(eq(StorageItemPreferenceController.TEMPORARY_FILES_KEY))) @@ -225,7 +229,8 @@ public class StorageItemPreferenceControllerTest { assertThat(mController.mAudioPreference.isVisible()).isFalse(); assertThat(mController.mAppsPreference.isVisible()).isFalse(); assertThat(mController.mGamesPreference.isVisible()).isFalse(); - assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isFalse(); + assertThat(mController.mDocumentsPreference.isVisible()).isFalse(); + assertThat(mController.mOtherPreference.isVisible()).isFalse(); assertThat(mController.mSystemPreference.isVisible()).isFalse(); assertThat(mController.mTemporaryFilesPreference.isVisible()).isFalse(); assertThat(mController.mTrashPreference.isVisible()).isFalse(); @@ -278,8 +283,8 @@ public class StorageItemPreferenceControllerTest { } @Test - public void launchDocumentsAndOtherIntent_resolveActionViewNull_settingsIntent() { - mPreference.setKey(StorageItemPreferenceController.DOCUMENTS_AND_OTHER_KEY); + public void launchDocumentsIntent_resolveActionViewNull_settingsIntent() { + mPreference.setKey(StorageItemPreferenceController.DOCUMENTS_KEY); final Context mockContext = getMockContext(); mController = new StorageItemPreferenceController(mockContext, mFragment, mVolume, mSvp, ProfileSelectFragment.ProfileType.PERSONAL); @@ -291,7 +296,24 @@ public class StorageItemPreferenceControllerTest { Intent intent = argumentCaptor.getValue(); assertThat(intent.getAction()).isEqualTo(Intent.ACTION_VIEW); - assertThat(intent.getData()).isEqualTo(mController.mDocumentsAndOtherUri); + assertThat(intent.getData()).isEqualTo(mController.mDocumentsUri); + } + + @Test + public void launchOtherIntent_resolveActionViewNull_settingsIntent() { + mPreference.setKey(StorageItemPreferenceController.OTHER_KEY); + final Context mockContext = getMockContext(); + mController = new StorageItemPreferenceController(mockContext, mFragment, mVolume, + mSvp, ProfileSelectFragment.ProfileType.PERSONAL); + mController.handlePreferenceTreeClick(mPreference); + + final ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(Intent.class); + verify(mockContext).startActivityAsUser(argumentCaptor.capture(), + nullable(UserHandle.class)); + + Intent intent = argumentCaptor.getValue(); + assertThat(intent.getAction()).isEqualTo(Intent.ACTION_VIEW); + assertThat(intent.getData()).isEqualTo(mController.mOtherUri); } @Test @@ -359,7 +381,8 @@ public class StorageItemPreferenceControllerTest { result.imagesSize = MEGABYTE_IN_BYTES * 350; result.videosSize = GIGABYTE_IN_BYTES * 30; result.audioSize = MEGABYTE_IN_BYTES * 40; - result.documentsAndOtherSize = MEGABYTE_IN_BYTES * 50; + result.documentsSize = MEGABYTE_IN_BYTES * 50; + result.otherSize = MEGABYTE_IN_BYTES * 70; result.trashSize = KILOBYTE_IN_BYTES * 100; result.allAppsExceptGamesSize = MEGABYTE_IN_BYTES * 90; result.systemSize = MEGABYTE_IN_BYTES * 60; @@ -373,8 +396,8 @@ public class StorageItemPreferenceControllerTest { assertThat(mController.mAudioPreference.getSummary().toString()).isEqualTo("40 MB"); assertThat(mController.mAppsPreference.getSummary().toString()).isEqualTo("90 MB"); assertThat(mController.mGamesPreference.getSummary().toString()).isEqualTo("80 MB"); - assertThat(mController.mDocumentsAndOtherPreference.getSummary().toString()) - .isEqualTo("50 MB"); + assertThat(mController.mDocumentsPreference.getSummary().toString()).isEqualTo("50 MB"); + assertThat(mController.mOtherPreference.getSummary().toString()).isEqualTo("70 MB"); assertThat(mController.mTrashPreference.getSummary().toString()).isEqualTo("100 kB"); assertThat(mController.mSystemPreference.getSummary().toString()) .isEqualTo("60 MB"); @@ -392,8 +415,8 @@ public class StorageItemPreferenceControllerTest { verify(mController.mAudioPreference, times(2)).setIcon(nullable(Drawable.class)); verify(mController.mAppsPreference, times(2)).setIcon(nullable(Drawable.class)); verify(mController.mGamesPreference, times(2)).setIcon(nullable(Drawable.class)); - verify(mController.mDocumentsAndOtherPreference, times(2)) - .setIcon(nullable(Drawable.class)); + verify(mController.mDocumentsPreference, times(2)).setIcon(nullable(Drawable.class)); + verify(mController.mOtherPreference, times(2)).setIcon(nullable(Drawable.class)); verify(mController.mSystemPreference, times(2)).setIcon(nullable(Drawable.class)); verify(mController.mTemporaryFilesPreference, times(2)).setIcon(nullable(Drawable.class)); verify(mController.mTrashPreference, times(2)).setIcon(nullable(Drawable.class)); @@ -408,7 +431,8 @@ public class StorageItemPreferenceControllerTest { mController.displayPreference(mPreferenceScreen); - assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isTrue(); + assertThat(mController.mDocumentsPreference.isVisible()).isTrue(); + assertThat(mController.mOtherPreference.isVisible()).isTrue(); } @Test @@ -423,7 +447,8 @@ public class StorageItemPreferenceControllerTest { mController.setPrivateStorageCategoryPreferencesVisibility(true); - assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isFalse(); + assertThat(mController.mDocumentsPreference.isVisible()).isFalse(); + assertThat(mController.mOtherPreference.isVisible()).isFalse(); } @Test @@ -438,7 +463,8 @@ public class StorageItemPreferenceControllerTest { // And we bring it back. mController.setVolume(mVolume); - assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isTrue(); + assertThat(mController.mDocumentsPreference.isVisible()).isTrue(); + assertThat(mController.mOtherPreference.isVisible()).isTrue(); } @Test @@ -458,7 +484,8 @@ public class StorageItemPreferenceControllerTest { assertThat(mController.mAudioPreference.isVisible()).isFalse(); assertThat(mController.mAppsPreference.isVisible()).isFalse(); assertThat(mController.mGamesPreference.isVisible()).isFalse(); - assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isFalse(); + assertThat(mController.mDocumentsPreference.isVisible()).isFalse(); + assertThat(mController.mOtherPreference.isVisible()).isFalse(); assertThat(mController.mSystemPreference.isVisible()).isFalse(); assertThat(mController.mTemporaryFilesPreference.isVisible()).isFalse(); assertThat(mController.mTrashPreference.isVisible()).isFalse();