Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e8e683e authored by Chaohui Wang's avatar Chaohui Wang
Browse files

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
parent 44e13bf1
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.settings.applications;

import android.content.Context;
import android.text.format.Formatter;

import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
@@ -25,6 +24,7 @@ import androidx.preference.Preference;

import com.android.internal.util.Preconditions;
import com.android.settingslib.applications.StorageStatsSource;
import com.android.settingslib.spaprivileged.model.app.AppStorageRepositoryImpl;

/**
 * Handles setting the sizes for the app info screen.
@@ -70,27 +70,28 @@ public class AppStorageSizesController {
            mCacheSize.setSummary(errorRes);
            mTotalSize.setSummary(errorRes);
        } else {
            var appStorageRepository = new AppStorageRepositoryImpl(context);
            long codeSize = mLastResult.getCodeBytes();
            long dataSize =
                    mDataCleared ? 0 : mLastResult.getDataBytes() - mLastResult.getCacheBytes();
            if (mLastCodeSize != codeSize) {
                mLastCodeSize = codeSize;
                mAppSize.setSummary(getSizeStr(context, codeSize));
                mAppSize.setSummary(appStorageRepository.formatSizeBytes(codeSize));
            }
            if (mLastDataSize != dataSize) {
                mLastDataSize = dataSize;
                mDataSize.setSummary(getSizeStr(context, dataSize));
                mDataSize.setSummary(appStorageRepository.formatSizeBytes(dataSize));
            }
            long cacheSize = (mDataCleared || mCachedCleared) ? 0 : mLastResult.getCacheBytes();
            if (mLastCacheSize != cacheSize) {
                mLastCacheSize = cacheSize;
                mCacheSize.setSummary(getSizeStr(context, cacheSize));
                mCacheSize.setSummary(appStorageRepository.formatSizeBytes(cacheSize));
            }

            long totalSize = codeSize + dataSize + cacheSize;
            if (mLastTotalSize != totalSize) {
                mLastTotalSize = totalSize;
                mTotalSize.setSummary(getSizeStr(context, totalSize));
                mTotalSize.setSummary(appStorageRepository.formatSizeBytes(totalSize));
            }
        }
    }
@@ -129,10 +130,6 @@ public class AppStorageSizesController {
        return mLastResult;
    }

    private String getSizeStr(Context context, long size) {
        return Formatter.formatFileSize(context, size);
    }

    public static class Builder {
        private Preference mTotalSize;
        private Preference mAppSize;
+5 −3
Original line number Diff line number Diff line
@@ -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.AppListModel
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.AppListInput
import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListItemModel
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 kotlinx.coroutines.flow.Flow

@@ -109,9 +109,11 @@ class StorageAppListModel(
        getStorageSize()
    }
) : AppListModel<AppRecordWithSize> {
    private val appStorageRepository = AppStorageRepositoryImpl(context)

    override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
        appListFlow.mapItem {
            AppRecordWithSize(it, it.calculateSizeBytes(context) ?: 0L)
        appListFlow.mapItem { app ->
            AppRecordWithSize(app, appStorageRepository.calculateSizeBytes(app) ?: 0L)
        }

    override fun filter(
+12 −12
Original line number Diff line number Diff line
@@ -83,10 +83,10 @@ public class AppStorageSizesControllerTest {
        mController.setResult(result);
        mController.updateUi(mContext);

        assertThat(mAppPreference.getSummary()).isEqualTo("1 B");
        assertThat(mCachePreference.getSummary()).isEqualTo("10 B");
        assertThat(mDataPreference.getSummary()).isEqualTo("90 B");
        assertThat(mTotalPreference.getSummary()).isEqualTo("101 B");
        assertThat(mAppPreference.getSummary()).isEqualTo("1 byte");
        assertThat(mCachePreference.getSummary()).isEqualTo("10 byte");
        assertThat(mDataPreference.getSummary()).isEqualTo("90 byte");
        assertThat(mTotalPreference.getSummary()).isEqualTo("101 byte");
    }

    @Test
@@ -101,10 +101,10 @@ public class AppStorageSizesControllerTest {
        mController.setCacheCleared(true);
        mController.updateUi(mContext);

        assertThat(mAppPreference.getSummary()).isEqualTo("1 B");
        assertThat(mCachePreference.getSummary()).isEqualTo("0 B");
        assertThat(mDataPreference.getSummary()).isEqualTo("90 B");
        assertThat(mTotalPreference.getSummary()).isEqualTo("91 B");
        assertThat(mAppPreference.getSummary()).isEqualTo("1 byte");
        assertThat(mCachePreference.getSummary()).isEqualTo("0 byte");
        assertThat(mDataPreference.getSummary()).isEqualTo("90 byte");
        assertThat(mTotalPreference.getSummary()).isEqualTo("91 byte");
    }

    @Test
@@ -119,9 +119,9 @@ public class AppStorageSizesControllerTest {
        mController.setDataCleared(true);
        mController.updateUi(mContext);

        assertThat(mAppPreference.getSummary()).isEqualTo("1 B");
        assertThat(mCachePreference.getSummary()).isEqualTo("0 B");
        assertThat(mDataPreference.getSummary()).isEqualTo("0 B");
        assertThat(mTotalPreference.getSummary()).isEqualTo("1 B");
        assertThat(mAppPreference.getSummary()).isEqualTo("1 byte");
        assertThat(mCachePreference.getSummary()).isEqualTo("0 byte");
        assertThat(mDataPreference.getSummary()).isEqualTo("0 byte");
        assertThat(mTotalPreference.getSummary()).isEqualTo("1 byte");
    }
}
+2 −3
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ class AppStoragePreferenceTest {

        composeTestRule.onNodeWithText(context.getString(R.string.storage_settings_for_app))
            .assertIsDisplayed()
        composeTestRule.waitUntilExists(hasText("120 B used in internal storage"))
        composeTestRule.waitUntilExists(hasText("120 byte used in internal storage"))
    }

    @Test
@@ -104,7 +104,7 @@ class AppStoragePreferenceTest {

        composeTestRule.onNodeWithText(context.getString(R.string.storage_settings_for_app))
            .assertIsDisplayed()
        composeTestRule.waitUntilExists(hasText("120 B used in external storage"))
        composeTestRule.waitUntilExists(hasText("120 byte used in external storage"))
    }

    private fun setContent(app: ApplicationInfo) {
@@ -122,7 +122,6 @@ class AppStoragePreferenceTest {
        private val STATS = StorageStats().apply {
            codeBytes = 100
            dataBytes = 20
            cacheBytes = 3
        }
    }
}