Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4fe3af3 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Ensure that FalsingManager is not active when phone unlocked." into...

Merge "Ensure that FalsingManager is not active when phone unlocked." into rvc-dev am: 6b0bccc9 am: 91e3c288

Change-Id: I24977f0c185812576b08d70357116fced7aa042a
parents 45b8f2ad 91e3c288
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.FalsingPlugin;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.sensors.ProximitySensor;
@@ -69,6 +70,7 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
    private final DockManager mDockManager;
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private Executor mUiBgExecutor;
    private final StatusBarStateController mStatusBarStateController;

    @Inject
    FalsingManagerProxy(Context context, PluginManager pluginManager, @Main Executor executor,
@@ -76,12 +78,14 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
            DeviceConfigProxy deviceConfig, DockManager dockManager,
            KeyguardUpdateMonitor keyguardUpdateMonitor,
            DumpManager dumpManager,
            @UiBackground Executor uiBgExecutor) {
            @UiBackground Executor uiBgExecutor,
            StatusBarStateController statusBarStateController) {
        mDisplayMetrics = displayMetrics;
        mProximitySensor = proximitySensor;
        mDockManager = dockManager;
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mUiBgExecutor = uiBgExecutor;
        mStatusBarStateController = statusBarStateController;
        mProximitySensor.setTag(PROXIMITY_SENSOR_TAG);
        mProximitySensor.setSensorDelay(SensorManager.SENSOR_DELAY_GAME);
        mDeviceConfig = deviceConfig;
@@ -143,7 +147,8 @@ public class FalsingManagerProxy implements FalsingManager, Dumpable {
                    mKeyguardUpdateMonitor,
                    mProximitySensor,
                    mDeviceConfig,
                    mDockManager
                    mDockManager,
                    mStatusBarStateController
            );
        }
    }
+36 −10
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.systemui.classifier.Classifier;
import com.android.systemui.dock.DockManager;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.sensors.ProximitySensor;

@@ -59,6 +61,7 @@ public class BrightLineFalsingManager implements FalsingManager {
    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private final ProximitySensor mProximitySensor;
    private final DockManager mDockManager;
    private final StatusBarStateController mStatusBarStateController;
    private boolean mSessionStarted;
    private MetricsLogger mMetricsLogger;
    private int mIsFalseTouchCalls;
@@ -88,15 +91,29 @@ public class BrightLineFalsingManager implements FalsingManager {
            };
    private boolean mPreviousResult = false;

    private StatusBarStateController.StateListener mStatusBarStateListener =
            new StatusBarStateController.StateListener() {
        @Override
        public void onStateChanged(int newState) {
            logDebug("StatusBarState=" + StatusBarState.toShortString(newState));
            mState = newState;
            updateSessionActive();
        }
    };
    private int mState;

    public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider,
            KeyguardUpdateMonitor keyguardUpdateMonitor, ProximitySensor proximitySensor,
            DeviceConfigProxy deviceConfigProxy,
            DockManager dockManager) {
            DockManager dockManager, StatusBarStateController statusBarStateController) {
        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
        mDataProvider = falsingDataProvider;
        mProximitySensor = proximitySensor;
        mDockManager = dockManager;
        mStatusBarStateController = statusBarStateController;
        mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateCallback);
        mStatusBarStateController.addCallback(mStatusBarStateListener);
        mState = mStatusBarStateController.getState();

        mMetricsLogger = new MetricsLogger();
        mClassifiers = new ArrayList<>();
@@ -116,13 +133,12 @@ public class BrightLineFalsingManager implements FalsingManager {
        mProximitySensor.register(mSensorEventListener);
    }


    private void unregisterSensors() {
        mProximitySensor.unregister(mSensorEventListener);
    }

    private void sessionStart() {
        if (!mSessionStarted && !mShowingAod && mScreenOn) {
        if (!mSessionStarted && shouldSessionBeActive()) {
            logDebug("Starting Session");
            mSessionStarted = true;
            mJustUnlockedWithFace = false;
@@ -145,6 +161,19 @@ public class BrightLineFalsingManager implements FalsingManager {
        }
    }


    private void updateSessionActive() {
        if (shouldSessionBeActive()) {
            sessionStart();
        } else {
            sessionEnd();
        }
    }

    private boolean shouldSessionBeActive() {
        return mScreenOn && (mState == StatusBarState.KEYGUARD) && !mShowingAod;
    }

    private void updateInteractionType(@Classifier.InteractionType int type) {
        logDebug("InteractionType: " + type);
        mDataProvider.setInteractionType(type);
@@ -232,11 +261,7 @@ public class BrightLineFalsingManager implements FalsingManager {
    @Override
    public void setShowingAod(boolean showingAod) {
        mShowingAod = showingAod;
        if (showingAod) {
            sessionEnd();
        } else {
            sessionStart();
        }
        updateSessionActive();
    }

    @Override
@@ -343,13 +368,13 @@ public class BrightLineFalsingManager implements FalsingManager {
    @Override
    public void onScreenTurningOn() {
        mScreenOn = true;
        sessionStart();
        updateSessionActive();
    }

    @Override
    public void onScreenOff() {
        mScreenOn = false;
        sessionEnd();
        updateSessionActive();
    }


@@ -421,6 +446,7 @@ public class BrightLineFalsingManager implements FalsingManager {
    public void cleanup() {
        unregisterSensors();
        mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateCallback);
        mStatusBarStateController.removeCallback(mStatusBarStateListener);
    }

    static void logDebug(String msg) {
+1 −1
Original line number Diff line number Diff line
@@ -40,7 +40,7 @@ import javax.inject.Inject;
 */
public class ProximitySensor {
    private static final String TAG = "ProxSensor";
    private static final boolean DEBUG = false;
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);

    private final Sensor mSensor;
    private final AsyncSensorManager mSensorManager;
+6 −3
Original line number Diff line number Diff line
@@ -33,7 +33,9 @@ import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
import com.android.systemui.dock.DockManager;
import com.android.systemui.dock.DockManagerFake;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.DeviceConfigProxyFake;
import com.android.systemui.util.concurrency.FakeExecutor;
@@ -63,6 +65,7 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
    private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
    private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
    private DockManager mDockManager = new DockManagerFake();
    private StatusBarStateController mStatusBarStateController = new StatusBarStateControllerImpl();

    @Before
    public void setup() {
@@ -83,7 +86,7 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
    public void test_brightLineFalsingManagerDisabled() {
        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
                mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
                mDumpManager, mUiBgExecutor);
                mDumpManager, mUiBgExecutor, mStatusBarStateController);
        assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
    }

@@ -94,7 +97,7 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
        mExecutor.runAllReady();
        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
                mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
                mDumpManager, mUiBgExecutor);
                mDumpManager, mUiBgExecutor, mStatusBarStateController);
        assertThat(mProxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class));
    }

@@ -102,7 +105,7 @@ public class FalsingManagerProxyTest extends SysuiTestCase {
    public void test_brightLineFalsingManagerToggled() throws InterruptedException {
        mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
                mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
                mDumpManager, mUiBgExecutor);
                mDumpManager, mUiBgExecutor, mStatusBarStateController);
        assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));

        mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
+18 −1
Original line number Diff line number Diff line
@@ -22,12 +22,16 @@ import static org.mockito.Mockito.verify;

import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper;
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.statusbar.StatusBarState;
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
import com.android.systemui.statusbar.SysuiStatusBarStateController;
import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.DeviceConfigProxyFake;
import com.android.systemui.util.sensors.ProximitySensor;
@@ -40,6 +44,7 @@ import org.mockito.MockitoAnnotations;

@SmallTest
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
public class BrightLineFalsingManagerTest extends SysuiTestCase {


@@ -47,6 +52,7 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase {
    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    @Mock
    private ProximitySensor mProximitySensor;
    private SysuiStatusBarStateController mStatusBarStateController;

    private BrightLineFalsingManager mFalsingManager;

@@ -61,8 +67,11 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase {
        FalsingDataProvider falsingDataProvider = new FalsingDataProvider(dm);
        DeviceConfigProxy deviceConfigProxy = new DeviceConfigProxyFake();
        DockManager dockManager = new DockManagerFake();
        mStatusBarStateController = new StatusBarStateControllerImpl();
        mStatusBarStateController.setState(StatusBarState.KEYGUARD);
        mFalsingManager = new BrightLineFalsingManager(falsingDataProvider,
                mKeyguardUpdateMonitor, mProximitySensor, deviceConfigProxy, dockManager);
                mKeyguardUpdateMonitor, mProximitySensor, deviceConfigProxy, dockManager,
                mStatusBarStateController);
    }

    @Test
@@ -98,4 +107,12 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase {
        mFalsingManager.onBouncerHidden();
        verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class));
    }

    @Test
    public void testUnregisterSensor_StateTransition() {
        mFalsingManager.onScreenTurningOn();
        reset(mProximitySensor);
        mStatusBarStateController.setState(StatusBarState.SHADE);
        verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class));
    }
}