Merge "Record timestamp when brightness tracker is called" into pi-dev

This commit is contained in:
TreeHugger Robot
2018-04-18 19:09:25 +00:00
committed by Android (Google) Code Review
2 changed files with 54 additions and 6 deletions

View File

@@ -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;
}
}

View File

@@ -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));
}