Merge "Unregister prox sensor when QS or Bouncer are expanded."

This commit is contained in:
Dave Mankoff
2020-02-12 01:36:37 +00:00
committed by Android (Google) Code Review
8 changed files with 119 additions and 13 deletions

View File

@@ -32,7 +32,7 @@ import java.io.PrintWriter;
public interface FalsingManager {
int VERSION = 3;
void onSucccessfulUnlock();
void onSuccessfulUnlock();
void onNotificationActive();

View File

@@ -35,7 +35,7 @@ public class FalsingManagerFake implements FalsingManager {
private boolean mIsReportingEnabled;
@Override
public void onSucccessfulUnlock() {
public void onSuccessfulUnlock() {
}

View File

@@ -375,7 +375,7 @@ public class FalsingManagerImpl implements FalsingManager {
sessionExitpoint(false /* force */);
}
public void onSucccessfulUnlock() {
public void onSuccessfulUnlock() {
if (FalsingLog.ENABLED) {
FalsingLog.i("onSucccessfulUnlock", "");
}

View File

@@ -157,8 +157,8 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
}
@Override
public void onSucccessfulUnlock() {
mInternalFalsingManager.onSucccessfulUnlock();
public void onSuccessfulUnlock() {
mInternalFalsingManager.onSuccessfulUnlock();
}
@Override

View File

@@ -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

View File

@@ -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.
*

View File

@@ -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:

View File

@@ -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));
}
}