summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/display/DisplayManagerService.java1
-rw-r--r--services/core/java/com/android/server/display/PersistentDataStore.java18
-rw-r--r--services/tests/servicestests/src/com/android/server/display/PersistentDataStoreTest.java17
3 files changed, 29 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index b97de6511aed..c77ec20afa3b 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -1849,7 +1849,6 @@ public final class DisplayManagerService extends SystemService {
if (packageName != null && !validatePackageName(getCallingUid(), packageName)) {
packageName = null;
}
- Preconditions.checkNotNull(c);
final long token = Binder.clearCallingIdentity();
try {
setBrightnessConfigurationForUserInternal(c, userId, packageName);
diff --git a/services/core/java/com/android/server/display/PersistentDataStore.java b/services/core/java/com/android/server/display/PersistentDataStore.java
index f1ce5c5f0007..cbf46f832186 100644
--- a/services/core/java/com/android/server/display/PersistentDataStore.java
+++ b/services/core/java/com/android/server/display/PersistentDataStore.java
@@ -598,14 +598,20 @@ final class PersistentDataStore {
private boolean setBrightnessConfigurationForUser(BrightnessConfiguration c,
int userSerial, String packageName) {
BrightnessConfiguration currentConfig = mConfigurations.get(userSerial);
- if (currentConfig == null || !currentConfig.equals(c)) {
- if (packageName == null) {
- mPackageNames.remove(userSerial);
+ if (currentConfig != c && (currentConfig == null || !currentConfig.equals(c))) {
+ if (c != null) {
+ if (packageName == null) {
+ mPackageNames.remove(userSerial);
+ } else {
+ mPackageNames.put(userSerial, packageName);
+ }
+ mTimeStamps.put(userSerial, System.currentTimeMillis());
+ mConfigurations.put(userSerial, c);
} else {
- mPackageNames.put(userSerial, packageName);
+ mPackageNames.remove(userSerial);
+ mTimeStamps.delete(userSerial);
+ mConfigurations.remove(userSerial);
}
- mTimeStamps.put(userSerial, System.currentTimeMillis());
- mConfigurations.put(userSerial, c);
return true;
}
return false;
diff --git a/services/tests/servicestests/src/com/android/server/display/PersistentDataStoreTest.java b/services/tests/servicestests/src/com/android/server/display/PersistentDataStoreTest.java
index c5f8c90dd6c6..675000e91a1c 100644
--- a/services/tests/servicestests/src/com/android/server/display/PersistentDataStoreTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/PersistentDataStoreTest.java
@@ -171,6 +171,23 @@ public class PersistentDataStoreTest {
newDataStore.getBrightnessConfiguration(0 /*userSerial*/));
}
+ @Test
+ public void testNullBrightnessConfiguration() {
+ final float[] lux = { 0f, 10f };
+ final float[] nits = {1f, 100f };
+ final BrightnessConfiguration config = new BrightnessConfiguration.Builder(lux, nits)
+ .setDescription("a description")
+ .build();
+ mDataStore.loadIfNeeded();
+ assertNull(mDataStore.getBrightnessConfiguration(0 /*userSerial*/));
+
+ mDataStore.setBrightnessConfigurationForUser(config, 0, "packagename");
+ assertNotNull(mDataStore.getBrightnessConfiguration(0 /*userSerial*/));
+
+ mDataStore.setBrightnessConfigurationForUser(null, 0, "packagename");
+ assertNull(mDataStore.getBrightnessConfiguration(0 /*userSerial*/));
+ }
+
public class TestInjector extends PersistentDataStore.Injector {
private InputStream mReadStream;
private OutputStream mWriteStream;