Loading packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +14 −7 Original line number Diff line number Diff line Loading @@ -70,11 +70,12 @@ public class DozeSensors { private final Consumer<Boolean> mProxCallback; private final Callback mCallback; @VisibleForTesting protected final TriggerSensor[] mSensors; protected TriggerSensor[] mSensors; private final Handler mHandler = new Handler(); private final ProxSensor mProxSensor; private long mDebounceFrom; private boolean mSettingRegistered; public DozeSensors(Context context, AlarmManager alarmManager, SensorManager sensorManager, DozeParameters dozeParameters, AmbientDisplayConfiguration config, WakeLock wakeLock, Loading Loading @@ -172,13 +173,8 @@ public class DozeSensors { public void setListening(boolean listen) { for (TriggerSensor s : mSensors) { s.setListening(listen); if (listen) { s.registerSettingsObserver(mSettingsObserver); } } if (!listen) { mResolver.unregisterContentObserver(mSettingsObserver); } registerSettingsObserverIfNeeded(listen); } /** Set the listening state of only the sensors that require the touchscreen. */ Loading Loading @@ -240,6 +236,17 @@ public class DozeSensors { return mProxSensor.mCurrentlyFar; } private void registerSettingsObserverIfNeeded(boolean register) { if (!register) { mResolver.unregisterContentObserver(mSettingsObserver); } else if (!mSettingRegistered) { for (TriggerSensor s : mSensors) { s.registerSettingsObserver(mSettingsObserver); } } mSettingRegistered = register; } private class ProxSensor implements SensorEventListener { boolean mRequested; Loading packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -27,10 +27,12 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.AlarmManager; import android.database.ContentObserver; import android.hardware.display.AmbientDisplayConfiguration; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; Loading @@ -39,6 +41,7 @@ import android.testing.TestableLooper.RunWithLooper; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.doze.DozeSensors.TriggerSensor; import com.android.systemui.plugins.SensorManagerPlugin; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.AsyncSensorManager; Loading Loading @@ -73,6 +76,8 @@ public class DozeSensorsTest extends SysuiTestCase { private Consumer<Boolean> mProxCallback; @Mock private AlwaysOnDisplayPolicy mAlwaysOnDisplayPolicy; @Mock private TriggerSensor mMockTriggerSensor; private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener; private TestableLooper mTestableLooper; private DozeSensors mDozeSensors; Loading Loading @@ -107,6 +112,25 @@ public class DozeSensorsTest extends SysuiTestCase { anyBoolean(), anyFloat(), anyFloat(), eq(null)); } @Test public void testSetListening_firstTrue_registerSettingsObserver() { mDozeSensors.mSensors = new TriggerSensor[] {mMockTriggerSensor}; mDozeSensors.setListening(true); verify(mMockTriggerSensor).registerSettingsObserver(any(ContentObserver.class)); } @Test public void testSetListening_twiceTrue_onlyRegisterSettingsObserverOnce() { mDozeSensors.mSensors = new TriggerSensor[] {mMockTriggerSensor}; mDozeSensors.setListening(true); mDozeSensors.setListening(true); verify(mMockTriggerSensor, times(1)).registerSettingsObserver(any(ContentObserver.class)); } private class TestableDozeSensors extends DozeSensors { TestableDozeSensors() { Loading Loading
packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +14 −7 Original line number Diff line number Diff line Loading @@ -70,11 +70,12 @@ public class DozeSensors { private final Consumer<Boolean> mProxCallback; private final Callback mCallback; @VisibleForTesting protected final TriggerSensor[] mSensors; protected TriggerSensor[] mSensors; private final Handler mHandler = new Handler(); private final ProxSensor mProxSensor; private long mDebounceFrom; private boolean mSettingRegistered; public DozeSensors(Context context, AlarmManager alarmManager, SensorManager sensorManager, DozeParameters dozeParameters, AmbientDisplayConfiguration config, WakeLock wakeLock, Loading Loading @@ -172,13 +173,8 @@ public class DozeSensors { public void setListening(boolean listen) { for (TriggerSensor s : mSensors) { s.setListening(listen); if (listen) { s.registerSettingsObserver(mSettingsObserver); } } if (!listen) { mResolver.unregisterContentObserver(mSettingsObserver); } registerSettingsObserverIfNeeded(listen); } /** Set the listening state of only the sensors that require the touchscreen. */ Loading Loading @@ -240,6 +236,17 @@ public class DozeSensors { return mProxSensor.mCurrentlyFar; } private void registerSettingsObserverIfNeeded(boolean register) { if (!register) { mResolver.unregisterContentObserver(mSettingsObserver); } else if (!mSettingRegistered) { for (TriggerSensor s : mSensors) { s.registerSettingsObserver(mSettingsObserver); } } mSettingRegistered = register; } private class ProxSensor implements SensorEventListener { boolean mRequested; Loading
packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java +24 −0 Original line number Diff line number Diff line Loading @@ -27,10 +27,12 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.AlarmManager; import android.database.ContentObserver; import android.hardware.display.AmbientDisplayConfiguration; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; Loading @@ -39,6 +41,7 @@ import android.testing.TestableLooper.RunWithLooper; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.doze.DozeSensors.TriggerSensor; import com.android.systemui.plugins.SensorManagerPlugin; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.AsyncSensorManager; Loading Loading @@ -73,6 +76,8 @@ public class DozeSensorsTest extends SysuiTestCase { private Consumer<Boolean> mProxCallback; @Mock private AlwaysOnDisplayPolicy mAlwaysOnDisplayPolicy; @Mock private TriggerSensor mMockTriggerSensor; private SensorManagerPlugin.SensorEventListener mWakeLockScreenListener; private TestableLooper mTestableLooper; private DozeSensors mDozeSensors; Loading Loading @@ -107,6 +112,25 @@ public class DozeSensorsTest extends SysuiTestCase { anyBoolean(), anyFloat(), anyFloat(), eq(null)); } @Test public void testSetListening_firstTrue_registerSettingsObserver() { mDozeSensors.mSensors = new TriggerSensor[] {mMockTriggerSensor}; mDozeSensors.setListening(true); verify(mMockTriggerSensor).registerSettingsObserver(any(ContentObserver.class)); } @Test public void testSetListening_twiceTrue_onlyRegisterSettingsObserverOnce() { mDozeSensors.mSensors = new TriggerSensor[] {mMockTriggerSensor}; mDozeSensors.setListening(true); mDozeSensors.setListening(true); verify(mMockTriggerSensor, times(1)).registerSettingsObserver(any(ContentObserver.class)); } private class TestableDozeSensors extends DozeSensors { TestableDozeSensors() { Loading