summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fiona Campbell <flc@google.com> 2021-03-04 11:13:24 +0000
committer Fiona Campbell <flc@google.com> 2021-03-15 10:55:36 +0000
commit69a1db09f9d35b9cdad03845b63e35023109e922 (patch)
tree15c1679fb466e17d5afe19797ff288e045aa6459
parentdabf902d0dfe03b4e4d2c248c18bf5e6268a9eae (diff)
Add DisplayId to BrightnessTracker
BrightnessTracker is now global. Pass in the physicaldisplayid of the primary display device of the logical display that the display power controller is associated with. This is so that we can determine the brightness changes for each physical screen. Bug: 181767734 Test: manual Change-Id: Iaebb12ec5fe7785545374cc639d7a345ca469db8
-rw-r--r--core/api/system-current.txt1
-rw-r--r--core/java/android/hardware/display/BrightnessChangeEvent.java31
-rw-r--r--services/core/java/com/android/server/display/BrightnessTracker.java31
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java14
-rw-r--r--services/core/java/com/android/server/display/DisplayPowerController.java24
-rw-r--r--services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java66
6 files changed, 123 insertions, 44 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index fe1dc11d1688..e3acc446ae4c 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -3016,6 +3016,7 @@ package android.hardware.display {
field public final float reduceBrightColorsOffset;
field public final int reduceBrightColorsStrength;
field public final long timeStamp;
+ field @NonNull public final String uniqueDisplayId;
}
public final class BrightnessConfiguration implements android.os.Parcelable {
diff --git a/core/java/android/hardware/display/BrightnessChangeEvent.java b/core/java/android/hardware/display/BrightnessChangeEvent.java
index a6c6b46d5b81..6b7d8c3dde49 100644
--- a/core/java/android/hardware/display/BrightnessChangeEvent.java
+++ b/core/java/android/hardware/display/BrightnessChangeEvent.java
@@ -47,6 +47,10 @@ public final class BrightnessChangeEvent implements Parcelable {
* @hide */
public final int userId;
+ /** The unique id of the screen on which the brightness was changed */
+ @NonNull
+ public final String uniqueDisplayId;
+
/** Lux values of recent sensor data */
public final float[] luxValues;
@@ -120,15 +124,16 @@ public final class BrightnessChangeEvent implements Parcelable {
/** @hide */
private BrightnessChangeEvent(float brightness, long timeStamp, String packageName,
- int userId, float[] luxValues, long[] luxTimestamps, float batteryLevel,
- float powerBrightnessFactor, boolean nightMode, int colorTemperature,
- boolean reduceBrightColors, int reduceBrightColorsStrength,
+ int userId, String uniqueDisplayId, float[] luxValues, long[] luxTimestamps,
+ float batteryLevel, float powerBrightnessFactor, boolean nightMode,
+ int colorTemperature, boolean reduceBrightColors, int reduceBrightColorsStrength,
float reduceBrightColorsOffset, float lastBrightness, boolean isDefaultBrightnessConfig,
boolean isUserSetBrightness, long[] colorValueBuckets, long colorSampleDuration) {
this.brightness = brightness;
this.timeStamp = timeStamp;
this.packageName = packageName;
this.userId = userId;
+ this.uniqueDisplayId = uniqueDisplayId;
this.luxValues = luxValues;
this.luxTimestamps = luxTimestamps;
this.batteryLevel = batteryLevel;
@@ -151,6 +156,7 @@ public final class BrightnessChangeEvent implements Parcelable {
this.timeStamp = other.timeStamp;
this.packageName = redactPackage ? null : other.packageName;
this.userId = other.userId;
+ this.uniqueDisplayId = other.uniqueDisplayId;
this.luxValues = other.luxValues;
this.luxTimestamps = other.luxTimestamps;
this.batteryLevel = other.batteryLevel;
@@ -172,6 +178,7 @@ public final class BrightnessChangeEvent implements Parcelable {
timeStamp = source.readLong();
packageName = source.readString();
userId = source.readInt();
+ uniqueDisplayId = source.readString();
luxValues = source.createFloatArray();
luxTimestamps = source.createLongArray();
batteryLevel = source.readFloat();
@@ -209,6 +216,7 @@ public final class BrightnessChangeEvent implements Parcelable {
dest.writeLong(timeStamp);
dest.writeString(packageName);
dest.writeInt(userId);
+ dest.writeString(uniqueDisplayId);
dest.writeFloatArray(luxValues);
dest.writeLongArray(luxTimestamps);
dest.writeFloat(batteryLevel);
@@ -231,6 +239,7 @@ public final class BrightnessChangeEvent implements Parcelable {
private long mTimeStamp;
private String mPackageName;
private int mUserId;
+ private String mUniqueDisplayId;
private float[] mLuxValues;
private long[] mLuxTimestamps;
private float mBatteryLevel;
@@ -270,6 +279,12 @@ public final class BrightnessChangeEvent implements Parcelable {
return this;
}
+ /** {@see BrightnessChangeEvent#uniqueScreenId} */
+ public Builder setUniqueDisplayId(String uniqueId) {
+ mUniqueDisplayId = uniqueId;
+ return this;
+ }
+
/** {@see BrightnessChangeEvent#luxValues} */
public Builder setLuxValues(float[] luxValues) {
mLuxValues = luxValues;
@@ -354,11 +369,11 @@ public final class BrightnessChangeEvent implements Parcelable {
/** Builds a BrightnessChangeEvent */
public BrightnessChangeEvent build() {
return new BrightnessChangeEvent(mBrightness, mTimeStamp,
- mPackageName, mUserId, mLuxValues, mLuxTimestamps, mBatteryLevel,
- mPowerBrightnessFactor, mNightMode, mColorTemperature, mReduceBrightColors,
- mReduceBrightColorsStrength, mReduceBrightColorsOffset, mLastBrightness,
- mIsDefaultBrightnessConfig, mIsUserSetBrightness, mColorValueBuckets,
- mColorSampleDuration);
+ mPackageName, mUserId, mUniqueDisplayId, mLuxValues, mLuxTimestamps,
+ mBatteryLevel, mPowerBrightnessFactor, mNightMode, mColorTemperature,
+ mReduceBrightColors, mReduceBrightColorsStrength, mReduceBrightColorsOffset,
+ mLastBrightness, mIsDefaultBrightnessConfig, mIsUserSetBrightness,
+ mColorValueBuckets, mColorSampleDuration);
}
}
}
diff --git a/services/core/java/com/android/server/display/BrightnessTracker.java b/services/core/java/com/android/server/display/BrightnessTracker.java
index 06010f51e231..251b57947195 100644
--- a/services/core/java/com/android/server/display/BrightnessTracker.java
+++ b/services/core/java/com/android/server/display/BrightnessTracker.java
@@ -110,6 +110,7 @@ public class BrightnessTracker {
private static final String ATTR_TIMESTAMP = "timestamp";
private static final String ATTR_PACKAGE_NAME = "packageName";
private static final String ATTR_USER = "user";
+ private static final String ATTR_UNIQUE_DISPLAY_ID = "uniqueDisplayId";
private static final String ATTR_LUX = "lux";
private static final String ATTR_LUX_TIMESTAMPS = "luxTimestamps";
private static final String ATTR_BATTERY_LEVEL = "batteryLevel";
@@ -217,6 +218,9 @@ public class BrightnessTracker {
}
private void backgroundStart(float initialBrightness) {
+ if (DEBUG) {
+ Slog.d(TAG, "Background start");
+ }
readEvents();
readAmbientBrightnessStats();
@@ -311,7 +315,7 @@ public class BrightnessTracker {
*/
public void notifyBrightnessChanged(float brightness, boolean userInitiated,
float powerBrightnessFactor, boolean isUserSetBrightness,
- boolean isDefaultBrightnessConfig) {
+ boolean isDefaultBrightnessConfig, String uniqueDisplayId) {
if (DEBUG) {
Slog.d(TAG, String.format("notifyBrightnessChanged(brightness=%f, userInitiated=%b)",
brightness, userInitiated));
@@ -319,13 +323,13 @@ public class BrightnessTracker {
Message m = mBgHandler.obtainMessage(MSG_BRIGHTNESS_CHANGED,
userInitiated ? 1 : 0, 0 /*unused*/, new BrightnessChangeValues(brightness,
powerBrightnessFactor, isUserSetBrightness, isDefaultBrightnessConfig,
- mInjector.currentTimeMillis()));
+ mInjector.currentTimeMillis(), uniqueDisplayId));
m.sendToTarget();
}
private void handleBrightnessChanged(float brightness, boolean userInitiated,
float powerBrightnessFactor, boolean isUserSetBrightness,
- boolean isDefaultBrightnessConfig, long timestamp) {
+ boolean isDefaultBrightnessConfig, long timestamp, String uniqueDisplayId) {
BrightnessChangeEvent.Builder builder;
synchronized (mDataCollectionLock) {
@@ -350,6 +354,7 @@ public class BrightnessTracker {
builder.setPowerBrightnessFactor(powerBrightnessFactor);
builder.setUserBrightnessPoint(isUserSetBrightness);
builder.setIsDefaultBrightnessConfig(isDefaultBrightnessConfig);
+ builder.setUniqueDisplayId(uniqueDisplayId);
final int readingCount = mLastSensorReadings.size();
if (readingCount == 0) {
@@ -562,6 +567,7 @@ public class BrightnessTracker {
out.attributeLong(null, ATTR_TIMESTAMP, toWrite[i].timeStamp);
out.attribute(null, ATTR_PACKAGE_NAME, toWrite[i].packageName);
out.attributeInt(null, ATTR_USER, userSerialNo);
+ out.attribute(null, ATTR_UNIQUE_DISPLAY_ID, toWrite[i].uniqueDisplayId);
out.attributeFloat(null, ATTR_BATTERY_LEVEL, toWrite[i].batteryLevel);
out.attributeBoolean(null, ATTR_NIGHT_MODE, toWrite[i].nightMode);
out.attributeInt(null, ATTR_COLOR_TEMPERATURE,
@@ -646,6 +652,8 @@ public class BrightnessTracker {
builder.setPackageName(parser.getAttributeValue(null, ATTR_PACKAGE_NAME));
builder.setUserId(mInjector.getUserId(mUserManager,
parser.getAttributeInt(null, ATTR_USER)));
+ builder.setUniqueDisplayId(
+ parser.getAttributeValue(null, ATTR_UNIQUE_DISPLAY_ID));
builder.setBatteryLevel(parser.getAttributeFloat(null, ATTR_BATTERY_LEVEL));
builder.setNightMode(parser.getAttributeBoolean(null, ATTR_NIGHT_MODE));
builder.setColorTemperature(
@@ -980,7 +988,8 @@ public class BrightnessTracker {
boolean userInitiatedChange = (msg.arg1 == 1);
handleBrightnessChanged(values.brightness, userInitiatedChange,
values.powerBrightnessFactor, values.isUserSetBrightness,
- values.isDefaultBrightnessConfig, values.timestamp);
+ values.isDefaultBrightnessConfig, values.timestamp,
+ values.uniqueDisplayId);
break;
case MSG_START_SENSOR_LISTENER:
startSensorListener();
@@ -1007,20 +1016,22 @@ public class BrightnessTracker {
}
private static class BrightnessChangeValues {
- final float brightness;
- final float powerBrightnessFactor;
- final boolean isUserSetBrightness;
- final boolean isDefaultBrightnessConfig;
- final long timestamp;
+ public final float brightness;
+ public final float powerBrightnessFactor;
+ public final boolean isUserSetBrightness;
+ public final boolean isDefaultBrightnessConfig;
+ public final long timestamp;
+ public final String uniqueDisplayId;
BrightnessChangeValues(float brightness, float powerBrightnessFactor,
boolean isUserSetBrightness, boolean isDefaultBrightnessConfig,
- long timestamp) {
+ long timestamp, String uniqueDisplayId) {
this.brightness = brightness;
this.powerBrightnessFactor = powerBrightnessFactor;
this.isUserSetBrightness = isUserSetBrightness;
this.isDefaultBrightnessConfig = isDefaultBrightnessConfig;
this.timestamp = timestamp;
+ this.uniqueDisplayId = uniqueDisplayId;
}
}
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 174d4b2fe00d..db118c12e2d3 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -376,6 +376,8 @@ public final class DisplayManagerService extends SystemService {
private final ColorSpace mWideColorSpace;
private SensorManager mSensorManager;
+ private BrightnessTracker mBrightnessTracker;
+
// Whether minimal post processing is allowed by the user.
@GuardedBy("mSyncRoot")
@@ -1162,7 +1164,7 @@ public final class DisplayManagerService extends SystemService {
DisplayPowerController dpc = mDisplayPowerControllers.get(displayId);
if (dpc != null) {
- dpc.onDisplayChanged();
+ dpc.onDisplayChangedLocked();
}
}
@@ -1852,7 +1854,10 @@ public final class DisplayManagerService extends SystemService {
for (int i = 0; i < displayPowerControllerCount; i++) {
mDisplayPowerControllers.valueAt(i).dump(pw);
}
-
+ if (mBrightnessTracker != null) {
+ pw.println();
+ mBrightnessTracker.dump(pw);
+ }
pw.println();
mPersistentDataStore.dump(pw);
}
@@ -1938,9 +1943,12 @@ public final class DisplayManagerService extends SystemService {
// initPowerManagement has not yet been called.
return;
}
+ if (mBrightnessTracker == null) {
+ mBrightnessTracker = new BrightnessTracker(mContext, null);
+ }
final DisplayPowerController displayPowerController = new DisplayPowerController(
mContext, mDisplayPowerCallbacks, mPowerHandler, mSensorManager,
- mDisplayBlanker, display);
+ mDisplayBlanker, display, mBrightnessTracker);
mDisplayPowerControllers.append(display.getDisplayIdLocked(), displayPowerController);
}
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index 011732682ace..ec70b4d45d75 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -174,6 +174,9 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
// The ID of the LogicalDisplay tied to this DisplayPowerController.
private final int mDisplayId;
+ // The unique ID of the primary display device currently tied to this logical display
+ private String mUniqueDisplayId;
+
// Tracker for brightness changes.
@Nullable
private final BrightnessTracker mBrightnessTracker;
@@ -413,16 +416,15 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
*/
public DisplayPowerController(Context context,
DisplayPowerCallbacks callbacks, Handler handler,
- SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay) {
+ SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay,
+ BrightnessTracker brightnessTracker) {
mLogicalDisplay = logicalDisplay;
mDisplayId = mLogicalDisplay.getDisplayIdLocked();
mHandler = new DisplayControllerHandler(handler.getLooper());
if (mDisplayId == Display.DEFAULT_DISPLAY) {
- mBrightnessTracker = new BrightnessTracker(context, null);
mBatteryStats = BatteryStatsService.getService();
} else {
- mBrightnessTracker = null;
mBatteryStats = null;
}
@@ -432,6 +434,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class);
mBlanker = blanker;
mContext = context;
+ mBrightnessTracker = brightnessTracker;
PowerManager pm = context.getSystemService(PowerManager.class);
@@ -750,8 +753,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
* when displays get swapped on foldable devices. For example, different brightness properties
* of each display need to be properly reflected in AutomaticBrightnessController.
*/
- public void onDisplayChanged() {
+ public void onDisplayChangedLocked() {
// TODO: b/175821789 - Support high brightness on multiple (folding) displays
+
+ mUniqueDisplayId = mLogicalDisplay.getPrimaryDisplayDeviceLocked().getUniqueId();
}
/**
@@ -774,10 +779,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
mAutomaticBrightnessController.stop();
}
- if (mBrightnessTracker != null) {
- mBrightnessTracker.stop();
- }
-
mContext.getContentResolver().unregisterContentObserver(mSettingsObserver);
}
}
@@ -1868,7 +1869,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
: 1.0f;
mBrightnessTracker.notifyBrightnessChanged(brightnessInNits, userInitiated,
powerFactor, hadUserDataPoint,
- mAutomaticBrightnessController.isDefaultConfig());
+ mAutomaticBrightnessController.isDefaultConfig(), mUniqueDisplayId);
}
}
@@ -2036,11 +2037,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
mAutomaticBrightnessController.dump(pw);
}
- if (mBrightnessTracker != null) {
- pw.println();
- mBrightnessTracker.dump(pw);
- }
-
pw.println();
if (mDisplayWhiteBalanceController != null) {
mDisplayWhiteBalanceController.dump(pw);
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 893ce9e6c70c..bdf94f3a2882 100644
--- a/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java
@@ -81,6 +81,7 @@ import java.util.concurrent.TimeUnit;
public class BrightnessTrackerTest {
private static final float DEFAULT_INITIAL_BRIGHTNESS = 2.5f;
private static final boolean DEFAULT_COLOR_SAMPLING_ENABLED = true;
+ private static final String DEFAULT_DISPLAY_ID = "123";
private static final float FLOAT_DELTA = 0.01f;
private BrightnessTracker mTracker;
@@ -285,18 +286,20 @@ public class BrightnessTrackerTest {
@Test
public void testBrightnessEvent() {
- final int brightness = 20;
+ final float brightness = 0.5f;
+ final String displayId = "1234";
startTracker(mTracker);
mInjector.mSensorListener.onSensorChanged(createSensorEvent(1.0f));
mInjector.incrementTime(TimeUnit.SECONDS.toMillis(2));
- notifyBrightnessChanged(mTracker, brightness);
+ notifyBrightnessChanged(mTracker, brightness, displayId);
List<BrightnessChangeEvent> events = mTracker.getEvents(0, true).getList();
mTracker.stop();
assertEquals(1, events.size());
BrightnessChangeEvent event = events.get(0);
assertEquals(mInjector.currentTimeMillis(), event.timeStamp);
+ assertEquals(displayId, event.uniqueDisplayId);
assertEquals(1, event.luxValues.length);
assertEquals(1.0f, event.luxValues[0], FLOAT_DELTA);
assertEquals(mInjector.currentTimeMillis() - TimeUnit.SECONDS.toMillis(2),
@@ -314,6 +317,7 @@ public class BrightnessTrackerTest {
public void testBrightnessFullPopulatedEvent() {
final int initialBrightness = 230;
final int brightness = 130;
+ final String displayId = "1234";
mInjector.mSecureIntSettings.put(Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 1);
mInjector.mSecureIntSettings.put(Settings.Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, 3333);
@@ -326,7 +330,7 @@ public class BrightnessTrackerTest {
batteryChangeEvent(30, 60));
mInjector.mSensorListener.onSensorChanged(createSensorEvent(1000.0f));
final long sensorTime = mInjector.currentTimeMillis();
- notifyBrightnessChanged(mTracker, brightness);
+ notifyBrightnessChanged(mTracker, brightness, displayId);
List<BrightnessChangeEvent> eventsNoPackage
= mTracker.getEvents(0, false).getList();
List<BrightnessChangeEvent> events = mTracker.getEvents(0, true).getList();
@@ -335,6 +339,7 @@ public class BrightnessTrackerTest {
assertEquals(1, events.size());
BrightnessChangeEvent event = events.get(0);
assertEquals(event.timeStamp, mInjector.currentTimeMillis());
+ assertEquals(displayId, event.uniqueDisplayId);
assertArrayEquals(new float[] {1000.0f}, event.luxValues, 0.01f);
assertArrayEquals(new long[] {sensorTime}, event.luxTimestamps);
assertEquals(brightness, event.brightness, FLOAT_DELTA);
@@ -364,7 +369,7 @@ public class BrightnessTrackerTest {
final int systemUpdatedBrightness = 20;
notifyBrightnessChanged(mTracker, systemUpdatedBrightness, false /*userInitiated*/,
0.5f /*powerBrightnessFactor(*/, false /*isUserSetBrightness*/,
- false /*isDefaultBrightnessConfig*/);
+ false /*isDefaultBrightnessConfig*/, DEFAULT_DISPLAY_ID);
List<BrightnessChangeEvent> events = mTracker.getEvents(0, true).getList();
// No events because we filtered out our change.
assertEquals(0, events.size());
@@ -455,6 +460,7 @@ public class BrightnessTrackerTest {
+ "batteryLevel=\"1.0\" nightMode=\"false\" colorTemperature=\"0\" "
+ "reduceBrightColors=\"false\" reduceBrightColorsStrength=\"40\" "
+ "reduceBrightColorsOffset=\"0\"\n"
+ + "uniqueDisplayId=\"123\""
+ "lux=\"32.2,31.1\" luxTimestamps=\""
+ Long.toString(someTimeAgo) + "," + Long.toString(someTimeAgo) + "\""
+ "defaultConfig=\"true\" powerSaveFactor=\"0.5\" userPoint=\"true\" />"
@@ -465,6 +471,7 @@ public class BrightnessTrackerTest {
+ "batteryLevel=\"0.5\" nightMode=\"true\" colorTemperature=\"3235\" "
+ "reduceBrightColors=\"true\" reduceBrightColorsStrength=\"40\" "
+ "reduceBrightColorsOffset=\"0\"\n"
+ + "uniqueDisplayId=\"456\""
+ "lux=\"132.2,131.1\" luxTimestamps=\""
+ Long.toString(someTimeAgo) + "," + Long.toString(someTimeAgo) + "\""
+ "colorSampleDuration=\"3456\" colorValueBuckets=\"123,598,23,19\"/>"
@@ -476,6 +483,7 @@ public class BrightnessTrackerTest {
+ "batteryLevel=\"1.0\" nightMode=\"false\" colorTemperature=\"0\" "
+ "reduceBrightColors=\"false\" reduceBrightColorsStrength=\"40\" "
+ "reduceBrightColorsOffset=\"0\"\n"
+ + "uniqueDisplayId=\"789\""
+ "lux=\"32.2,31.1\" luxTimestamps=\""
+ Long.toString(twoMonthsAgo) + "," + Long.toString(twoMonthsAgo) + "\"/>"
+ "</events>";
@@ -485,6 +493,7 @@ public class BrightnessTrackerTest {
BrightnessChangeEvent event = events.get(0);
assertEquals(someTimeAgo, event.timeStamp);
assertEquals(194.2, event.brightness, FLOAT_DELTA);
+ assertEquals("123", event.uniqueDisplayId);
assertArrayEquals(new float[] {32.2f, 31.1f}, event.luxValues, FLOAT_DELTA);
assertArrayEquals(new long[] {someTimeAgo, someTimeAgo}, event.luxTimestamps);
assertEquals(32.333, event.lastBrightness, FLOAT_DELTA);
@@ -503,6 +512,7 @@ public class BrightnessTrackerTest {
event = events.get(0);
assertEquals(someTimeAgo, event.timeStamp);
assertEquals(71, event.brightness, FLOAT_DELTA);
+ assertEquals("456", event.uniqueDisplayId);
assertArrayEquals(new float[] {132.2f, 131.1f}, event.luxValues, FLOAT_DELTA);
assertArrayEquals(new long[] {someTimeAgo, someTimeAgo}, event.luxTimestamps);
assertEquals(32, event.lastBrightness, FLOAT_DELTA);
@@ -575,6 +585,7 @@ public class BrightnessTrackerTest {
@Test
public void testWriteThenRead() throws Exception {
final int brightness = 20;
+ final String displayId = "1234";
mInjector.mSecureIntSettings.put(Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 1);
mInjector.mSecureIntSettings.put(Settings.Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE, 3339);
@@ -593,7 +604,7 @@ public class BrightnessTrackerTest {
mInjector.incrementTime(TimeUnit.SECONDS.toMillis(3));
notifyBrightnessChanged(mTracker, brightness, true /*userInitiated*/,
0.5f /*powerBrightnessFactor*/, true /*hasUserBrightnessPoints*/,
- false /*isDefaultBrightnessConfig*/);
+ false /*isDefaultBrightnessConfig*/, displayId);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
mTracker.writeEventsLocked(baos);
mTracker.stop();
@@ -607,6 +618,7 @@ public class BrightnessTrackerTest {
assertEquals(1, events.size());
BrightnessChangeEvent event = events.get(0);
+ assertEquals(displayId, event.uniqueDisplayId);
assertArrayEquals(new float[] {2000.0f, 3000.0f}, event.luxValues, FLOAT_DELTA);
assertArrayEquals(new long[] {firstSensorTime, secondSensorTime}, event.luxTimestamps);
assertEquals(brightness, event.brightness, FLOAT_DELTA);
@@ -678,6 +690,7 @@ public class BrightnessTrackerTest {
builder.setTimeStamp(345L);
builder.setPackageName("com.example");
builder.setUserId(12);
+ builder.setUniqueDisplayId("9876");
float[] luxValues = new float[2];
luxValues[0] = 3000.0f;
luxValues[1] = 4000.0f;
@@ -710,6 +723,7 @@ public class BrightnessTrackerTest {
assertEquals(event.timeStamp, event2.timeStamp);
assertEquals(event.packageName, event2.packageName);
assertEquals(event.userId, event2.userId);
+ assertEquals(event.uniqueDisplayId, event2.uniqueDisplayId);
assertArrayEquals(event.luxValues, event2.luxValues, FLOAT_DELTA);
assertArrayEquals(event.luxTimestamps, event2.luxTimestamps);
assertEquals(event.batteryLevel, event2.batteryLevel, FLOAT_DELTA);
@@ -773,7 +787,7 @@ public class BrightnessTrackerTest {
long eventTime = mInjector.currentTimeMillis();
mTracker.notifyBrightnessChanged(brightness, true /*userInitiated*/,
1.0f /*powerBrightnessFactor*/, false /*isUserSetBrightness*/,
- false /*isDefaultBrightnessConfig*/);
+ false /*isDefaultBrightnessConfig*/, DEFAULT_DISPLAY_ID);
// Time passes before handler can run.
mInjector.incrementTime(TimeUnit.SECONDS.toMillis(2));
@@ -791,6 +805,35 @@ public class BrightnessTrackerTest {
assertEquals(eventTime, event.timeStamp);
}
+ @Test
+ public void testDisplayIdChange() {
+ float firstBrightness = 0.5f;
+ float secondBrightness = 0.75f;
+ String firstDisplayId = "123";
+ String secondDisplayId = "456";
+
+ startTracker(mTracker);
+ mInjector.mSensorListener.onSensorChanged(createSensorEvent(1000.0f));
+
+ notifyBrightnessChanged(mTracker, firstBrightness, firstDisplayId);
+ mInjector.incrementTime(TimeUnit.SECONDS.toMillis(2));
+ List<BrightnessChangeEvent> events = mTracker.getEvents(0, true).getList();
+ assertEquals(1, events.size());
+ BrightnessChangeEvent firstEvent = events.get(0);
+ assertEquals(firstDisplayId, firstEvent.uniqueDisplayId);
+ assertEquals(firstBrightness, firstEvent.brightness, 0.001f);
+
+ notifyBrightnessChanged(mTracker, secondBrightness, secondDisplayId);
+ mInjector.incrementTime(TimeUnit.SECONDS.toMillis(2));
+ events = mTracker.getEvents(0, true).getList();
+ assertEquals(2, events.size());
+ BrightnessChangeEvent secondEvent = events.get(1);
+ assertEquals(secondDisplayId, secondEvent.uniqueDisplayId);
+ assertEquals(secondBrightness, secondEvent.brightness, 0.001f);
+
+ mTracker.stop();
+ }
+
private InputStream getInputStream(String data) {
return new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8));
}
@@ -831,16 +874,21 @@ public class BrightnessTrackerTest {
}
private void notifyBrightnessChanged(BrightnessTracker tracker, float brightness) {
+ notifyBrightnessChanged(tracker, brightness, DEFAULT_DISPLAY_ID);
+ }
+
+ private void notifyBrightnessChanged(BrightnessTracker tracker, float brightness,
+ String displayId) {
notifyBrightnessChanged(tracker, brightness, true /*userInitiated*/,
1.0f /*powerBrightnessFactor*/, false /*isUserSetBrightness*/,
- false /*isDefaultBrightnessConfig*/);
+ false /*isDefaultBrightnessConfig*/, displayId);
}
private void notifyBrightnessChanged(BrightnessTracker tracker, float brightness,
boolean userInitiated, float powerBrightnessFactor, boolean isUserSetBrightness,
- boolean isDefaultBrightnessConfig) {
+ boolean isDefaultBrightnessConfig, String displayId) {
tracker.notifyBrightnessChanged(brightness, userInitiated, powerBrightnessFactor,
- isUserSetBrightness, isDefaultBrightnessConfig);
+ isUserSetBrightness, isDefaultBrightnessConfig, displayId);
mInjector.waitForHandler();
}