summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kenny Guy <kennyguy@google.com> 2018-09-05 08:31:39 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2018-09-05 08:31:39 +0000
commit7ad4566277156ee05e761c80493ae28ee3c26a4c (patch)
tree00e386dfdd18db32c9375faf89334a7544ee84c7
parenta1a76a375c55653653f9a35a0f3d5d0a4f80b8e5 (diff)
parent2385d4fa78fb41096c202e45e222a5005ecc9103 (diff)
Merge "Fix BrightnessTracker's handling of color temperature"
-rw-r--r--core/java/com/android/internal/app/ColorDisplayController.java28
-rw-r--r--services/core/java/com/android/server/display/BrightnessTracker.java19
-rw-r--r--services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java21
3 files changed, 47 insertions, 21 deletions
diff --git a/core/java/com/android/internal/app/ColorDisplayController.java b/core/java/com/android/internal/app/ColorDisplayController.java
index ba6cf269b737..75151806cfcf 100644
--- a/core/java/com/android/internal/app/ColorDisplayController.java
+++ b/core/java/com/android/internal/app/ColorDisplayController.java
@@ -112,8 +112,8 @@ public final class ColorDisplayController {
private final Context mContext;
private final int mUserId;
- private final ContentObserver mContentObserver;
+ private ContentObserver mContentObserver;
private Callback mCallback;
private MetricsLogger mMetricsLogger;
@@ -124,18 +124,6 @@ public final class ColorDisplayController {
public ColorDisplayController(@NonNull Context context, int userId) {
mContext = context.getApplicationContext();
mUserId = userId;
-
- mContentObserver = new ContentObserver(new Handler(Looper.getMainLooper())) {
- @Override
- public void onChange(boolean selfChange, Uri uri) {
- super.onChange(selfChange, uri);
-
- final String setting = uri == null ? null : uri.getLastPathSegment();
- if (setting != null) {
- onSettingChanged(setting);
- }
- }
- };
}
/**
@@ -522,6 +510,20 @@ public final class ColorDisplayController {
if (oldCallback != callback) {
mCallback = callback;
+ if (mContentObserver == null) {
+ mContentObserver = new ContentObserver(new Handler(Looper.getMainLooper())) {
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ super.onChange(selfChange, uri);
+
+ final String setting = uri == null ? null : uri.getLastPathSegment();
+ if (setting != null) {
+ onSettingChanged(setting);
+ }
+ }
+ };
+ }
+
if (callback == null) {
// Stop listening for changes now that there IS NOT a listener.
mContext.getContentResolver().unregisterContentObserver(mContentObserver);
diff --git a/services/core/java/com/android/server/display/BrightnessTracker.java b/services/core/java/com/android/server/display/BrightnessTracker.java
index c473ef23db3e..019d726d8c48 100644
--- a/services/core/java/com/android/server/display/BrightnessTracker.java
+++ b/services/core/java/com/android/server/display/BrightnessTracker.java
@@ -51,6 +51,7 @@ import android.util.Xml;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.app.ColorDisplayController;
import com.android.internal.os.BackgroundThread;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.RingBuffer;
@@ -72,7 +73,6 @@ import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.ArrayDeque;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Date;
import java.util.Deque;
import java.util.HashMap;
@@ -363,12 +363,9 @@ public class BrightnessTracker {
return;
}
- builder.setNightMode(mInjector.getSecureIntForUser(mContentResolver,
- Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 0, UserHandle.USER_CURRENT)
- == 1);
- builder.setColorTemperature(mInjector.getSecureIntForUser(mContentResolver,
- Settings.Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE,
- 0, UserHandle.USER_CURRENT));
+ builder.setNightMode(mInjector.isNightModeActive(mContext, UserHandle.USER_CURRENT));
+ builder.setColorTemperature(mInjector.getColorTemperature(mContext,
+ UserHandle.USER_CURRENT));
BrightnessChangeEvent event = builder.build();
if (DEBUG) {
@@ -952,5 +949,13 @@ public class BrightnessTracker {
public boolean isInteractive(Context context) {
return context.getSystemService(PowerManager.class).isInteractive();
}
+
+ public int getColorTemperature(Context context, int userId) {
+ return new ColorDisplayController(context, userId).getColorTemperature();
+ }
+
+ public boolean isNightModeActive(Context context, int userId) {
+ return new ColorDisplayController(context, userId).isActivated();
+ }
}
}
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 ece9f42bd0eb..79a654b2c0f4 100644
--- a/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java
@@ -52,6 +52,8 @@ import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;
+import com.android.internal.R;
+
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -82,6 +84,8 @@ public class BrightnessTrackerTest {
private static HandlerThread sThread =
new HandlerThread("brightness.test", android.os.Process.THREAD_PRIORITY_BACKGROUND);
+ private int mDefaultNightModeColorTemperature;
+
private static Handler ensureHandler() {
synchronized (sHandlerLock) {
if (sHandler == null) {
@@ -98,6 +102,9 @@ public class BrightnessTrackerTest {
mInjector = new TestInjector(ensureHandler());
mTracker = new BrightnessTracker(InstrumentationRegistry.getContext(), mInjector);
+ mDefaultNightModeColorTemperature =
+ InstrumentationRegistry.getContext().getResources().getInteger(
+ R.integer.config_nightDisplayColorTemperatureDefault);
}
@Test
@@ -188,7 +195,7 @@ public class BrightnessTrackerTest {
// System had no data so these should all be at defaults.
assertEquals(Float.NaN, event.batteryLevel, 0.0);
assertFalse(event.nightMode);
- assertEquals(0, event.colorTemperature);
+ assertEquals(mDefaultNightModeColorTemperature, event.colorTemperature);
}
@Test
@@ -863,5 +870,17 @@ public class BrightnessTrackerTest {
public boolean isInteractive(Context context) {
return mInteractive;
}
+
+ @Override
+ public int getColorTemperature(Context context, int userId) {
+ return mSecureIntSettings.getOrDefault(Settings.Secure.NIGHT_DISPLAY_COLOR_TEMPERATURE,
+ mDefaultNightModeColorTemperature);
+ }
+
+ @Override
+ public boolean isNightModeActive(Context context, int userId) {
+ return mSecureIntSettings.getOrDefault(Settings.Secure.NIGHT_DISPLAY_ACTIVATED,
+ 0) == 1;
+ }
}
}