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

Commit 6f92b661 authored by Daniel Nishi's avatar Daniel Nishi
Browse files

Fix a bug where cache was double-counted.

Cache was being counted as cache and also as data in the app info page.
This is due to a faulty assumption I made that getDataBytes() and
getCacheBytes() measured distinct areas of storage (in actuality,
getCacheBytes() is a subset of getDataBytes()). This improper assumption
also led to the unit test being incorrect.

Change-Id: I4144d50800f82feaecb7a0a8dff26be3e4f14da8
Fixes: 62182151
Test: Settings robotest & manual
parent 552e3c4d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -543,8 +543,8 @@ public class AppStorageSettings extends AppInfoWithHeader
            mClearCacheButton.setEnabled(false);
        } else {
            long codeSize = result.getCodeBytes();
            long dataSize = result.getDataBytes();
            long cacheSize = result.getCacheBytes();
            long dataSize = result.getDataBytes() - cacheSize;

            if (dataSize <= 0 || !mCanClearData || mDataCleared) {
                mClearDataButton.setEnabled(false);
+2 −1
Original line number Diff line number Diff line
@@ -70,7 +70,8 @@ public class AppStorageSizesController {
            mTotalSize.setSummary(errorRes);
        } else {
            long codeSize = mLastResult.getCodeBytes();
            long dataSize = mDataCleared ? 0 : mLastResult.getDataBytes();
            long dataSize =
                    mDataCleared ? 0 : mLastResult.getDataBytes() - mLastResult.getCacheBytes();
            if (mLastCodeSize != codeSize) {
                mLastCodeSize = codeSize;
                mAppSize.setSummary(getSizeStr(context, codeSize));
+7 −9
Original line number Diff line number Diff line
@@ -14,11 +14,9 @@ import com.android.settings.TestConfig;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;

import com.android.settings.R;
import com.android.settingslib.applications.StorageStatsSource.AppStorageStats;
@@ -82,15 +80,15 @@ public class AppStorageSizesControllerTest {
        when(result.getCodeBytes()).thenReturn(1L);
        when(result.getCacheBytes()).thenReturn(10L);
        when(result.getDataBytes()).thenReturn(100L);
        when(result.getTotalBytes()).thenReturn(111L);
        when(result.getTotalBytes()).thenReturn(101L);

        mController.setResult(result);
        mController.updateUi(mContext);

        assertThat(mAppPreference.getSummary()).isEqualTo("1.00B");
        assertThat(mCachePreference.getSummary()).isEqualTo("10.00B");
        assertThat(mDataPreference.getSummary()).isEqualTo("100B");
        assertThat(mTotalPreference.getSummary()).isEqualTo("111B");
        assertThat(mDataPreference.getSummary()).isEqualTo("90.00B");
        assertThat(mTotalPreference.getSummary()).isEqualTo("101B");
    }

    @Test
@@ -99,7 +97,7 @@ public class AppStorageSizesControllerTest {
        when(result.getCodeBytes()).thenReturn(1L);
        when(result.getCacheBytes()).thenReturn(10L);
        when(result.getDataBytes()).thenReturn(100L);
        when(result.getTotalBytes()).thenReturn(111L);
        when(result.getTotalBytes()).thenReturn(101L);

        mController.setResult(result);
        mController.setCacheCleared(true);
@@ -107,8 +105,8 @@ public class AppStorageSizesControllerTest {

        assertThat(mAppPreference.getSummary()).isEqualTo("1.00B");
        assertThat(mCachePreference.getSummary()).isEqualTo("0.00B");
        assertThat(mDataPreference.getSummary()).isEqualTo("100B");
        assertThat(mTotalPreference.getSummary()).isEqualTo("101B");
        assertThat(mDataPreference.getSummary()).isEqualTo("90.00B");
        assertThat(mTotalPreference.getSummary()).isEqualTo("91.00B");
    }

    @Test
@@ -117,7 +115,7 @@ public class AppStorageSizesControllerTest {
        when(result.getCodeBytes()).thenReturn(1L);
        when(result.getCacheBytes()).thenReturn(10L);
        when(result.getDataBytes()).thenReturn(100L);
        when(result.getTotalBytes()).thenReturn(111L);
        when(result.getTotalBytes()).thenReturn(101L);

        mController.setResult(result);
        mController.setDataCleared(true);