Merge "Storage Settings hides categories when loading" into sc-dev
diff --git a/res/xml/storage_category_fragment.xml b/res/xml/storage_category_fragment.xml
index 72623d7..fb62bee 100644
--- a/res/xml/storage_category_fragment.xml
+++ b/res/xml/storage_category_fragment.xml
@@ -24,8 +24,7 @@
android:order="4"
android:title="@string/storage_free_up_space_title"
android:summary="@string/storage_free_up_space_summary"
- android:icon="@drawable/ic_files_go_round"
- settings:allowDividerAbove="true"/>
+ android:icon="@drawable/ic_files_go_round"/>
<!-- Preference order 100~200 are 'ONLY' for storage category preferences below. -->
<Preference
android:key="pref_public_storage"
diff --git a/src/com/android/settings/deviceinfo/StorageCategoryFragment.java b/src/com/android/settings/deviceinfo/StorageCategoryFragment.java
index 035c112..98736e3 100644
--- a/src/com/android/settings/deviceinfo/StorageCategoryFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageCategoryFragment.java
@@ -37,7 +37,6 @@
import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.dashboard.profileselector.ProfileSelectFragment;
-import com.android.settings.deviceinfo.storage.CachedStorageValuesHelper;
import com.android.settings.deviceinfo.storage.SecondaryUserController;
import com.android.settings.deviceinfo.storage.StorageAsyncLoader;
import com.android.settings.deviceinfo.storage.StorageEntry;
@@ -54,6 +53,7 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
/**
* Storage Settings main UI is composed by 3 fragments:
@@ -85,7 +85,6 @@
private StorageEntry mSelectedStorageEntry;
private PrivateStorageInfo mStorageInfo;
private SparseArray<StorageAsyncLoader.StorageResult> mAppsResult;
- private CachedStorageValuesHelper mCachedStorageValuesHelper;
private StorageItemPreferenceController mPreferenceController;
private List<AbstractPreferenceController> mSecondaryUsers;
@@ -104,6 +103,10 @@
return;
}
+ // To prevent flicker, hides secondary users preference.
+ // onReceivedSizes will set it visible for private storage.
+ setSecondaryUsersVisible(false);
+
if (!mSelectedStorageEntry.isMounted()) {
// Set null volume to hide category stats.
mPreferenceController.setVolume(null);
@@ -114,6 +117,10 @@
mAppsResult = null;
maybeSetLoading(isQuotaSupported());
+ // To prevent flicker, sets null volume to hide category preferences.
+ // onReceivedSizes will setVolume with the volume of selected storage.
+ mPreferenceController.setVolume(null);
+
// Stats data is only available on private volumes.
getLoaderManager().restartLoader(STORAGE_JOB_ID, Bundle.EMPTY, this);
getLoaderManager()
@@ -157,7 +164,6 @@
@Override
public void onViewCreated(View v, Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
- initializeCacheProvider();
EntityHeaderController.newInstance(getActivity(), this /*fragment*/,
null /* header view */)
@@ -184,6 +190,10 @@
return;
}
+ if (getView().findViewById(R.id.loading_container).getVisibility() == View.VISIBLE) {
+ setLoading(false /* loading */, true /* animate */);
+ }
+
final long privateUsedBytes = mStorageInfo.totalBytes - mStorageInfo.freeBytes;
mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo());
mPreferenceController.setUsedSize(privateUsedBytes);
@@ -198,10 +208,7 @@
mPreferenceController.onLoadFinished(mAppsResult, mUserId);
updateSecondaryUserControllers(mSecondaryUsers, mAppsResult);
-
- if (getView().findViewById(R.id.loading_container).getVisibility() == View.VISIBLE) {
- setLoading(false, true);
- }
+ setSecondaryUsersVisible(true);
}
@Override
@@ -263,7 +270,6 @@
public void onLoadFinished(Loader<SparseArray<StorageAsyncLoader.StorageResult>> loader,
SparseArray<StorageAsyncLoader.StorageResult> data) {
mAppsResult = data;
- maybeCacheFreshValues();
onReceivedSizes();
}
@@ -287,11 +293,6 @@
}
@VisibleForTesting
- public void setCachedStorageValuesHelper(CachedStorageValuesHelper helper) {
- mCachedStorageValuesHelper = helper;
- }
-
- @VisibleForTesting
public PrivateStorageInfo getPrivateStorageInfo() {
return mStorageInfo;
}
@@ -311,19 +312,6 @@
mAppsResult = info;
}
- @VisibleForTesting
- void initializeCachedValues() {
- final PrivateStorageInfo info = mCachedStorageValuesHelper.getCachedPrivateStorageInfo();
- final SparseArray<StorageAsyncLoader.StorageResult> loaderResult =
- mCachedStorageValuesHelper.getCachedStorageResult();
- if (info == null || loaderResult == null) {
- return;
- }
-
- mStorageInfo = info;
- mAppsResult = loaderResult;
- }
-
/**
* Activate loading UI and animation if it's necessary.
*/
@@ -337,24 +325,22 @@
}
}
- private void initializeCacheProvider() {
- mCachedStorageValuesHelper = new CachedStorageValuesHelper(getContext(), mUserId);
- initializeCachedValues();
- onReceivedSizes();
- }
-
- private void maybeCacheFreshValues() {
- if (mStorageInfo != null && mAppsResult != null) {
- mCachedStorageValuesHelper.cacheResult(mStorageInfo, mAppsResult.get(mUserId));
- }
- }
-
private boolean isQuotaSupported() {
return mSelectedStorageEntry.isMounted()
&& getActivity().getSystemService(StorageStatsManager.class)
.isQuotaSupported(mSelectedStorageEntry.getFsUuid());
}
+ private void setSecondaryUsersVisible(boolean visible) {
+ final Optional<SecondaryUserController> secondaryUserController = mSecondaryUsers.stream()
+ .filter(controller -> controller instanceof SecondaryUserController)
+ .map(controller -> (SecondaryUserController) controller)
+ .findAny();
+ if (secondaryUserController.isPresent()) {
+ secondaryUserController.get().setPreferenceGroupVisible(visible);
+ }
+ }
+
/**
* IconLoaderCallbacks exists because StorageCategoryFragment already implements
* LoaderCallbacks for a different type.
@@ -414,7 +400,6 @@
}
mStorageInfo = privateStorageInfo;
- maybeCacheFreshValues();
onReceivedSizes();
}
}
diff --git a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
index b76d1cb..6dbc3aa 100644
--- a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
@@ -44,7 +44,6 @@
import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.deviceinfo.storage.AutomaticStorageManagementSwitchPreferenceController;
-import com.android.settings.deviceinfo.storage.CachedStorageValuesHelper;
import com.android.settings.deviceinfo.storage.DiskInitFragment;
import com.android.settings.deviceinfo.storage.SecondaryUserController;
import com.android.settings.deviceinfo.storage.StorageAsyncLoader;
@@ -68,6 +67,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Optional;
/**
* Storage Settings main UI is composed by 3 fragments:
@@ -101,7 +101,6 @@
private StorageEntry mSelectedStorageEntry;
private PrivateStorageInfo mStorageInfo;
private SparseArray<StorageAsyncLoader.StorageResult> mAppsResult;
- private CachedStorageValuesHelper mCachedStorageValuesHelper;
private StorageItemPreferenceController mPreferenceController;
private VolumeOptionMenuController mOptionMenuController;
@@ -232,6 +231,10 @@
mOptionMenuController.setSelectedStorageEntry(mSelectedStorageEntry);
getActivity().invalidateOptionsMenu();
+ // To prevent flicker, hides secondary users preference.
+ // onReceivedSizes will set it visible for private storage.
+ setSecondaryUsersVisible(false);
+
if (!mSelectedStorageEntry.isMounted()) {
// Set null volume to hide category stats.
mPreferenceController.setVolume(null);
@@ -242,6 +245,10 @@
mAppsResult = null;
maybeSetLoading(isQuotaSupported());
+ // To prevent flicker, sets null volume to hide category preferences.
+ // onReceivedSizes will setVolume with the volume of selected storage.
+ mPreferenceController.setVolume(null);
+
// Stats data is only available on private volumes.
getLoaderManager().restartLoader(STORAGE_JOB_ID, Bundle.EMPTY, this);
getLoaderManager()
@@ -316,7 +323,6 @@
@Override
public void onViewCreated(View v, Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
- initializeCacheProvider();
EntityHeaderController.newInstance(getActivity(), this /*fragment*/,
null /* header view */)
@@ -355,6 +361,10 @@
return;
}
+ if (getView().findViewById(R.id.loading_container).getVisibility() == View.VISIBLE) {
+ setLoading(false /* loading */, true /* animate */);
+ }
+
final long privateUsedBytes = mStorageInfo.totalBytes - mStorageInfo.freeBytes;
mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo());
mPreferenceController.setUsedSize(privateUsedBytes);
@@ -369,10 +379,7 @@
mPreferenceController.onLoadFinished(mAppsResult, mUserId);
updateSecondaryUserControllers(mSecondaryUsers, mAppsResult);
-
- if (getView().findViewById(R.id.loading_container).getVisibility() == View.VISIBLE) {
- setLoading(false, true);
- }
+ setSecondaryUsersVisible(true);
}
@Override
@@ -463,7 +470,6 @@
public void onLoadFinished(Loader<SparseArray<StorageAsyncLoader.StorageResult>> loader,
SparseArray<StorageAsyncLoader.StorageResult> data) {
mAppsResult = data;
- maybeCacheFreshValues();
onReceivedSizes();
}
@@ -487,11 +493,6 @@
}
@VisibleForTesting
- public void setCachedStorageValuesHelper(CachedStorageValuesHelper helper) {
- mCachedStorageValuesHelper = helper;
- }
-
- @VisibleForTesting
public PrivateStorageInfo getPrivateStorageInfo() {
return mStorageInfo;
}
@@ -511,19 +512,6 @@
mAppsResult = info;
}
- @VisibleForTesting
- void initializeCachedValues() {
- final PrivateStorageInfo info = mCachedStorageValuesHelper.getCachedPrivateStorageInfo();
- final SparseArray<StorageAsyncLoader.StorageResult> loaderResult =
- mCachedStorageValuesHelper.getCachedStorageResult();
- if (info == null || loaderResult == null) {
- return;
- }
-
- mStorageInfo = info;
- mAppsResult = loaderResult;
- }
-
/**
* Activate loading UI and animation if it's necessary.
*/
@@ -537,24 +525,22 @@
}
}
- private void initializeCacheProvider() {
- mCachedStorageValuesHelper = new CachedStorageValuesHelper(getContext(), mUserId);
- initializeCachedValues();
- onReceivedSizes();
- }
-
- private void maybeCacheFreshValues() {
- if (mStorageInfo != null && mAppsResult != null) {
- mCachedStorageValuesHelper.cacheResult(mStorageInfo, mAppsResult.get(mUserId));
- }
- }
-
private boolean isQuotaSupported() {
return mSelectedStorageEntry.isMounted()
&& getActivity().getSystemService(StorageStatsManager.class)
.isQuotaSupported(mSelectedStorageEntry.getFsUuid());
}
+ private void setSecondaryUsersVisible(boolean visible) {
+ final Optional<SecondaryUserController> secondaryUserController = mSecondaryUsers.stream()
+ .filter(controller -> controller instanceof SecondaryUserController)
+ .map(controller -> (SecondaryUserController) controller)
+ .findAny();
+ if (secondaryUserController.isPresent()) {
+ secondaryUserController.get().setPreferenceGroupVisible(visible);
+ }
+ }
+
/**
* IconLoaderCallbacks exists because StorageDashboardFragment already implements
* LoaderCallbacks for a different type.
@@ -614,7 +600,6 @@
}
mStorageInfo = privateStorageInfo;
- maybeCacheFreshValues();
onReceivedSizes();
}
}
diff --git a/src/com/android/settings/deviceinfo/StorageItemPreference.java b/src/com/android/settings/deviceinfo/StorageItemPreference.java
index cdb9f9d..934ff3f 100644
--- a/src/com/android/settings/deviceinfo/StorageItemPreference.java
+++ b/src/com/android/settings/deviceinfo/StorageItemPreference.java
@@ -43,7 +43,6 @@
public StorageItemPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setLayoutResource(R.layout.storage_item);
- setSummary(R.string.memory_calculating_size);
}
public void setStorageSize(long size, long total) {
diff --git a/src/com/android/settings/deviceinfo/storage/CachedStorageValuesHelper.java b/src/com/android/settings/deviceinfo/storage/CachedStorageValuesHelper.java
deleted file mode 100644
index 4ca623d..0000000
--- a/src/com/android/settings/deviceinfo/storage/CachedStorageValuesHelper.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.deviceinfo.storage;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.provider.Settings;
-import android.util.SparseArray;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.settingslib.applications.StorageStatsSource;
-import com.android.settingslib.deviceinfo.PrivateStorageInfo;
-
-import java.util.concurrent.TimeUnit;
-
-public class CachedStorageValuesHelper {
-
- @VisibleForTesting public static final String SHARED_PREFERENCES_NAME = "CachedStorageValues";
- public static final String TIMESTAMP_KEY = "last_query_timestamp";
- public static final String FREE_BYTES_KEY = "free_bytes";
- public static final String TOTAL_BYTES_KEY = "total_bytes";
- public static final String GAME_APPS_SIZE_KEY = "game_apps_size";
- public static final String AUDIO_SIZE_KEY = "audio_size";
- public static final String VIDEOS_SIZE_KEY = "videos_size";
- public static final String IMAGES_SIZE_KEY = "images_size";
- public static final String DOCUMENTS_AND_OTHER_SIZE_KEY = "documents_and_other_size";
- public static final String TRASH_SIZE_KEY = "trash_size";
- public static final String OTHER_APPS_SIZE_KEY = "other_apps_size";
- public static final String CACHE_APPS_SIZE_KEY = "cache_apps_size";
- public static final String EXTERNAL_TOTAL_BYTES = "external_total_bytes";
- public static final String EXTERNAL_AUDIO_BYTES = "external_audio_bytes";
- public static final String EXTERNAL_VIDEO_BYTES = "external_video_bytes";
- public static final String EXTERNAL_IMAGE_BYTES = "external_image_bytes";
- public static final String EXTERNAL_APP_BYTES = "external_apps_bytes";
- public static final String USER_ID_KEY = "user_id";
- private final Long mClobberThreshold;
- private final SharedPreferences mSharedPreferences;
- private final int mUserId;
- // This clock is used to provide the time. By default, it uses the system clock, but can be
- // replaced for test purposes.
- protected Clock mClock;
-
- public CachedStorageValuesHelper(Context context, int userId) {
- mSharedPreferences =
- context.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
- mClock = new Clock();
- mUserId = userId;
- mClobberThreshold =
- Settings.Global.getLong(
- context.getContentResolver(),
- Settings.Global.STORAGE_SETTINGS_CLOBBER_THRESHOLD,
- TimeUnit.MINUTES.toMillis(5));
- }
-
- public PrivateStorageInfo getCachedPrivateStorageInfo() {
- if (!isDataValid()) {
- return null;
- }
- final long freeBytes = mSharedPreferences.getLong(FREE_BYTES_KEY, -1);
- final long totalBytes = mSharedPreferences.getLong(TOTAL_BYTES_KEY, -1);
- if (freeBytes < 0 || totalBytes < 0) {
- return null;
- }
-
- return new PrivateStorageInfo(freeBytes, totalBytes);
- }
-
- /** Returns cached storage result or null if it's not available. */
- public SparseArray<StorageAsyncLoader.StorageResult> getCachedStorageResult() {
- if (!isDataValid()) {
- return null;
- }
- final long gamesSize = mSharedPreferences.getLong(GAME_APPS_SIZE_KEY, -1);
- final long audioSize = mSharedPreferences.getLong(AUDIO_SIZE_KEY, -1);
- final long videosSize = mSharedPreferences.getLong(VIDEOS_SIZE_KEY, -1);
- final long imagesSize = mSharedPreferences.getLong(IMAGES_SIZE_KEY, -1);
- final long documentsAndOtherSize =
- mSharedPreferences.getLong(DOCUMENTS_AND_OTHER_SIZE_KEY, -1);
- final long trashSize = mSharedPreferences.getLong(TRASH_SIZE_KEY, -1);
- final long allAppsExceptGamesSize = mSharedPreferences.getLong(OTHER_APPS_SIZE_KEY, -1);
- final long cacheSize = mSharedPreferences.getLong(CACHE_APPS_SIZE_KEY, -1);
- if (gamesSize < 0
- || audioSize < 0
- || videosSize < 0
- || imagesSize < 0
- || documentsAndOtherSize < 0
- || trashSize < 0
- || allAppsExceptGamesSize < 0
- || cacheSize < 0) {
- return null;
- }
-
- final long externalTotalBytes = mSharedPreferences.getLong(EXTERNAL_TOTAL_BYTES, -1);
- final long externalAudioBytes = mSharedPreferences.getLong(EXTERNAL_AUDIO_BYTES, -1);
- final long externalVideoBytes = mSharedPreferences.getLong(EXTERNAL_VIDEO_BYTES, -1);
- final long externalImageBytes = mSharedPreferences.getLong(EXTERNAL_IMAGE_BYTES, -1);
- final long externalAppBytes = mSharedPreferences.getLong(EXTERNAL_APP_BYTES, -1);
- if (externalTotalBytes < 0
- || externalAudioBytes < 0
- || externalVideoBytes < 0
- || externalImageBytes < 0
- || externalAppBytes < 0) {
- return null;
- }
-
- final StorageStatsSource.ExternalStorageStats externalStats =
- new StorageStatsSource.ExternalStorageStats(
- externalTotalBytes,
- externalAudioBytes,
- externalVideoBytes,
- externalImageBytes,
- externalAppBytes);
- final StorageAsyncLoader.StorageResult result = new StorageAsyncLoader.StorageResult();
- result.gamesSize = gamesSize;
- result.audioSize = audioSize;
- result.videosSize = videosSize;
- result.imagesSize = imagesSize;
- result.documentsAndOtherSize = documentsAndOtherSize;
- result.trashSize = trashSize;
- result.allAppsExceptGamesSize = allAppsExceptGamesSize;
- result.cacheSize = cacheSize;
- result.externalStats = externalStats;
- final SparseArray<StorageAsyncLoader.StorageResult> resultArray = new SparseArray<>();
- resultArray.append(mUserId, result);
- return resultArray;
- }
-
- public void cacheResult(
- PrivateStorageInfo storageInfo, StorageAsyncLoader.StorageResult result) {
- mSharedPreferences
- .edit()
- .putLong(FREE_BYTES_KEY, storageInfo.freeBytes)
- .putLong(TOTAL_BYTES_KEY, storageInfo.totalBytes)
- .putLong(GAME_APPS_SIZE_KEY, result.gamesSize)
- .putLong(AUDIO_SIZE_KEY, result.audioSize)
- .putLong(VIDEOS_SIZE_KEY, result.videosSize)
- .putLong(IMAGES_SIZE_KEY, result.imagesSize)
- .putLong(DOCUMENTS_AND_OTHER_SIZE_KEY, result.documentsAndOtherSize)
- .putLong(TRASH_SIZE_KEY, result.trashSize)
- .putLong(OTHER_APPS_SIZE_KEY, result.allAppsExceptGamesSize)
- .putLong(CACHE_APPS_SIZE_KEY, result.cacheSize)
- .putLong(EXTERNAL_TOTAL_BYTES, result.externalStats.totalBytes)
- .putLong(EXTERNAL_AUDIO_BYTES, result.externalStats.audioBytes)
- .putLong(EXTERNAL_VIDEO_BYTES, result.externalStats.videoBytes)
- .putLong(EXTERNAL_IMAGE_BYTES, result.externalStats.imageBytes)
- .putLong(EXTERNAL_APP_BYTES, result.externalStats.appBytes)
- .putInt(USER_ID_KEY, mUserId)
- .putLong(TIMESTAMP_KEY, mClock.getCurrentTime())
- .apply();
- }
-
- private boolean isDataValid() {
- final int cachedUserId = mSharedPreferences.getInt(USER_ID_KEY, -1);
- if (cachedUserId != mUserId) {
- return false;
- }
-
- final long lastQueryTime = mSharedPreferences.getLong(TIMESTAMP_KEY, Long.MAX_VALUE);
- final long currentTime = mClock.getCurrentTime();
- return currentTime - lastQueryTime < mClobberThreshold;
- }
-
- /** Clock provides the current time. */
- static class Clock {
- public long getCurrentTime() {
- return System.currentTimeMillis();
- }
- }
-}
diff --git a/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java b/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
index 6475029..f87a06a 100644
--- a/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
+++ b/src/com/android/settings/deviceinfo/storage/SecondaryUserController.java
@@ -53,9 +53,11 @@
UserInfo mUser;
private @Nullable
StorageItemPreference mStoragePreference;
+ private PreferenceGroup mPreferenceGroup;
private Drawable mUserIcon;
private long mSize;
private long mTotalSizeBytes;
+ private boolean mIsVisible;
/**
* Adds the appropriate controllers to a controller list for handling all secondary users on
@@ -115,16 +117,15 @@
if (mStoragePreference == null) {
mStoragePreference = new StorageItemPreference(screen.getContext());
- PreferenceGroup group =
- screen.findPreference(TARGET_PREFERENCE_GROUP_KEY);
+ mPreferenceGroup = screen.findPreference(TARGET_PREFERENCE_GROUP_KEY);
mStoragePreference.setTitle(mUser.name);
mStoragePreference.setKey(PREFERENCE_KEY_BASE + mUser.id);
if (mSize != SIZE_NOT_SET) {
mStoragePreference.setStorageSize(mSize, mTotalSizeBytes);
}
- group.setVisible(true);
- group.addPreference(mStoragePreference);
+ mPreferenceGroup.setVisible(mIsVisible);
+ mPreferenceGroup.addPreference(mStoragePreference);
maybeSetIcon();
}
}
@@ -168,6 +169,18 @@
mTotalSizeBytes = totalSizeBytes;
}
+ /**
+ * Sets visibility of the PreferenceGroup of secondary user.
+ *
+ * @param visible Visibility of the PreferenceGroup.
+ */
+ public void setPreferenceGroupVisible(boolean visible) {
+ mIsVisible = visible;
+ if (mPreferenceGroup != null) {
+ mPreferenceGroup.setVisible(mIsVisible);
+ }
+ }
+
@Override
public void handleResult(SparseArray<StorageAsyncLoader.StorageResult> stats) {
final StorageAsyncLoader.StorageResult result = stats.get(getUser().id);
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index 41e26ee..22ea98f 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -221,7 +221,15 @@
public void setVolume(VolumeInfo volume) {
mVolume = volume;
- updateCategoryPreferencesVisibility();
+ if (mPublicStoragePreference != null) {
+ mPublicStoragePreference.setVisible(isValidPublicVolume());
+ }
+
+ // If isValidPrivateVolume() is true, these preferences will become visible at
+ // onLoadFinished.
+ if (!isValidPrivateVolume()) {
+ setPrivateStorageCategoryPreferencesVisibility(false);
+ }
}
// Stats data is only available on private volumes.
@@ -242,30 +250,28 @@
|| mVolume.getState() == VolumeInfo.STATE_MOUNTED_READ_ONLY);
}
- private void updateCategoryPreferencesVisibility() {
+ @VisibleForTesting
+ void setPrivateStorageCategoryPreferencesVisibility(boolean visible) {
if (mScreen == null) {
return;
}
- mPublicStoragePreference.setVisible(isValidPublicVolume());
+ mImagesPreference.setVisible(visible);
+ mVideosPreference.setVisible(visible);
+ mAudioPreference.setVisible(visible);
+ mAppsPreference.setVisible(visible);
+ mGamesPreference.setVisible(visible);
+ mSystemPreference.setVisible(visible);
+ mTrashPreference.setVisible(visible);
- final boolean privateStoragePreferencesVisible = isValidPrivateVolume();
- mImagesPreference.setVisible(privateStoragePreferencesVisible);
- mVideosPreference.setVisible(privateStoragePreferencesVisible);
- mAudioPreference.setVisible(privateStoragePreferencesVisible);
- mAppsPreference.setVisible(privateStoragePreferencesVisible);
- mGamesPreference.setVisible(privateStoragePreferencesVisible);
- mDocumentsAndOtherPreference.setVisible(privateStoragePreferencesVisible);
- mSystemPreference.setVisible(privateStoragePreferencesVisible);
- mTrashPreference.setVisible(privateStoragePreferencesVisible);
-
- if (privateStoragePreferencesVisible) {
+ // 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.
+ if (visible) {
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.
- if (sharedVolume == null || !sharedVolume.isMountedReadable()) {
- mDocumentsAndOtherPreference.setVisible(false);
- }
+ mDocumentsAndOtherPreference.setVisible(sharedVolume != null
+ && sharedVolume.isMountedReadable());
+ } else {
+ mDocumentsAndOtherPreference.setVisible(false);
}
}
@@ -390,6 +396,7 @@
}
updatePrivateStorageCategoryPreferencesOrder();
+ setPrivateStorageCategoryPreferencesVisibility(true);
}
public void setUsedSize(long usedSizeBytes) {
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
index af1900a..411a3cf 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/StorageDashboardFragmentTest.java
@@ -33,8 +33,6 @@
import androidx.recyclerview.widget.RecyclerView;
-import com.android.settings.deviceinfo.storage.CachedStorageValuesHelper;
-import com.android.settings.deviceinfo.storage.StorageAsyncLoader;
import com.android.settingslib.deviceinfo.PrivateStorageInfo;
import com.android.settingslib.drawer.CategoryKey;
@@ -73,47 +71,6 @@
}
@Test
- public void test_cacheProviderProvidesValuesIfBothCached() {
- CachedStorageValuesHelper helper = mock(CachedStorageValuesHelper.class);
- PrivateStorageInfo info = new PrivateStorageInfo(0, 0);
- when(helper.getCachedPrivateStorageInfo()).thenReturn(info);
- SparseArray<StorageAsyncLoader.StorageResult> result = new SparseArray<>();
- when(helper.getCachedStorageResult()).thenReturn(result);
-
- mFragment.setCachedStorageValuesHelper(helper);
- mFragment.initializeCachedValues();
-
- assertThat(mFragment.getPrivateStorageInfo()).isEqualTo(info);
- assertThat(mFragment.getStorageResult()).isEqualTo(result);
- }
-
- @Test
- public void test_cacheProviderDoesntProvideValuesIfAppsMissing() {
- CachedStorageValuesHelper helper = mock(CachedStorageValuesHelper.class);
- PrivateStorageInfo info = new PrivateStorageInfo(0, 0);
- when(helper.getCachedPrivateStorageInfo()).thenReturn(info);
-
- mFragment.setCachedStorageValuesHelper(helper);
- mFragment.initializeCachedValues();
-
- assertThat(mFragment.getPrivateStorageInfo()).isNull();
- assertThat(mFragment.getStorageResult()).isNull();
- }
-
- @Test
- public void test_cacheProviderDoesntProvideValuesIfVolumeInfoMissing() {
- CachedStorageValuesHelper helper = mock(CachedStorageValuesHelper.class);
- SparseArray<StorageAsyncLoader.StorageResult> result = new SparseArray<>();
- when(helper.getCachedStorageResult()).thenReturn(result);
-
- mFragment.setCachedStorageValuesHelper(helper);
- mFragment.initializeCachedValues();
-
- assertThat(mFragment.getPrivateStorageInfo()).isNull();
- assertThat(mFragment.getStorageResult()).isNull();
- }
-
- @Test
public void test_loadWhenQuotaOffIfVolumeInfoNotLoaded() {
View fakeView = mock(View.class, RETURNS_DEEP_STUBS);
RecyclerView fakeRecyclerView = mock(RecyclerView.class, RETURNS_DEEP_STUBS);
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/StorageItemPreferenceTest.java b/tests/robotests/src/com/android/settings/deviceinfo/StorageItemPreferenceTest.java
index 24543801..984d945 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/StorageItemPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/StorageItemPreferenceTest.java
@@ -46,12 +46,6 @@
}
@Test
- public void testBeforeLoad() {
- assertThat(mPreference.getSummary())
- .isEqualTo(mContext.getString(R.string.memory_calculating_size));
- }
-
- @Test
public void testAfterLoad() {
mPreference.setStorageSize(MEGABYTE_IN_BYTES * 10, MEGABYTE_IN_BYTES * 100);
assertThat(mPreference.getSummary()).isEqualTo("10 MB");
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/CachedStorageValuesHelperTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/CachedStorageValuesHelperTest.java
deleted file mode 100644
index ccc9152..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/CachedStorageValuesHelperTest.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.deviceinfo.storage;
-
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.AUDIO_SIZE_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.CACHE_APPS_SIZE_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.DOCUMENTS_AND_OTHER_SIZE_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.EXTERNAL_APP_BYTES;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper
- .EXTERNAL_AUDIO_BYTES;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper
- .EXTERNAL_IMAGE_BYTES;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper
- .EXTERNAL_TOTAL_BYTES;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper
- .EXTERNAL_VIDEO_BYTES;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.FREE_BYTES_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.GAME_APPS_SIZE_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.IMAGES_SIZE_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.OTHER_APPS_SIZE_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper
- .SHARED_PREFERENCES_NAME;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.TIMESTAMP_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.TOTAL_BYTES_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.TRASH_SIZE_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.USER_ID_KEY;
-import static com.android.settings.deviceinfo.storage.CachedStorageValuesHelper.VIDEOS_SIZE_KEY;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.util.SparseArray;
-
-import com.android.settingslib.applications.StorageStatsSource;
-import com.android.settingslib.deviceinfo.PrivateStorageInfo;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class CachedStorageValuesHelperTest {
-
- private Context mContext;
-
- @Mock private CachedStorageValuesHelper.Clock mMockClock;
- private CachedStorageValuesHelper mCachedValuesHelper;
- private SharedPreferences mSharedPreferences;
-
- @Before
- public void setUp() throws Exception {
- MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
- mSharedPreferences = mContext.getSharedPreferences(SHARED_PREFERENCES_NAME, 0);
- mCachedValuesHelper = new CachedStorageValuesHelper(mContext, 0);
- mCachedValuesHelper.mClock = mMockClock;
- }
-
- @Test
- public void getCachedPrivateStorageInfo_cachedValuesAreLoaded() {
- when(mMockClock.getCurrentTime()).thenReturn(10001L);
- mSharedPreferences
- .edit()
- .putLong(GAME_APPS_SIZE_KEY, 0)
- .putLong(AUDIO_SIZE_KEY, 10)
- .putLong(VIDEOS_SIZE_KEY, 100)
- .putLong(IMAGES_SIZE_KEY, 1000)
- .putLong(OTHER_APPS_SIZE_KEY, 10000)
- .putLong(CACHE_APPS_SIZE_KEY, 100000)
- .putLong(EXTERNAL_TOTAL_BYTES, 2)
- .putLong(EXTERNAL_AUDIO_BYTES, 22)
- .putLong(EXTERNAL_VIDEO_BYTES, 222)
- .putLong(EXTERNAL_IMAGE_BYTES, 2222)
- .putLong(EXTERNAL_APP_BYTES, 22222)
- .putLong(FREE_BYTES_KEY, 1000L)
- .putLong(TOTAL_BYTES_KEY, 6000L)
- .putInt(USER_ID_KEY, 0)
- .putLong(TIMESTAMP_KEY, 10000L)
- .apply();
-
- final PrivateStorageInfo info = mCachedValuesHelper.getCachedPrivateStorageInfo();
-
- assertThat(info.freeBytes).isEqualTo(1000L);
- assertThat(info.totalBytes).isEqualTo(6000L);
- }
-
- @Test
- public void getCachedStorageResult_cachedValuesAreLoaded() {
- when(mMockClock.getCurrentTime()).thenReturn(10001L);
- mSharedPreferences
- .edit()
- .putLong(GAME_APPS_SIZE_KEY, 1)
- .putLong(AUDIO_SIZE_KEY, 10)
- .putLong(VIDEOS_SIZE_KEY, 100)
- .putLong(IMAGES_SIZE_KEY, 1000)
- .putLong(DOCUMENTS_AND_OTHER_SIZE_KEY, 1001)
- .putLong(TRASH_SIZE_KEY, 1002)
- .putLong(OTHER_APPS_SIZE_KEY, 10000)
- .putLong(CACHE_APPS_SIZE_KEY, 100000)
- .putLong(EXTERNAL_TOTAL_BYTES, 222222)
- .putLong(EXTERNAL_AUDIO_BYTES, 22)
- .putLong(EXTERNAL_VIDEO_BYTES, 222)
- .putLong(EXTERNAL_IMAGE_BYTES, 2222)
- .putLong(EXTERNAL_APP_BYTES, 22222)
- .putLong(FREE_BYTES_KEY, 1000L)
- .putLong(TOTAL_BYTES_KEY, 5000L)
- .putInt(USER_ID_KEY, 0)
- .putLong(TIMESTAMP_KEY, 10000L)
- .apply();
-
- final SparseArray<StorageAsyncLoader.StorageResult> result =
- mCachedValuesHelper.getCachedStorageResult();
-
- StorageAsyncLoader.StorageResult primaryResult = result.get(0);
- assertThat(primaryResult.gamesSize).isEqualTo(1L);
- assertThat(primaryResult.audioSize).isEqualTo(10L);
- assertThat(primaryResult.videosSize).isEqualTo(100L);
- assertThat(primaryResult.imagesSize).isEqualTo(1000L);
- assertThat(primaryResult.documentsAndOtherSize).isEqualTo(1001L);
- assertThat(primaryResult.trashSize).isEqualTo(1002L);
- assertThat(primaryResult.allAppsExceptGamesSize).isEqualTo(10000L);
- assertThat(primaryResult.cacheSize).isEqualTo(100000L);
- assertThat(primaryResult.externalStats.totalBytes).isEqualTo(222222L);
- assertThat(primaryResult.externalStats.audioBytes).isEqualTo(22L);
- assertThat(primaryResult.externalStats.videoBytes).isEqualTo(222L);
- assertThat(primaryResult.externalStats.imageBytes).isEqualTo(2222L);
- assertThat(primaryResult.externalStats.appBytes).isEqualTo(22222L);
- }
-
- @Test
- public void getCachedPrivateStorageInfo_nullIfDataIsStale() {
- when(mMockClock.getCurrentTime()).thenReturn(10000000L);
- mSharedPreferences
- .edit()
- .putLong(GAME_APPS_SIZE_KEY, 0)
- .putLong(AUDIO_SIZE_KEY, 10)
- .putLong(VIDEOS_SIZE_KEY, 100)
- .putLong(IMAGES_SIZE_KEY, 1000)
- .putLong(OTHER_APPS_SIZE_KEY, 10000)
- .putLong(CACHE_APPS_SIZE_KEY, 100000)
- .putLong(EXTERNAL_TOTAL_BYTES, 2)
- .putLong(EXTERNAL_AUDIO_BYTES, 22)
- .putLong(EXTERNAL_VIDEO_BYTES, 222)
- .putLong(EXTERNAL_IMAGE_BYTES, 2222)
- .putLong(EXTERNAL_APP_BYTES, 22222)
- .putLong(FREE_BYTES_KEY, 1000L)
- .putLong(TOTAL_BYTES_KEY, 5000L)
- .putInt(USER_ID_KEY, 0)
- .putLong(TIMESTAMP_KEY, 10000L)
- .apply();
-
- final PrivateStorageInfo info = mCachedValuesHelper.getCachedPrivateStorageInfo();
- assertThat(info).isNull();
- }
-
- @Test
- public void getCachedStorageResult_nullIfDataIsStale() {
- when(mMockClock.getCurrentTime()).thenReturn(10000000L);
- mSharedPreferences
- .edit()
- .putLong(GAME_APPS_SIZE_KEY, 0)
- .putLong(AUDIO_SIZE_KEY, 10)
- .putLong(VIDEOS_SIZE_KEY, 100)
- .putLong(IMAGES_SIZE_KEY, 1000)
- .putLong(OTHER_APPS_SIZE_KEY, 10000)
- .putLong(CACHE_APPS_SIZE_KEY, 100000)
- .putLong(EXTERNAL_TOTAL_BYTES, 2)
- .putLong(EXTERNAL_AUDIO_BYTES, 22)
- .putLong(EXTERNAL_VIDEO_BYTES, 222)
- .putLong(EXTERNAL_IMAGE_BYTES, 2222)
- .putLong(EXTERNAL_APP_BYTES, 22222)
- .putLong(FREE_BYTES_KEY, 1000L)
- .putLong(TOTAL_BYTES_KEY, 5000L)
- .putInt(USER_ID_KEY, 0)
- .putLong(TIMESTAMP_KEY, 10000L)
- .apply();
-
- final SparseArray<StorageAsyncLoader.StorageResult> result =
- mCachedValuesHelper.getCachedStorageResult();
- assertThat(result).isNull();
- }
-
- @Test
- public void getCachedPrivateStorageInfo_nullIfWrongUser() {
- when(mMockClock.getCurrentTime()).thenReturn(10001L);
- mSharedPreferences
- .edit()
- .putLong(GAME_APPS_SIZE_KEY, 0)
- .putLong(AUDIO_SIZE_KEY, 10)
- .putLong(VIDEOS_SIZE_KEY, 100)
- .putLong(IMAGES_SIZE_KEY, 1000)
- .putLong(OTHER_APPS_SIZE_KEY, 10000)
- .putLong(CACHE_APPS_SIZE_KEY, 100000)
- .putLong(EXTERNAL_TOTAL_BYTES, 2)
- .putLong(EXTERNAL_AUDIO_BYTES, 22)
- .putLong(EXTERNAL_VIDEO_BYTES, 222)
- .putLong(EXTERNAL_IMAGE_BYTES, 2222)
- .putLong(EXTERNAL_APP_BYTES, 22222)
- .putLong(FREE_BYTES_KEY, 1000L)
- .putLong(TOTAL_BYTES_KEY, 5000L)
- .putInt(USER_ID_KEY, 1)
- .putLong(TIMESTAMP_KEY, 10000L)
- .apply();
-
- final PrivateStorageInfo info = mCachedValuesHelper.getCachedPrivateStorageInfo();
- assertThat(info).isNull();
- }
-
- @Test
- public void getCachedStorageResult_nullIfWrongUser() {
- when(mMockClock.getCurrentTime()).thenReturn(10001L);
- mSharedPreferences
- .edit()
- .putLong(GAME_APPS_SIZE_KEY, 0)
- .putLong(AUDIO_SIZE_KEY, 10)
- .putLong(VIDEOS_SIZE_KEY, 100)
- .putLong(IMAGES_SIZE_KEY, 1000)
- .putLong(OTHER_APPS_SIZE_KEY, 10000)
- .putLong(CACHE_APPS_SIZE_KEY, 100000)
- .putLong(EXTERNAL_TOTAL_BYTES, 2)
- .putLong(EXTERNAL_AUDIO_BYTES, 22)
- .putLong(EXTERNAL_VIDEO_BYTES, 222)
- .putLong(EXTERNAL_IMAGE_BYTES, 2222)
- .putLong(EXTERNAL_APP_BYTES, 22222)
- .putLong(FREE_BYTES_KEY, 1000L)
- .putLong(TOTAL_BYTES_KEY, 5000L)
- .putInt(USER_ID_KEY, 1)
- .putLong(TIMESTAMP_KEY, 10000L)
- .apply();
-
- final SparseArray<StorageAsyncLoader.StorageResult> result =
- mCachedValuesHelper.getCachedStorageResult();
- assertThat(result).isNull();
- }
-
- @Test
- public void getCachedPrivateStorageInfo_nullIfEmpty() {
- final PrivateStorageInfo info = mCachedValuesHelper.getCachedPrivateStorageInfo();
- assertThat(info).isNull();
- }
-
- @Test
- public void getCachedStorageResult_nullIfEmpty() {
- final SparseArray<StorageAsyncLoader.StorageResult> result =
- mCachedValuesHelper.getCachedStorageResult();
- assertThat(result).isNull();
- }
-
- @Test
- public void cacheResult_succeeds() {
- when(mMockClock.getCurrentTime()).thenReturn(10000L);
- final StorageStatsSource.ExternalStorageStats externalStats =
- new StorageStatsSource.ExternalStorageStats(22222L, 2L, 20L, 200L, 2000L);
- final StorageAsyncLoader.StorageResult result =
- new StorageAsyncLoader.StorageResult();
- result.gamesSize = 1L;
- result.audioSize = 10L;
- result.videosSize = 100L;
- result.imagesSize = 1000L;
- result.allAppsExceptGamesSize = 10000L;
- result.cacheSize = 100000L;
- result.externalStats = externalStats;
- final PrivateStorageInfo info = new PrivateStorageInfo(1000L, 6000L);
-
- mCachedValuesHelper.cacheResult(info, result);
-
- assertThat(mSharedPreferences.getLong(GAME_APPS_SIZE_KEY, -1)).isEqualTo(1L);
- assertThat(mSharedPreferences.getLong(AUDIO_SIZE_KEY, -1)).isEqualTo(10L);
- assertThat(mSharedPreferences.getLong(VIDEOS_SIZE_KEY, -1)).isEqualTo(100L);
- assertThat(mSharedPreferences.getLong(IMAGES_SIZE_KEY, -1)).isEqualTo(1000L);
- assertThat(mSharedPreferences.getLong(OTHER_APPS_SIZE_KEY, -1)).isEqualTo(10000L);
- assertThat(mSharedPreferences.getLong(CACHE_APPS_SIZE_KEY, -1)).isEqualTo(100000L);
- assertThat(mSharedPreferences.getLong(EXTERNAL_TOTAL_BYTES, -1)).isEqualTo(22222L);
- assertThat(mSharedPreferences.getLong(EXTERNAL_AUDIO_BYTES, -1)).isEqualTo(2L);
- assertThat(mSharedPreferences.getLong(EXTERNAL_VIDEO_BYTES, -1)).isEqualTo(20L);
- assertThat(mSharedPreferences.getLong(EXTERNAL_IMAGE_BYTES, -1)).isEqualTo(200L);
- assertThat(mSharedPreferences.getLong(EXTERNAL_APP_BYTES, -1)).isEqualTo(2000L);
- assertThat(mSharedPreferences.getLong(FREE_BYTES_KEY, -1)).isEqualTo(1000L);
- assertThat(mSharedPreferences.getLong(TOTAL_BYTES_KEY, -1)).isEqualTo(6000L);
- assertThat(mSharedPreferences.getInt(USER_ID_KEY, -1)).isEqualTo(0);
- assertThat(mSharedPreferences.getLong(TIMESTAMP_KEY, -1)).isEqualTo(10000L);
- }
-}
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 cfc9e93..3eab600 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
@@ -151,12 +151,6 @@
}
@Test
- public void testUpdateStateWithInitialState() {
- assertThat(mPreference.getSummary().toString())
- .isEqualTo(mContext.getString(R.string.memory_calculating_size));
- }
-
- @Test
public void launchPublicStorageIntent_nonNullBrowseIntent_settingsIntent() {
final String fakeBrowseAction = "FAKE_BROWSE_ACTION";
final Intent fakeBrowseIntent = new Intent(fakeBrowseAction);
@@ -398,16 +392,17 @@
}
@Test
- public void setVolume_updateFilePreferenceToHideAfterSettingVolume_hidePreference() {
+ public void setPrivateStorageCategoryPreferencesVisibility_updateFilePreferenceToHideAfterSettingVolume_hidePreference() {
when(mSvp.findEmulatedForPrivate(nullable(VolumeInfo.class))).thenReturn(mVolume);
when(mVolume.getType()).thenReturn(VolumeInfo.TYPE_PRIVATE);
when(mVolume.getState()).thenReturn(VolumeInfo.STATE_MOUNTED);
when(mVolume.isMountedReadable()).thenReturn(true);
-
mController.displayPreference(mPreferenceScreen);
when(mSvp.findEmulatedForPrivate(nullable(VolumeInfo.class))).thenReturn(null);
mController.setVolume(mVolume);
+ mController.setPrivateStorageCategoryPreferencesVisibility(true);
+
assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isFalse();
}