diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java index 0a2dd6c027dec..bcff634713028 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java @@ -32,7 +32,7 @@ import java.io.PrintWriter; public interface FalsingManager { int VERSION = 3; - void onSucccessfulUnlock(); + void onSuccessfulUnlock(); void onNotificationActive(); diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java index 099909d000f9f..e105795ad57f2 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java @@ -35,7 +35,7 @@ public class FalsingManagerFake implements FalsingManager { private boolean mIsReportingEnabled; @Override - public void onSucccessfulUnlock() { + public void onSuccessfulUnlock() { } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java index d6faed5413d8c..6a64c8386798e 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java @@ -375,7 +375,7 @@ public class FalsingManagerImpl implements FalsingManager { sessionExitpoint(false /* force */); } - public void onSucccessfulUnlock() { + public void onSuccessfulUnlock() { if (FalsingLog.ENABLED) { FalsingLog.i("onSucccessfulUnlock", ""); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java index 056ead2108f1f..0db9ffc4f5bdb 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java @@ -157,8 +157,8 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable { } @Override - public void onSucccessfulUnlock() { - mInternalFalsingManager.onSucccessfulUnlock(); + public void onSuccessfulUnlock() { + mInternalFalsingManager.onSuccessfulUnlock(); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java index 992a4cc7ca6ad..2f3e3364a50a7 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java @@ -146,7 +146,7 @@ public class BrightLineFalsingManager implements FalsingManager { private void updateInteractionType(@Classifier.InteractionType int type) { logDebug("InteractionType: " + type); - mClassifiers.forEach((classifier) -> classifier.setInteractionType(type)); + mDataProvider.setInteractionType(type); } @Override @@ -216,7 +216,7 @@ public class BrightLineFalsingManager implements FalsingManager { } @Override - public void onSucccessfulUnlock() { + public void onSuccessfulUnlock() { if (mIsFalseTouchCalls != 0) { mMetricsLogger.histogram(FALSING_SUCCESS, mIsFalseTouchCalls); mIsFalseTouchCalls = 0; @@ -263,7 +263,12 @@ public class BrightLineFalsingManager implements FalsingManager { } @Override - public void setQsExpanded(boolean b) { + public void setQsExpanded(boolean expanded) { + if (expanded) { + unregisterSensors(); + } else if (mSessionStarted) { + registerSensors(); + } } @Override @@ -366,10 +371,14 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public void onBouncerShown() { + unregisterSensors(); } @Override public void onBouncerHidden() { + if (mSessionStarted) { + registerSensors(); + } } @Override diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java index 7555051fac486..cf088213644e9 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java @@ -85,10 +85,6 @@ abstract class FalsingClassifier { return mDataProvider.getInteractionType(); } - final void setInteractionType(@Classifier.InteractionType int interactionType) { - mDataProvider.setInteractionType(interactionType); - } - /** * Called whenever a MotionEvent occurs. * diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 9da99c453022d..83a6d7528dbb8 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -1651,7 +1651,7 @@ public class KeyguardViewMediator extends SystemUI { "KeyguardViewMediator#handleMessage START_KEYGUARD_EXIT_ANIM"); StartKeyguardExitAnimParams params = (StartKeyguardExitAnimParams) msg.obj; handleStartKeyguardExitAnimation(params.startTime, params.fadeoutDuration); - mFalsingManager.onSucccessfulUnlock(); + mFalsingManager.onSuccessfulUnlock(); Trace.endSection(); break; case KEYGUARD_DONE_PENDING_TIMEOUT: diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java new file mode 100644 index 0000000000000..0aaa3b6ad3293 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java @@ -0,0 +1,101 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.classifier.brightline; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.verify; + +import android.test.suitebuilder.annotation.SmallTest; +import android.testing.AndroidTestingRunner; +import android.util.DisplayMetrics; + +import com.android.keyguard.KeyguardUpdateMonitor; +import com.android.systemui.SysuiTestCase; +import com.android.systemui.dock.DockManager; +import com.android.systemui.dock.DockManagerFake; +import com.android.systemui.util.DeviceConfigProxy; +import com.android.systemui.util.DeviceConfigProxyFake; +import com.android.systemui.util.sensors.ProximitySensor; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +public class BrightLineFalsingManagerTest extends SysuiTestCase { + + + @Mock + private KeyguardUpdateMonitor mKeyguardUpdateMonitor; + @Mock + private ProximitySensor mProximitySensor; + + private BrightLineFalsingManager mFalsingManager; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + DisplayMetrics dm = new DisplayMetrics(); + dm.xdpi = 100; + dm.ydpi = 100; + dm.widthPixels = 100; + dm.heightPixels = 100; + FalsingDataProvider falsingDataProvider = new FalsingDataProvider(dm); + DeviceConfigProxy deviceConfigProxy = new DeviceConfigProxyFake(); + DockManager dockManager = new DockManagerFake(); + mFalsingManager = new BrightLineFalsingManager(falsingDataProvider, + mKeyguardUpdateMonitor, mProximitySensor, deviceConfigProxy, dockManager); + } + + @Test + public void testRegisterSensor() { + mFalsingManager.onScreenTurningOn(); + verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class)); + } + + @Test + public void testUnregisterSensor() { + mFalsingManager.onScreenTurningOn(); + reset(mProximitySensor); + mFalsingManager.onScreenOff(); + verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class)); + } + + @Test + public void testUnregisterSensor_QS() { + mFalsingManager.onScreenTurningOn(); + reset(mProximitySensor); + mFalsingManager.setQsExpanded(true); + verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class)); + mFalsingManager.setQsExpanded(false); + verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class)); + } + + @Test + public void testUnregisterSensor_Bouncer() { + mFalsingManager.onScreenTurningOn(); + reset(mProximitySensor); + mFalsingManager.onBouncerShown(); + verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class)); + mFalsingManager.onBouncerHidden(); + verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class)); + } +}