diff --git a/services/core/java/com/android/server/display/BrightnessTracker.java b/services/core/java/com/android/server/display/BrightnessTracker.java index 88df195e8051c41498f53c4e69f47c1dd793b4e0..905c7e371294e613f54e04bd1106c0a33cdaa5ef 100644 --- a/services/core/java/com/android/server/display/BrightnessTracker.java +++ b/services/core/java/com/android/server/display/BrightnessTracker.java @@ -686,10 +686,15 @@ public class BrightnessTracker { } public ParceledListSlice getAmbientBrightnessStats(int userId) { - ArrayList stats = mAmbientBrightnessStatsTracker.getUserStats( - userId); - return (stats != null) ? new ParceledListSlice<>(stats) : new ParceledListSlice<>( - Collections.EMPTY_LIST); + if (mAmbientBrightnessStatsTracker != null) { + ArrayList stats = + mAmbientBrightnessStatsTracker.getUserStats( + userId); + if (stats != null) { + return new ParceledListSlice<>(stats); + } + } + return ParceledListSlice.emptyList(); } // Not allowed to keep the SensorEvent so used to copy the data we care about. diff --git a/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java b/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java index 92cc537ada6dd176ffee3e258cfb7806a19e7a3c..45bee6e89ddb72624f770f56022f94c27d3f231b 100644 --- a/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java +++ b/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java @@ -30,9 +30,11 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ParceledListSlice; import android.database.ContentObserver; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; +import android.hardware.display.AmbientBrightnessDayStats; import android.hardware.display.BrightnessChangeEvent; import android.os.BatteryManager; import android.os.Handler; @@ -571,6 +573,19 @@ public class BrightnessTrackerTest { assertEquals(event.batteryLevel, event2.batteryLevel, FLOAT_DELTA); } + @Test + public void testNonNullAmbientStats() { + // getAmbientBrightnessStats should return an empty list rather than null when + // tracker isn't started or hasn't collected any data. + ParceledListSlice slice = mTracker.getAmbientBrightnessStats(0); + assertNotNull(slice); + assertTrue(slice.getList().isEmpty()); + startTracker(mTracker); + slice = mTracker.getAmbientBrightnessStats(0); + assertNotNull(slice); + assertTrue(slice.getList().isEmpty()); + } + private InputStream getInputStream(String data) { return new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8)); }