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

Commit 313ab172 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

Fix issue #6761130: Clearing app data in settings does not clear app's USB storage

The installed app details was not correctly distinguishing between cache and
normal data on external storage.  The cache files on external storage are now
correctly shown in the cache section, since those are what get deleted when
you hit the clear cache button.

Change-Id: Id98bdb7fb5202d6a092fe5a772638eeb6aed2b47
parent beb3d8b1
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -73,6 +73,16 @@ public class ApplicationsState {
        long dataSize;
        long externalCodeSize;
        long externalDataSize;

        // This is the part of externalDataSize that is in the cache
        // section of external storage.  Note that we don't just combine
        // this with cacheSize because currently the platform can't
        // automatically trim this data when needed, so it is something
        // the user may need to manage.  The externalDataSize also includes
        // this value, since what this is here is really the part of
        // externalDataSize that we can just consider to be "cache" files
        // for purposes of cleaning them up in the app details UI.
        long externalCacheSize;
    }
    
    public static class AppEntry extends SizeInfo {
@@ -820,13 +830,15 @@ public class ApplicationsState {
                                    entry.codeSize != stats.codeSize ||
                                    entry.dataSize != stats.dataSize ||
                                    entry.externalCodeSize != externalCodeSize ||
                                    entry.externalDataSize != externalDataSize) {
                                    entry.externalDataSize != externalDataSize ||
                                    entry.externalCacheSize != stats.externalCacheSize) {
                                entry.size = newSize;
                                entry.cacheSize = stats.cacheSize;
                                entry.codeSize = stats.codeSize;
                                entry.dataSize = stats.dataSize;
                                entry.externalCodeSize = externalCodeSize;
                                entry.externalDataSize = externalDataSize;
                                entry.externalCacheSize = stats.externalCacheSize;
                                entry.sizeStr = getSizeStr(entry.size);
                                entry.internalSize = getTotalInternalSize(stats);
                                entry.internalSizeStr = getSizeStr(entry.internalSize);
+12 −10
Original line number Diff line number Diff line
@@ -394,8 +394,8 @@ public class InstalledAppDetails extends Fragment
        
        // Initialize clear data and move install location buttons
        View data_buttons_panel = view.findViewById(R.id.data_buttons_panel);
        mClearDataButton = (Button) data_buttons_panel.findViewById(R.id.left_button);
        mMoveAppButton = (Button) data_buttons_panel.findViewById(R.id.right_button);
        mClearDataButton = (Button) data_buttons_panel.findViewById(R.id.right_button);
        mMoveAppButton = (Button) data_buttons_panel.findViewById(R.id.left_button);
        
        // Cache section
        mCacheSize = (TextView) view.findViewById(R.id.cache_size_text);
@@ -687,26 +687,28 @@ public class InstalledAppDetails extends Fragment
                mLastExternalCodeSize = mAppEntry.externalCodeSize;
                mExternalCodeSize.setText(getSizeStr(mAppEntry.externalCodeSize));
            }
            if (mLastExternalDataSize != mAppEntry.externalDataSize) {
                mLastExternalDataSize = mAppEntry.externalDataSize;
                mExternalDataSize.setText(getSizeStr(mAppEntry.externalDataSize));
            long nonCacheExtDataSize = mAppEntry.externalDataSize - mAppEntry.externalCacheSize;
            if (mLastExternalDataSize != nonCacheExtDataSize) {
                mLastExternalDataSize = nonCacheExtDataSize;
                mExternalDataSize.setText(getSizeStr(nonCacheExtDataSize));
            }
            if (mLastCacheSize != mAppEntry.cacheSize) {
                mLastCacheSize = mAppEntry.cacheSize;
                mCacheSize.setText(getSizeStr(mAppEntry.cacheSize));
            long cacheSize = mAppEntry.cacheSize + mAppEntry.externalCacheSize;
            if (mLastCacheSize != cacheSize) {
                mLastCacheSize = cacheSize;
                mCacheSize.setText(getSizeStr(cacheSize));
            }
            if (mLastTotalSize != mAppEntry.size) {
                mLastTotalSize = mAppEntry.size;
                mTotalSize.setText(getSizeStr(mAppEntry.size));
            }
            
            if (mAppEntry.dataSize <= 0 || !mCanClearData) {
            if ((mAppEntry.dataSize+nonCacheExtDataSize) <= 0 || !mCanClearData) {
                mClearDataButton.setEnabled(false);
            } else {
                mClearDataButton.setEnabled(true);
                mClearDataButton.setOnClickListener(this);
            }
            if (mAppEntry.cacheSize <= 0) {
            if (cacheSize <= 0) {
                mClearCacheButton.setEnabled(false);
            } else {
                mClearCacheButton.setEnabled(true);