Merge "Record timestamp when brightness tracker is called" into pi-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
eb432b1092
@@ -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) {
|
||||
@@ -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);
|
||||
@@ -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();
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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);
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user