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();