Loading services/core/java/com/android/server/display/BrightnessTracker.java +9 −5 Original line number Diff line number Diff line Loading @@ -282,13 +282,14 @@ public class BrightnessTracker { } Message m = mBgHandler.obtainMessage(MSG_BRIGHTNESS_CHANGED, userInitiated ? 1 : 0, 0 /*unused*/, new BrightnessChangeValues(brightness, powerBrightnessFactor, isUserSetBrightness, isDefaultBrightnessConfig)); powerBrightnessFactor, isUserSetBrightness, isDefaultBrightnessConfig, mInjector.currentTimeMillis())); m.sendToTarget(); } private void handleBrightnessChanged(float brightness, boolean userInitiated, float powerBrightnessFactor, boolean isUserSetBrightness, boolean isDefaultBrightnessConfig) { boolean isDefaultBrightnessConfig, long timestamp) { BrightnessChangeEvent.Builder builder; synchronized (mDataCollectionLock) { Loading @@ -309,7 +310,7 @@ public class BrightnessTracker { builder = new BrightnessChangeEvent.Builder(); builder.setBrightness(brightness); builder.setTimeStamp(mInjector.currentTimeMillis()); builder.setTimeStamp(timestamp); builder.setPowerBrightnessFactor(powerBrightnessFactor); builder.setUserBrightnessPoint(isUserSetBrightness); builder.setIsDefaultBrightnessConfig(isDefaultBrightnessConfig); Loading Loading @@ -813,7 +814,7 @@ public class BrightnessTracker { boolean userInitiatedChange = (msg.arg1 == 1); handleBrightnessChanged(values.brightness, userInitiatedChange, values.powerBrightnessFactor, values.isUserSetBrightness, values.isDefaultBrightnessConfig); values.isDefaultBrightnessConfig, values.timestamp); break; case MSG_START_SENSOR_LISTENER: startSensorListener(); Loading @@ -830,13 +831,16 @@ public class BrightnessTracker { final float powerBrightnessFactor; final boolean isUserSetBrightness; final boolean isDefaultBrightnessConfig; final long timestamp; BrightnessChangeValues(float brightness, float powerBrightnessFactor, boolean isUserSetBrightness, boolean isDefaultBrightnessConfig) { boolean isUserSetBrightness, boolean isDefaultBrightnessConfig, long timestamp) { this.brightness = brightness; this.powerBrightnessFactor = powerBrightnessFactor; this.isUserSetBrightness = isUserSetBrightness; this.isDefaultBrightnessConfig = isDefaultBrightnessConfig; this.timestamp = timestamp; } } Loading services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java +45 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import android.app.ActivityManager; import android.content.BroadcastReceiver; Loading Loading @@ -63,6 +64,7 @@ import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @SmallTest Loading Loading @@ -447,7 +449,7 @@ public class BrightnessTrackerTest { final long secondSensorTime = mInjector.currentTimeMillis(); mInjector.incrementTime(TimeUnit.SECONDS.toMillis(3)); notifyBrightnessChanged(mTracker, brightness, true /*userInitiated*/, 0.5f /*powerPolicyDim(*/, true /*hasUserBrightnessPoints*/, 0.5f /*powerBrightnessFactor*/, true /*hasUserBrightnessPoints*/, false /*isDefaultBrightnessConfig*/); ByteArrayOutputStream baos = new ByteArrayOutputStream(); mTracker.writeEventsLocked(baos); Loading Loading @@ -586,6 +588,48 @@ public class BrightnessTrackerTest { assertTrue(slice.getList().isEmpty()); } @Test public void testBackgroundHandlerDelay() { final int brightness = 20; // Setup tracker. startTracker(mTracker); mInjector.mSensorListener.onSensorChanged(createSensorEvent(1.0f)); mInjector.incrementTime(TimeUnit.SECONDS.toMillis(2)); // Block handler from running. final CountDownLatch latch = new CountDownLatch(1); mInjector.mHandler.post( () -> { try { latch.await(); } catch (InterruptedException e) { fail(e.getMessage()); } }); // Send an event. long eventTime = mInjector.currentTimeMillis(); mTracker.notifyBrightnessChanged(brightness, true /*userInitiated*/, 1.0f /*powerBrightnessFactor*/, false /*isUserSetBrightness*/, false /*isDefaultBrightnessConfig*/); // Time passes before handler can run. mInjector.incrementTime(TimeUnit.SECONDS.toMillis(2)); // Let the handler run. latch.countDown(); mInjector.waitForHandler(); List<BrightnessChangeEvent> events = mTracker.getEvents(0, true).getList(); mTracker.stop(); // Check event was recorded with time it was sent rather than handler ran. assertEquals(1, events.size()); BrightnessChangeEvent event = events.get(0); assertEquals(eventTime, event.timeStamp); } private InputStream getInputStream(String data) { return new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8)); } Loading Loading
services/core/java/com/android/server/display/BrightnessTracker.java +9 −5 Original line number Diff line number Diff line Loading @@ -282,13 +282,14 @@ public class BrightnessTracker { } Message m = mBgHandler.obtainMessage(MSG_BRIGHTNESS_CHANGED, userInitiated ? 1 : 0, 0 /*unused*/, new BrightnessChangeValues(brightness, powerBrightnessFactor, isUserSetBrightness, isDefaultBrightnessConfig)); powerBrightnessFactor, isUserSetBrightness, isDefaultBrightnessConfig, mInjector.currentTimeMillis())); m.sendToTarget(); } private void handleBrightnessChanged(float brightness, boolean userInitiated, float powerBrightnessFactor, boolean isUserSetBrightness, boolean isDefaultBrightnessConfig) { boolean isDefaultBrightnessConfig, long timestamp) { BrightnessChangeEvent.Builder builder; synchronized (mDataCollectionLock) { Loading @@ -309,7 +310,7 @@ public class BrightnessTracker { builder = new BrightnessChangeEvent.Builder(); builder.setBrightness(brightness); builder.setTimeStamp(mInjector.currentTimeMillis()); builder.setTimeStamp(timestamp); builder.setPowerBrightnessFactor(powerBrightnessFactor); builder.setUserBrightnessPoint(isUserSetBrightness); builder.setIsDefaultBrightnessConfig(isDefaultBrightnessConfig); Loading Loading @@ -813,7 +814,7 @@ public class BrightnessTracker { boolean userInitiatedChange = (msg.arg1 == 1); handleBrightnessChanged(values.brightness, userInitiatedChange, values.powerBrightnessFactor, values.isUserSetBrightness, values.isDefaultBrightnessConfig); values.isDefaultBrightnessConfig, values.timestamp); break; case MSG_START_SENSOR_LISTENER: startSensorListener(); Loading @@ -830,13 +831,16 @@ public class BrightnessTracker { final float powerBrightnessFactor; final boolean isUserSetBrightness; final boolean isDefaultBrightnessConfig; final long timestamp; BrightnessChangeValues(float brightness, float powerBrightnessFactor, boolean isUserSetBrightness, boolean isDefaultBrightnessConfig) { boolean isUserSetBrightness, boolean isDefaultBrightnessConfig, long timestamp) { this.brightness = brightness; this.powerBrightnessFactor = powerBrightnessFactor; this.isUserSetBrightness = isUserSetBrightness; this.isDefaultBrightnessConfig = isDefaultBrightnessConfig; this.timestamp = timestamp; } } Loading
services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java +45 −1 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import android.app.ActivityManager; import android.content.BroadcastReceiver; Loading Loading @@ -63,6 +64,7 @@ import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @SmallTest Loading Loading @@ -447,7 +449,7 @@ public class BrightnessTrackerTest { final long secondSensorTime = mInjector.currentTimeMillis(); mInjector.incrementTime(TimeUnit.SECONDS.toMillis(3)); notifyBrightnessChanged(mTracker, brightness, true /*userInitiated*/, 0.5f /*powerPolicyDim(*/, true /*hasUserBrightnessPoints*/, 0.5f /*powerBrightnessFactor*/, true /*hasUserBrightnessPoints*/, false /*isDefaultBrightnessConfig*/); ByteArrayOutputStream baos = new ByteArrayOutputStream(); mTracker.writeEventsLocked(baos); Loading Loading @@ -586,6 +588,48 @@ public class BrightnessTrackerTest { assertTrue(slice.getList().isEmpty()); } @Test public void testBackgroundHandlerDelay() { final int brightness = 20; // Setup tracker. startTracker(mTracker); mInjector.mSensorListener.onSensorChanged(createSensorEvent(1.0f)); mInjector.incrementTime(TimeUnit.SECONDS.toMillis(2)); // Block handler from running. final CountDownLatch latch = new CountDownLatch(1); mInjector.mHandler.post( () -> { try { latch.await(); } catch (InterruptedException e) { fail(e.getMessage()); } }); // Send an event. long eventTime = mInjector.currentTimeMillis(); mTracker.notifyBrightnessChanged(brightness, true /*userInitiated*/, 1.0f /*powerBrightnessFactor*/, false /*isUserSetBrightness*/, false /*isDefaultBrightnessConfig*/); // Time passes before handler can run. mInjector.incrementTime(TimeUnit.SECONDS.toMillis(2)); // Let the handler run. latch.countDown(); mInjector.waitForHandler(); List<BrightnessChangeEvent> events = mTracker.getEvents(0, true).getList(); mTracker.stop(); // Check event was recorded with time it was sent rather than handler ran. assertEquals(1, events.size()); BrightnessChangeEvent event = events.get(0); assertEquals(eventTime, event.timeStamp); } private InputStream getInputStream(String data) { return new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8)); } Loading