diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-12-10 19:58:51 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-12-10 19:58:51 +0000 |
commit | c10004fe32a6411a74f8559b4354f254c68861b7 (patch) | |
tree | 2b2abf2e91e225acd3655396fdc26860b4b2af98 /services/usage/java | |
parent | 8a9a1f99ba7866dc838f5ebe2e5cbf176561e5c3 (diff) | |
parent | 6b993a7408b64e9bf09cfa1a626f94752d6ed7f0 (diff) |
Merge "Ensure UsageStats data is read correctly."
Diffstat (limited to 'services/usage/java')
-rw-r--r-- | services/usage/java/com/android/server/usage/UsageStatsDatabase.java | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/services/usage/java/com/android/server/usage/UsageStatsDatabase.java b/services/usage/java/com/android/server/usage/UsageStatsDatabase.java index 1996dd4f6545..ef9a73b794f7 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsDatabase.java +++ b/services/usage/java/com/android/server/usage/UsageStatsDatabase.java @@ -229,8 +229,8 @@ public class UsageStatsDatabase { } try { - IntervalStats stats = new IntervalStats(); for (int i = start; i < fileCount - 1; i++) { + final IntervalStats stats = new IntervalStats(); readLocked(files.valueAt(i), stats); if (!checkinAction.checkin(stats)) { return false; @@ -848,10 +848,10 @@ public class UsageStatsDatabase { } } - final IntervalStats stats = new IntervalStats(); final ArrayList<T> results = new ArrayList<>(); for (int i = startIndex; i <= endIndex; i++) { final AtomicFile f = intervalStats.valueAt(i); + final IntervalStats stats = new IntervalStats(); if (DEBUG) { Slog.d(TAG, "Reading stat file " + f.getBaseFile().getAbsolutePath()); @@ -1061,6 +1061,11 @@ public class UsageStatsDatabase { } } + /** + * Note: the data read from the given file will add to the IntervalStats object passed into this + * method. It is up to the caller to ensure that this is the desired behavior - if not, the + * caller should ensure that the data in the reused object is being cleared. + */ private void readLocked(AtomicFile file, IntervalStats statsOut) throws IOException, RuntimeException { if (mCurrentVersion <= 3) { @@ -1072,6 +1077,10 @@ public class UsageStatsDatabase { /** * Returns {@code true} if any stats were omitted while reading, {@code false} otherwise. + * <p/> + * Note: the data read from the given file will add to the IntervalStats object passed into this + * method. It is up to the caller to ensure that this is the desired behavior - if not, the + * caller should ensure that the data in the reused object is being cleared. */ private static boolean readLocked(AtomicFile file, IntervalStats statsOut, int version, PackagesTokenData packagesTokenData) throws IOException, RuntimeException { @@ -1098,6 +1107,10 @@ public class UsageStatsDatabase { /** * Returns {@code true} if any stats were omitted while reading, {@code false} otherwise. + * <p/> + * Note: the data read from the given file will add to the IntervalStats object passed into this + * method. It is up to the caller to ensure that this is the desired behavior - if not, the + * caller should ensure that the data in the reused object is being cleared. */ private static boolean readLocked(InputStream in, IntervalStats statsOut, int version, PackagesTokenData packagesTokenData) throws RuntimeException { |