Merge "Fake data to be 0B after clearing." into oc-dev
diff --git a/src/com/android/settings/applications/AppStorageSettings.java b/src/com/android/settings/applications/AppStorageSettings.java
index 0676f56..5ad5e48 100644
--- a/src/com/android/settings/applications/AppStorageSettings.java
+++ b/src/com/android/settings/applications/AppStorageSettings.java
@@ -99,6 +99,7 @@
private static final String KEY_CLEAR_URI = "clear_uri_button";
private static final String KEY_CACHE_CLEARED = "cache_cleared";
+ private static final String KEY_DATA_CLEARED = "data_cleared";
// Views related to cache info
private Preference mCacheSize;
@@ -115,6 +116,7 @@
private boolean mCanClearData = true;
private boolean mCacheCleared;
+ private boolean mDataCleared;
private AppStorageSizesController mSizeController;
@@ -130,6 +132,8 @@
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mCacheCleared = savedInstanceState.getBoolean(KEY_CACHE_CLEARED, false);
+ mDataCleared = savedInstanceState.getBoolean(KEY_DATA_CLEARED, false);
+ mCacheCleared = mCacheCleared || mDataCleared;
}
addPreferencesFromResource(R.xml.app_storage_settings);
@@ -147,6 +151,7 @@
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean(KEY_CACHE_CLEARED, mCacheCleared);
+ outState.putBoolean(KEY_DATA_CLEARED, mDataCleared);
}
private void setupViews() {
@@ -527,6 +532,9 @@
if (mCacheCleared) {
mSizeController.setCacheCleared(true);
}
+ if (mDataCleared) {
+ mSizeController.setDataCleared(true);
+ }
mSizeController.updateUi(getContext());
@@ -538,7 +546,7 @@
long dataSize = result.getDataBytes();
long cacheSize = result.getCacheBytes();
- if (dataSize <= 0 || !mCanClearData) {
+ if (dataSize <= 0 || !mCanClearData || mDataCleared) {
mClearDataButton.setEnabled(false);
} else {
mClearDataButton.setEnabled(true);
@@ -564,6 +572,8 @@
}
switch (msg.what) {
case MSG_CLEAR_USER_DATA:
+ mDataCleared = true;
+ mCacheCleared = true;
processClearMsg(msg);
break;
case MSG_CLEAR_CACHE:
diff --git a/src/com/android/settings/applications/AppStorageSizesController.java b/src/com/android/settings/applications/AppStorageSizesController.java
index 23a3eb2..45ece6e 100644
--- a/src/com/android/settings/applications/AppStorageSizesController.java
+++ b/src/com/android/settings/applications/AppStorageSizesController.java
@@ -40,6 +40,7 @@
private StorageStatsSource.AppStorageStats mLastResult;
private boolean mLastResultFailed;
private boolean mCachedCleared;
+ private boolean mDataCleared;
private long mLastCodeSize = -1;
private long mLastDataSize = -1;
private long mLastCacheSize = -1;
@@ -69,7 +70,7 @@
mTotalSize.setSummary(errorRes);
} else {
long codeSize = mLastResult.getCodeBytes();
- long dataSize = mLastResult.getDataBytes();
+ long dataSize = mDataCleared ? 0 : mLastResult.getDataBytes();
if (mLastCodeSize != codeSize) {
mLastCodeSize = codeSize;
mAppSize.setSummary(getSizeStr(context, codeSize));
@@ -78,7 +79,7 @@
mLastDataSize = dataSize;
mDataSize.setSummary(getSizeStr(context, dataSize));
}
- long cacheSize = mCachedCleared ? 0 : mLastResult.getCacheBytes();
+ long cacheSize = (mDataCleared || mCachedCleared) ? 0 : mLastResult.getCacheBytes();
if (mLastCacheSize != cacheSize) {
mLastCacheSize = cacheSize;
mCacheSize.setSummary(getSizeStr(context, cacheSize));
@@ -111,6 +112,15 @@
}
/**
+ * Sets if we have cleared data and should zero the data bytes.
+ * When the data is cleared, the directory are recreated. Directories have some size, but are
+ * empty. We zero this out to best match user expectations.
+ */
+ public void setDataCleared(boolean isCleared) {
+ mDataCleared = isCleared;
+ }
+
+ /**
* Returns the last result calculated, if it exists. If it does not, returns null.
*/
public StorageStatsSource.AppStorageStats getLastResult() {
diff --git a/tests/robotests/src/com/android/settings/applications/AppStorageSizesControllerTest.java b/tests/robotests/src/com/android/settings/applications/AppStorageSizesControllerTest.java
index 127100f..36d78c1 100644
--- a/tests/robotests/src/com/android/settings/applications/AppStorageSizesControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/AppStorageSizesControllerTest.java
@@ -110,4 +110,22 @@
assertThat(mDataPreference.getSummary()).isEqualTo("100B");
assertThat(mTotalPreference.getSummary()).isEqualTo("101B");
}
+
+ @Test
+ public void fakeDataFlagSetsDataAndCacheToZero() {
+ AppStorageStats result = mock(AppStorageStats.class);
+ when(result.getCodeBytes()).thenReturn(1L);
+ when(result.getCacheBytes()).thenReturn(10L);
+ when(result.getDataBytes()).thenReturn(100L);
+ when(result.getTotalBytes()).thenReturn(111L);
+
+ mController.setResult(result);
+ mController.setDataCleared(true);
+ mController.updateUi(mContext);
+
+ assertThat(mAppPreference.getSummary()).isEqualTo("1.00B");
+ assertThat(mCachePreference.getSummary()).isEqualTo("0.00B");
+ assertThat(mDataPreference.getSummary()).isEqualTo("0.00B");
+ assertThat(mTotalPreference.getSummary()).isEqualTo("1.00B");
+ }
}