Loading core/java/com/android/internal/app/ColorDisplayController.java +15 −13 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); } } }; } /** Loading Loading @@ -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); Loading services/core/java/com/android/server/display/BrightnessTracker.java +12 −7 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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(); } } } services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java +20 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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; } } } Loading
core/java/com/android/internal/app/ColorDisplayController.java +15 −13 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); } } }; } /** Loading Loading @@ -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); Loading
services/core/java/com/android/server/display/BrightnessTracker.java +12 −7 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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) { Loading Loading @@ -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(); } } }
services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java +20 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading @@ -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 Loading Loading @@ -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 Loading Loading @@ -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; } } }