From feaf08a9baadd8468afb31b4062f2573b6cac5a9 Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Thu, 2 Nov 2023 18:43:21 +0800 Subject: [PATCH] Fix full-charge timestamp lost in battery chart graph. Bug: 308917113 Fix: 308917113 Test: manual Change-Id: Ie87c72a020a3b169a25df6422ea3b456b988c14d --- .../batteryusage/db/BatteryEventDao.java | 2 +- .../batteryusage/db/BatteryEventDaoTest.java | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java index 0a6de712e2d..91ff4e80d35 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java +++ b/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDao.java @@ -43,7 +43,7 @@ public interface BatteryEventDao { /** Gets the {@link Cursor} of all recorded data after a specific timestamp. */ @Query("SELECT * FROM BatteryEventEntity" - + " WHERE timestamp > :timestamp AND batteryEventType IN (:batteryEventTypes)" + + " WHERE timestamp >= :timestamp AND batteryEventType IN (:batteryEventTypes)" + " ORDER BY timestamp DESC") Cursor getAllAfter(long timestamp, List batteryEventTypes); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDaoTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDaoTest.java index 84628670af1..3c3e3c31b98 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDaoTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/db/BatteryEventDaoTest.java @@ -149,4 +149,31 @@ public final class BatteryEventDaoTest { mBatteryEventDao.clearAll(); assertThat(mBatteryEventDao.getAll()).isEmpty(); } + + @Test + public void getAllAfter_filterTimestamp_returnExpectedResult() { + mBatteryEventDao.insert(BatteryEventEntity.newBuilder() + .setTimestamp(100L) + .setBatteryEventType(1) + .setBatteryLevel(66) + .build()); + mBatteryEventDao.insert(BatteryEventEntity.newBuilder() + .setTimestamp(200L) + .setBatteryEventType(1) + .setBatteryLevel(88) + .build()); + + final Cursor cursor = mBatteryEventDao.getAllAfter(200L, List.of(1)); + assertThat(cursor.getCount()).isEqualTo(1); + cursor.moveToFirst(); + assertThat(cursor.getLong(cursor.getColumnIndex(KEY_TIMESTAMP))) + .isEqualTo(200L); + assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_EVENT_TYPE))) + .isEqualTo(1); + assertThat(cursor.getInt(cursor.getColumnIndex(KEY_BATTERY_LEVEL))) + .isEqualTo(88); + + mBatteryEventDao.clearAll(); + assertThat(mBatteryEventDao.getAll()).isEmpty(); + } }