Loading services/core/java/com/android/server/display/BrightnessTracker.java +18 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.net.Uri; import android.os.BatteryManager; import android.os.Environment; import android.os.Handler; import android.os.PowerManager; import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; Loading Loading @@ -162,7 +163,10 @@ public class BrightnessTracker { UserHandle.USER_CURRENT); mSensorListener = new SensorListener(); mInjector.registerSensorListener(mContext, mSensorListener); if (mInjector.isInteractive(mContext)) { mInjector.registerSensorListener(mContext, mSensorListener, mBgHandler); } mSettingsObserver = new SettingsObserver(mBgHandler); mInjector.registerBrightnessObserver(mContentResolver, mSettingsObserver); Loading @@ -170,6 +174,8 @@ public class BrightnessTracker { final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_SHUTDOWN); intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); intentFilter.addAction(Intent.ACTION_SCREEN_ON); intentFilter.addAction(Intent.ACTION_SCREEN_OFF); mBroadcastReceiver = new Receiver(); mInjector.registerReceiver(mContext, mBroadcastReceiver, intentFilter); Loading Loading @@ -584,6 +590,11 @@ public class BrightnessTracker { if (level != -1 && scale != 0) { batteryLevelChanged(level, scale); } } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { mInjector.unregisterSensorListener(mContext, mSensorListener); } else if (Intent.ACTION_SCREEN_ON.equals(action)) { mInjector.registerSensorListener(mContext, mSensorListener, mInjector.getBackgroundHandler()); } } } Loading @@ -591,11 +602,11 @@ public class BrightnessTracker { @VisibleForTesting static class Injector { public void registerSensorListener(Context context, SensorEventListener sensorListener) { SensorEventListener sensorListener, Handler handler) { SensorManager sensorManager = context.getSystemService(SensorManager.class); Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); sensorManager.registerListener(sensorListener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); lightSensor, SensorManager.SENSOR_DELAY_NORMAL, handler); } public void unregisterSensorListener(Context context, SensorEventListener sensorListener) { Loading Loading @@ -675,5 +686,9 @@ public class BrightnessTracker { public void cancelIdleJob(Context context) { BrightnessIdleJob.cancelJob(context); } public boolean isInteractive(Context context) { return context.getSystemService(PowerManager.class).isInteractive(); } } } services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java +25 −4 Original line number Diff line number Diff line Loading @@ -94,12 +94,29 @@ public class BrightnessTrackerTest { } @Test public void testStartStopTracker() { public void testStartStopTrackerScreenOnOff() { mInjector.mInteractive = false; startTracker(mTracker); assertNotNull(mInjector.mSensorListener); assertNull(mInjector.mSensorListener); assertNotNull(mInjector.mSettingsObserver); assertNotNull(mInjector.mBroadcastReceiver); assertTrue(mInjector.mIdleScheduled); Intent onIntent = new Intent(); onIntent.setAction(Intent.ACTION_SCREEN_ON); mInjector.mBroadcastReceiver.onReceive(InstrumentationRegistry.getContext(), onIntent); assertNotNull(mInjector.mSensorListener); Intent offIntent = new Intent(); offIntent.setAction(Intent.ACTION_SCREEN_OFF); mInjector.mBroadcastReceiver.onReceive(InstrumentationRegistry.getContext(), offIntent); assertNull(mInjector.mSensorListener); mInjector.mBroadcastReceiver.onReceive(InstrumentationRegistry.getContext(), onIntent); assertNotNull(mInjector.mSensorListener); mTracker.stop(); assertNull(mInjector.mSensorListener); assertNull(mInjector.mSettingsObserver); Loading Loading @@ -532,7 +549,6 @@ public class BrightnessTrackerTest { mInjector.waitForHandler(); } private static final class Idle implements MessageQueue.IdleHandler { private boolean mIdle; Loading Loading @@ -565,6 +581,7 @@ public class BrightnessTrackerTest { long mElapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos(); Handler mHandler; boolean mIdleScheduled; boolean mInteractive = true; public TestInjector(Handler handler) { mHandler = handler; Loading @@ -577,7 +594,7 @@ public class BrightnessTrackerTest { @Override public void registerSensorListener(Context context, SensorEventListener sensorListener) { SensorEventListener sensorListener, Handler handler) { mSensorListener = sensorListener; } Loading Loading @@ -694,5 +711,9 @@ public class BrightnessTrackerTest { public void cancelIdleJob(Context context) { mIdleScheduled = false; } public boolean isInteractive(Context context) { return mInteractive; } } } Loading
services/core/java/com/android/server/display/BrightnessTracker.java +18 −3 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import android.net.Uri; import android.os.BatteryManager; import android.os.Environment; import android.os.Handler; import android.os.PowerManager; import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; Loading Loading @@ -162,7 +163,10 @@ public class BrightnessTracker { UserHandle.USER_CURRENT); mSensorListener = new SensorListener(); mInjector.registerSensorListener(mContext, mSensorListener); if (mInjector.isInteractive(mContext)) { mInjector.registerSensorListener(mContext, mSensorListener, mBgHandler); } mSettingsObserver = new SettingsObserver(mBgHandler); mInjector.registerBrightnessObserver(mContentResolver, mSettingsObserver); Loading @@ -170,6 +174,8 @@ public class BrightnessTracker { final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_SHUTDOWN); intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); intentFilter.addAction(Intent.ACTION_SCREEN_ON); intentFilter.addAction(Intent.ACTION_SCREEN_OFF); mBroadcastReceiver = new Receiver(); mInjector.registerReceiver(mContext, mBroadcastReceiver, intentFilter); Loading Loading @@ -584,6 +590,11 @@ public class BrightnessTracker { if (level != -1 && scale != 0) { batteryLevelChanged(level, scale); } } else if (Intent.ACTION_SCREEN_OFF.equals(action)) { mInjector.unregisterSensorListener(mContext, mSensorListener); } else if (Intent.ACTION_SCREEN_ON.equals(action)) { mInjector.registerSensorListener(mContext, mSensorListener, mInjector.getBackgroundHandler()); } } } Loading @@ -591,11 +602,11 @@ public class BrightnessTracker { @VisibleForTesting static class Injector { public void registerSensorListener(Context context, SensorEventListener sensorListener) { SensorEventListener sensorListener, Handler handler) { SensorManager sensorManager = context.getSystemService(SensorManager.class); Sensor lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); sensorManager.registerListener(sensorListener, lightSensor, SensorManager.SENSOR_DELAY_NORMAL); lightSensor, SensorManager.SENSOR_DELAY_NORMAL, handler); } public void unregisterSensorListener(Context context, SensorEventListener sensorListener) { Loading Loading @@ -675,5 +686,9 @@ public class BrightnessTracker { public void cancelIdleJob(Context context) { BrightnessIdleJob.cancelJob(context); } public boolean isInteractive(Context context) { return context.getSystemService(PowerManager.class).isInteractive(); } } }
services/tests/servicestests/src/com/android/server/display/BrightnessTrackerTest.java +25 −4 Original line number Diff line number Diff line Loading @@ -94,12 +94,29 @@ public class BrightnessTrackerTest { } @Test public void testStartStopTracker() { public void testStartStopTrackerScreenOnOff() { mInjector.mInteractive = false; startTracker(mTracker); assertNotNull(mInjector.mSensorListener); assertNull(mInjector.mSensorListener); assertNotNull(mInjector.mSettingsObserver); assertNotNull(mInjector.mBroadcastReceiver); assertTrue(mInjector.mIdleScheduled); Intent onIntent = new Intent(); onIntent.setAction(Intent.ACTION_SCREEN_ON); mInjector.mBroadcastReceiver.onReceive(InstrumentationRegistry.getContext(), onIntent); assertNotNull(mInjector.mSensorListener); Intent offIntent = new Intent(); offIntent.setAction(Intent.ACTION_SCREEN_OFF); mInjector.mBroadcastReceiver.onReceive(InstrumentationRegistry.getContext(), offIntent); assertNull(mInjector.mSensorListener); mInjector.mBroadcastReceiver.onReceive(InstrumentationRegistry.getContext(), onIntent); assertNotNull(mInjector.mSensorListener); mTracker.stop(); assertNull(mInjector.mSensorListener); assertNull(mInjector.mSettingsObserver); Loading Loading @@ -532,7 +549,6 @@ public class BrightnessTrackerTest { mInjector.waitForHandler(); } private static final class Idle implements MessageQueue.IdleHandler { private boolean mIdle; Loading Loading @@ -565,6 +581,7 @@ public class BrightnessTrackerTest { long mElapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos(); Handler mHandler; boolean mIdleScheduled; boolean mInteractive = true; public TestInjector(Handler handler) { mHandler = handler; Loading @@ -577,7 +594,7 @@ public class BrightnessTrackerTest { @Override public void registerSensorListener(Context context, SensorEventListener sensorListener) { SensorEventListener sensorListener, Handler handler) { mSensorListener = sensorListener; } Loading Loading @@ -694,5 +711,9 @@ public class BrightnessTrackerTest { public void cancelIdleJob(Context context) { mIdleScheduled = false; } public boolean isInteractive(Context context) { return mInteractive; } } }