diff options
author | 2022-06-16 18:03:26 +0000 | |
---|---|---|
committer | 2022-06-16 18:03:26 +0000 | |
commit | 25019b37821465ed48a0a07b8263fafa5591c692 (patch) | |
tree | a6299b6a6f8595f31fc656cdf0f4347b6ed68195 | |
parent | db243f1fe12236419581e9fbd33ebaef2c53a626 (diff) | |
parent | ae5e234ceccbe49f26d9608e77dfbdfcd2591c02 (diff) |
Merge "Fix the missing history event problem." into tm-dev
-rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 9 | ||||
-rw-r--r-- | core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryIteratorTest.java | 16 |
2 files changed, 15 insertions, 10 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 6829f3da5717..98d4c5976adc 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -4503,10 +4503,13 @@ public class BatteryStatsImpl extends BatteryStats { for (Map.Entry<HistoryTag, Integer> entry: mHistoryTagPool.entrySet()) { entry.setValue(entry.getValue() | TAG_FIRST_OCCURRENCE_FLAG); } + // Make a copy of mHistoryCur. + HistoryItem copy = new HistoryItem(); + copy.setTo(cur); + // startRecordingHistory will reset mHistoryCur. startRecordingHistory(elapsedRealtimeMs, uptimeMs, false); - HistoryItem newItem = new HistoryItem(); - newItem.setTo(cur); - addHistoryBufferLocked(elapsedRealtimeMs, HistoryItem.CMD_UPDATE, newItem); + // Add the copy into history buffer. + addHistoryBufferLocked(elapsedRealtimeMs, HistoryItem.CMD_UPDATE, copy); return; } diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryIteratorTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryIteratorTest.java index 385879210d4a..dd0e9ff8b5e8 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryIteratorTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryIteratorTest.java @@ -154,19 +154,21 @@ public class BatteryStatsHistoryIteratorTest { for (int i = 0; i < eventCount; i++) { String name = "a" + (i % 10); - assertThat(iterator.next(item)).isTrue(); - // Skip a blank event inserted at the start of every buffer - if (item.eventCode == BatteryStats.HistoryItem.EVENT_NONE) { + do { assertThat(iterator.next(item)).isTrue(); - } + // Skip a blank event inserted at the start of every buffer + } while (item.cmd != BatteryStats.HistoryItem.CMD_UPDATE + || item.eventCode == BatteryStats.HistoryItem.EVENT_NONE); + assertThat(item.eventCode).isEqualTo(BatteryStats.HistoryItem.EVENT_ALARM | BatteryStats.HistoryItem.EVENT_FLAG_START); assertThat(item.eventTag.string).isEqualTo(name); - assertThat(iterator.next(item)).isTrue(); - if (item.eventCode == BatteryStats.HistoryItem.EVENT_NONE) { + do { assertThat(iterator.next(item)).isTrue(); - } + } while (item.cmd != BatteryStats.HistoryItem.CMD_UPDATE + || item.eventCode == BatteryStats.HistoryItem.EVENT_NONE); + assertThat(item.eventCode).isEqualTo(BatteryStats.HistoryItem.EVENT_ALARM | BatteryStats.HistoryItem.EVENT_FLAG_FINISH); assertThat(item.eventTag.string).isEqualTo(name); |