Loading core/java/com/android/internal/os/BatteryStatsImpl.java +6 −3 Original line number Diff line number Diff line Loading @@ -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; } Loading core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryIteratorTest.java +9 −7 Original line number Diff line number Diff line Loading @@ -154,19 +154,21 @@ public class BatteryStatsHistoryIteratorTest { for (int i = 0; i < eventCount; i++) { String name = "a" + (i % 10); do { assertThat(iterator.next(item)).isTrue(); // Skip a blank event inserted at the start of every buffer if (item.eventCode == BatteryStats.HistoryItem.EVENT_NONE) { 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_START); assertThat(item.eventTag.string).isEqualTo(name); do { assertThat(iterator.next(item)).isTrue(); if (item.eventCode == BatteryStats.HistoryItem.EVENT_NONE) { 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); Loading Loading
core/java/com/android/internal/os/BatteryStatsImpl.java +6 −3 Original line number Diff line number Diff line Loading @@ -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; } Loading
core/tests/coretests/src/com/android/internal/os/BatteryStatsHistoryIteratorTest.java +9 −7 Original line number Diff line number Diff line Loading @@ -154,19 +154,21 @@ public class BatteryStatsHistoryIteratorTest { for (int i = 0; i < eventCount; i++) { String name = "a" + (i % 10); do { assertThat(iterator.next(item)).isTrue(); // Skip a blank event inserted at the start of every buffer if (item.eventCode == BatteryStats.HistoryItem.EVENT_NONE) { 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_START); assertThat(item.eventTag.string).isEqualTo(name); do { assertThat(iterator.next(item)).isTrue(); if (item.eventCode == BatteryStats.HistoryItem.EVENT_NONE) { 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); Loading