Migrate to AppStorageRepository

Bug: 321861088
Flag: EXEMPT bug fix
Test: manual - on All apps and App info
Test: atest AppStorageSizesControllerTest
Test: atest AppStoragePreferenceTest
Change-Id: I3143de720493cb09854621b115d07e76bebf6699
This commit is contained in:
Chaohui Wang
2025-01-09 14:38:11 +08:00
parent 44e13bf11e
commit 7e8e683e60
4 changed files with 25 additions and 27 deletions

View File

@@ -17,7 +17,6 @@
package com.android.settings.applications; package com.android.settings.applications;
import android.content.Context; import android.content.Context;
import android.text.format.Formatter;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
@@ -25,6 +24,7 @@ import androidx.preference.Preference;
import com.android.internal.util.Preconditions; import com.android.internal.util.Preconditions;
import com.android.settingslib.applications.StorageStatsSource; import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.spaprivileged.model.app.AppStorageRepositoryImpl;
/** /**
* Handles setting the sizes for the app info screen. * Handles setting the sizes for the app info screen.
@@ -70,27 +70,28 @@ public class AppStorageSizesController {
mCacheSize.setSummary(errorRes); mCacheSize.setSummary(errorRes);
mTotalSize.setSummary(errorRes); mTotalSize.setSummary(errorRes);
} else { } else {
var appStorageRepository = new AppStorageRepositoryImpl(context);
long codeSize = mLastResult.getCodeBytes(); long codeSize = mLastResult.getCodeBytes();
long dataSize = long dataSize =
mDataCleared ? 0 : mLastResult.getDataBytes() - mLastResult.getCacheBytes(); mDataCleared ? 0 : mLastResult.getDataBytes() - mLastResult.getCacheBytes();
if (mLastCodeSize != codeSize) { if (mLastCodeSize != codeSize) {
mLastCodeSize = codeSize; mLastCodeSize = codeSize;
mAppSize.setSummary(getSizeStr(context, codeSize)); mAppSize.setSummary(appStorageRepository.formatSizeBytes(codeSize));
} }
if (mLastDataSize != dataSize) { if (mLastDataSize != dataSize) {
mLastDataSize = dataSize; mLastDataSize = dataSize;
mDataSize.setSummary(getSizeStr(context, dataSize)); mDataSize.setSummary(appStorageRepository.formatSizeBytes(dataSize));
} }
long cacheSize = (mDataCleared || mCachedCleared) ? 0 : mLastResult.getCacheBytes(); long cacheSize = (mDataCleared || mCachedCleared) ? 0 : mLastResult.getCacheBytes();
if (mLastCacheSize != cacheSize) { if (mLastCacheSize != cacheSize) {
mLastCacheSize = cacheSize; mLastCacheSize = cacheSize;
mCacheSize.setSummary(getSizeStr(context, cacheSize)); mCacheSize.setSummary(appStorageRepository.formatSizeBytes(cacheSize));
} }
long totalSize = codeSize + dataSize + cacheSize; long totalSize = codeSize + dataSize + cacheSize;
if (mLastTotalSize != totalSize) { if (mLastTotalSize != totalSize) {
mLastTotalSize = totalSize; mLastTotalSize = totalSize;
mTotalSize.setSummary(getSizeStr(context, totalSize)); mTotalSize.setSummary(appStorageRepository.formatSizeBytes(totalSize));
} }
} }
} }
@@ -129,10 +130,6 @@ public class AppStorageSizesController {
return mLastResult; return mLastResult;
} }
private String getSizeStr(Context context, long size) {
return Formatter.formatFileSize(context, size);
}
public static class Builder { public static class Builder {
private Preference mTotalSize; private Preference mTotalSize;
private Preference mAppSize; private Preference mAppSize;

View File

@@ -34,12 +34,12 @@ import com.android.settingslib.spa.framework.util.mapItem
import com.android.settingslib.spaprivileged.model.app.AppEntry import com.android.settingslib.spaprivileged.model.app.AppEntry
import com.android.settingslib.spaprivileged.model.app.AppListModel import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.AppStorageRepositoryImpl
import com.android.settingslib.spaprivileged.template.app.AppList import com.android.settingslib.spaprivileged.template.app.AppList
import com.android.settingslib.spaprivileged.template.app.AppListInput import com.android.settingslib.spaprivileged.template.app.AppListInput
import com.android.settingslib.spaprivileged.template.app.AppListItem import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListItemModel import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import com.android.settingslib.spaprivileged.template.app.AppListPage import com.android.settingslib.spaprivileged.template.app.AppListPage
import com.android.settingslib.spaprivileged.template.app.calculateSizeBytes
import com.android.settingslib.spaprivileged.template.app.getStorageSize import com.android.settingslib.spaprivileged.template.app.getStorageSize
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@@ -109,9 +109,11 @@ class StorageAppListModel(
getStorageSize() getStorageSize()
} }
) : AppListModel<AppRecordWithSize> { ) : AppListModel<AppRecordWithSize> {
private val appStorageRepository = AppStorageRepositoryImpl(context)
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) = override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
appListFlow.mapItem { appListFlow.mapItem { app ->
AppRecordWithSize(it, it.calculateSizeBytes(context) ?: 0L) AppRecordWithSize(app, appStorageRepository.calculateSizeBytes(app) ?: 0L)
} }
override fun filter( override fun filter(

View File

@@ -83,10 +83,10 @@ public class AppStorageSizesControllerTest {
mController.setResult(result); mController.setResult(result);
mController.updateUi(mContext); mController.updateUi(mContext);
assertThat(mAppPreference.getSummary()).isEqualTo("1 B"); assertThat(mAppPreference.getSummary()).isEqualTo("1 byte");
assertThat(mCachePreference.getSummary()).isEqualTo("10 B"); assertThat(mCachePreference.getSummary()).isEqualTo("10 byte");
assertThat(mDataPreference.getSummary()).isEqualTo("90 B"); assertThat(mDataPreference.getSummary()).isEqualTo("90 byte");
assertThat(mTotalPreference.getSummary()).isEqualTo("101 B"); assertThat(mTotalPreference.getSummary()).isEqualTo("101 byte");
} }
@Test @Test
@@ -101,10 +101,10 @@ public class AppStorageSizesControllerTest {
mController.setCacheCleared(true); mController.setCacheCleared(true);
mController.updateUi(mContext); mController.updateUi(mContext);
assertThat(mAppPreference.getSummary()).isEqualTo("1 B"); assertThat(mAppPreference.getSummary()).isEqualTo("1 byte");
assertThat(mCachePreference.getSummary()).isEqualTo("0 B"); assertThat(mCachePreference.getSummary()).isEqualTo("0 byte");
assertThat(mDataPreference.getSummary()).isEqualTo("90 B"); assertThat(mDataPreference.getSummary()).isEqualTo("90 byte");
assertThat(mTotalPreference.getSummary()).isEqualTo("91 B"); assertThat(mTotalPreference.getSummary()).isEqualTo("91 byte");
} }
@Test @Test
@@ -119,9 +119,9 @@ public class AppStorageSizesControllerTest {
mController.setDataCleared(true); mController.setDataCleared(true);
mController.updateUi(mContext); mController.updateUi(mContext);
assertThat(mAppPreference.getSummary()).isEqualTo("1 B"); assertThat(mAppPreference.getSummary()).isEqualTo("1 byte");
assertThat(mCachePreference.getSummary()).isEqualTo("0 B"); assertThat(mCachePreference.getSummary()).isEqualTo("0 byte");
assertThat(mDataPreference.getSummary()).isEqualTo("0 B"); assertThat(mDataPreference.getSummary()).isEqualTo("0 byte");
assertThat(mTotalPreference.getSummary()).isEqualTo("1 B"); assertThat(mTotalPreference.getSummary()).isEqualTo("1 byte");
} }
} }

View File

@@ -89,7 +89,7 @@ class AppStoragePreferenceTest {
composeTestRule.onNodeWithText(context.getString(R.string.storage_settings_for_app)) composeTestRule.onNodeWithText(context.getString(R.string.storage_settings_for_app))
.assertIsDisplayed() .assertIsDisplayed()
composeTestRule.waitUntilExists(hasText("120 B used in internal storage")) composeTestRule.waitUntilExists(hasText("120 byte used in internal storage"))
} }
@Test @Test
@@ -104,7 +104,7 @@ class AppStoragePreferenceTest {
composeTestRule.onNodeWithText(context.getString(R.string.storage_settings_for_app)) composeTestRule.onNodeWithText(context.getString(R.string.storage_settings_for_app))
.assertIsDisplayed() .assertIsDisplayed()
composeTestRule.waitUntilExists(hasText("120 B used in external storage")) composeTestRule.waitUntilExists(hasText("120 byte used in external storage"))
} }
private fun setContent(app: ApplicationInfo) { private fun setContent(app: ApplicationInfo) {
@@ -122,7 +122,6 @@ class AppStoragePreferenceTest {
private val STATS = StorageStats().apply { private val STATS = StorageStats().apply {
codeBytes = 100 codeBytes = 100
dataBytes = 20 dataBytes = 20
cacheBytes = 3
} }
} }
} }