diff options
| author | 2017-09-08 23:28:14 +0000 | |
|---|---|---|
| committer | 2017-09-08 23:28:14 +0000 | |
| commit | f917c6218423201c600c252c364466be341be750 (patch) | |
| tree | b41ad6941da995a9767c5d6a30175b9589317771 | |
| parent | c83e4e96248a2c0eb5e3ed40c1185cf191425c63 (diff) | |
| parent | ea842b4e4c7d30509c4cac7023c9f9f25a9b03ae (diff) | |
Merge "Cap user-visible cache size at quota." into oc-mr1-dev
am: ea842b4e4c
Change-Id: I5e7e5b93e639166dd350701b5228088ca5f5b19b
| -rw-r--r-- | packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java index bf1bf34dc220..40c2b1f3b771 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java @@ -339,26 +339,35 @@ public class ApplicationsState { synchronized (mEntriesMap) { AppEntry entry = mEntriesMap.get(userId).get(packageName); if (entry != null && (entry.info.flags & ApplicationInfo.FLAG_INSTALLED) != 0) { - mBackgroundHandler.post(() -> { - try { - final StorageStats stats = mStats.queryStatsForPackage( - entry.info.storageUuid, packageName, UserHandle.of(userId)); - final PackageStats legacy = new PackageStats(packageName, userId); - legacy.codeSize = stats.getCodeBytes(); - legacy.dataSize = stats.getDataBytes(); - legacy.cacheSize = stats.getCacheBytes(); - try { - mBackgroundHandler.mStatsObserver.onGetStatsCompleted(legacy, true); - } catch (RemoteException ignored) { - } - } catch (NameNotFoundException | IOException e) { - Log.w(TAG, "Failed to query stats: " + e); - try { - mBackgroundHandler.mStatsObserver.onGetStatsCompleted(null, false); - } catch (RemoteException ignored) { - } - } - }); + mBackgroundHandler.post( + () -> { + try { + final StorageStats stats = + mStats.queryStatsForPackage( + entry.info.storageUuid, + packageName, + UserHandle.of(userId)); + final long cacheQuota = + mStats.getCacheQuotaBytes( + entry.info.storageUuid.toString(), entry.info.uid); + final PackageStats legacy = new PackageStats(packageName, userId); + legacy.codeSize = stats.getCodeBytes(); + legacy.dataSize = stats.getDataBytes(); + legacy.cacheSize = Math.min(stats.getCacheBytes(), cacheQuota); + try { + mBackgroundHandler.mStatsObserver.onGetStatsCompleted( + legacy, true); + } catch (RemoteException ignored) { + } + } catch (NameNotFoundException | IOException e) { + Log.w(TAG, "Failed to query stats: " + e); + try { + mBackgroundHandler.mStatsObserver.onGetStatsCompleted( + null, false); + } catch (RemoteException ignored) { + } + } + }); } if (DEBUG_LOCKING) Log.v(TAG, "...requestSize releasing lock"); } |