diff options
| author | 2017-03-15 07:16:40 +0000 | |
|---|---|---|
| committer | 2017-03-15 07:16:43 +0000 | |
| commit | d3b1def2ebe1821212b9f110dff2fb0b15491e1b (patch) | |
| tree | c58b7572953114a8c6fa615a2902cebe04716ec9 /services/usage/java | |
| parent | a98767ab7fdf94e2e677c583e931b2868d93f43c (diff) | |
| parent | e730ae877a24d44f5b3db096f08b0a2d7399aa2d (diff) | |
Merge "Enable cache clearing v2 logic, fix bugs."
Diffstat (limited to 'services/usage/java')
| -rw-r--r-- | services/usage/java/com/android/server/usage/StorageStatsService.java | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/services/usage/java/com/android/server/usage/StorageStatsService.java b/services/usage/java/com/android/server/usage/StorageStatsService.java index ecc2b7f0577a..169cf4d750d5 100644 --- a/services/usage/java/com/android/server/usage/StorageStatsService.java +++ b/services/usage/java/com/android/server/usage/StorageStatsService.java @@ -105,7 +105,7 @@ public class StorageStatsService extends IStorageStatsManager.Stub { invalidateMounts(); mHandler = new H(IoThread.get().getLooper()); - mHandler.sendEmptyMessageDelayed(H.MSG_LOAD_CACHED_QUOTAS_FROM_FILE, DELAY_IN_MILLIS); + mHandler.sendEmptyMessage(H.MSG_LOAD_CACHED_QUOTAS_FROM_FILE); mStorage.registerListener(new StorageEventListener() { @Override @@ -137,7 +137,8 @@ public class StorageStatsService extends IStorageStatsManager.Stub { android.Manifest.permission.PACKAGE_USAGE_STATS, TAG); return; default: - throw new SecurityException("Blocked by mode " + mode); + throw new SecurityException("Package " + callingPackage + " from UID " + callingUid + + " blocked by mode " + mode); } } @@ -169,16 +170,21 @@ public class StorageStatsService extends IStorageStatsManager.Stub { enforcePermission(Binder.getCallingUid(), callingPackage); long cacheBytes = 0; - for (UserInfo user : mUser.getUsers()) { - final StorageStats stats = queryStatsForUser(volumeUuid, user.id, null); - cacheBytes += stats.cacheBytes; + final long token = Binder.clearCallingIdentity(); + try { + for (UserInfo user : mUser.getUsers()) { + final StorageStats stats = queryStatsForUser(volumeUuid, user.id, null); + cacheBytes += stats.cacheBytes; + } + } finally { + Binder.restoreCallingIdentity(token); } if (volumeUuid == StorageManager.UUID_PRIVATE_INTERNAL) { - return Environment.getDataDirectory().getFreeSpace() + cacheBytes; + return Environment.getDataDirectory().getUsableSpace() + cacheBytes; } else { final VolumeInfo vol = mStorage.findVolumeByUuid(volumeUuid); - return vol.getPath().getFreeSpace() + cacheBytes; + return vol.getPath().getUsableSpace() + cacheBytes; } } |