Merge "Add DisplayId to BrightnessTracker" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
47f60213ec
@@ -3071,6 +3071,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 {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1851,7 +1853,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);
|
||||
}
|
||||
@@ -1937,9 +1942,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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -416,16 +419,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;
|
||||
}
|
||||
|
||||
@@ -435,6 +437,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class);
|
||||
mBlanker = blanker;
|
||||
mContext = context;
|
||||
mBrightnessTracker = brightnessTracker;
|
||||
|
||||
|
||||
PowerManager pm = context.getSystemService(PowerManager.class);
|
||||
@@ -756,8 +759,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();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -780,10 +785,6 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
mAutomaticBrightnessController.stop();
|
||||
}
|
||||
|
||||
if (mBrightnessTracker != null) {
|
||||
mBrightnessTracker.stop();
|
||||
}
|
||||
|
||||
mContext.getContentResolver().unregisterContentObserver(mSettingsObserver);
|
||||
}
|
||||
}
|
||||
@@ -1899,7 +1900,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
|
||||
: 1.0f;
|
||||
mBrightnessTracker.notifyBrightnessChanged(brightnessInNits, userInitiated,
|
||||
powerFactor, hadUserDataPoint,
|
||||
mAutomaticBrightnessController.isDefaultConfig());
|
||||
mAutomaticBrightnessController.isDefaultConfig(), mUniqueDisplayId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2067,11 +2068,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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user