summaryrefslogtreecommitdiff
path: root/services/usage/java
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-03-15 07:16:40 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-03-15 07:16:43 +0000
commitd3b1def2ebe1821212b9f110dff2fb0b15491e1b (patch)
treec58b7572953114a8c6fa615a2902cebe04716ec9 /services/usage/java
parenta98767ab7fdf94e2e677c583e931b2868d93f43c (diff)
parente730ae877a24d44f5b3db096f08b0a2d7399aa2d (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.java20
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;
}
}