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

Commit d0848580 authored by Leon Masopust's avatar Leon Masopust
Browse files

Skip falsing for desktop devices

Falsing should never be applied on laptops and other desktop
devices.

Bug: 435151039
Flag: EXEMPT desktop only, protected by config
Test: bouncer falsing on cf desktop using tap and mouse clicks
Test: atest FalsingDataProviderTest, atest BrightLineFalsingManagerTest, atest ClassifierTest
Change-Id: I9cd1d830689d26983be2c8b3057ad0a61a902089
parent ce10b039
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -210,6 +210,13 @@ public class BrightLineFalsingManagerTest extends SysuiTestCase {
        assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.GENERIC)).isFalse();
    }

    @Test
    public void testSkipDesktopDevices() {
        assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.GENERIC)).isTrue();
        when(mFalsingDataProvider.isDesktop()).thenReturn(true);
        assertThat(mBrightLineFalsingManager.isFalseTouch(Classifier.GENERIC)).isFalse();
    }

    @Test
    @DisableFlags(Flags.FLAG_NON_TOUCHSCREEN_DEVICES_BYPASS_FALSING)
    public void testTrackpadGesture() {
+5 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.view.MotionEvent;
import androidx.test.uiautomator.Configurator;

import com.android.systemui.SysuiTestCase;
import com.android.systemui.desktop.domain.interactor.DesktopInteractor;
import com.android.systemui.dock.DockManagerFake;
import com.android.systemui.statusbar.policy.BatteryController;

@@ -44,7 +45,8 @@ public class ClassifierTest extends SysuiTestCase {
    private BatteryController mBatteryController;
    private FoldStateListener mFoldStateListener = new FoldStateListener(mContext);
    private final DockManagerFake mDockManager = new DockManagerFake();

    @Mock
    private DesktopInteractor mDesktopInteractor;
    public void setup() {
        MockitoAnnotations.initMocks(this);
        DisplayMetrics displayMetrics = new DisplayMetrics();
@@ -53,7 +55,8 @@ public class ClassifierTest extends SysuiTestCase {
        displayMetrics.widthPixels = 1000;
        displayMetrics.heightPixels = 1000;
        mDataProvider = new FalsingDataProvider(
                displayMetrics, mBatteryController, mFoldStateListener, mDockManager, false);
                displayMetrics, mBatteryController, mFoldStateListener, mDockManager,
                mDesktopInteractor, false);
    }

    @After
+1 −0
Original line number Diff line number Diff line
@@ -395,6 +395,7 @@ public class BrightLineFalsingManager implements FalsingManager {
                || mDataProvider.isFromTrackpad()
                || mDataProvider.isFromKeyboard()
                || !mDataProvider.isTouchScreenSource()
                || mDataProvider.isDesktop()
                || mDataProvider.isUnfolded()
                || mDataProvider.isShowingCommunalHub();
    }
+9 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.view.MotionEvent.PointerProperties;

import com.android.systemui.Flags;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.desktop.domain.interactor.DesktopInteractor;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.policy.BatteryController;

@@ -53,6 +54,8 @@ public class FalsingDataProvider {
    private BatteryController mBatteryController;
    private final FoldStateListener mFoldStateListener;
    private final DockManager mDockManager;

    private final DesktopInteractor mDesktopInteractor;
    private boolean mIsFoldableDevice;
    private final float mXdpi;
    private final float mYdpi;
@@ -82,6 +85,7 @@ public class FalsingDataProvider {
            BatteryController batteryController,
            FoldStateListener foldStateListener,
            DockManager dockManager,
            DesktopInteractor desktopInteractor,
            @Named(IS_FOLDABLE_DEVICE) boolean isFoldableDevice) {
        mXdpi = displayMetrics.xdpi;
        mYdpi = displayMetrics.ydpi;
@@ -90,6 +94,7 @@ public class FalsingDataProvider {
        mBatteryController = batteryController;
        mFoldStateListener = foldStateListener;
        mDockManager = dockManager;
        mDesktopInteractor = desktopInteractor;
        mIsFoldableDevice = isFoldableDevice;

        FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi());
@@ -502,6 +507,10 @@ public class FalsingDataProvider {
        return mIsFoldableDevice && Boolean.FALSE.equals(mFoldStateListener.getFolded());
    }

    public boolean isDesktop() {
        return mDesktopInteractor.isDesktopFeatureSetEnabled().getValue();
    }

    /** Implement to be alerted abotu the beginning and ending of falsing tracking. */
    public interface SessionListener {
        /** Called when the lock screen is shown and falsing-tracking begins. */
+15 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.systemui.classifier;

import static com.google.common.truth.Truth.assertThat;

import static kotlinx.coroutines.flow.StateFlowKt.MutableStateFlow;

import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.mock;
@@ -41,6 +43,7 @@ import androidx.test.filters.SmallTest;

import com.android.systemui.Flags;
import com.android.systemui.classifier.FalsingDataProvider.GestureFinalizedListener;
import com.android.systemui.desktop.domain.interactor.DesktopInteractor;
import com.android.systemui.dock.DockManagerFake;
import com.android.systemui.statusbar.policy.BatteryController;

@@ -62,6 +65,8 @@ public class FalsingDataProviderTest extends ClassifierTest {
    private BatteryController mBatteryController;
    @Mock
    private FoldStateListener mFoldStateListener;
    @Mock
    private DesktopInteractor mDesktopInteractor;
    private final DockManagerFake mDockManager = new DockManagerFake();
    private DisplayMetrics mDisplayMetrics;
    private IInputManager mIInputManager;
@@ -343,6 +348,15 @@ public class FalsingDataProviderTest extends ClassifierTest {
        assertThat(mDataProvider.isDocked()).isTrue();
    }

    @Test
    public void test_isDesktop() {
        when(mDesktopInteractor.isDesktopFeatureSetEnabled()).thenReturn(MutableStateFlow(false));
        assertThat(mDataProvider.isDesktop()).isFalse();

        when(mDesktopInteractor.isDesktopFeatureSetEnabled()).thenReturn(MutableStateFlow(true));
        assertThat(mDataProvider.isDesktop()).isTrue();
    }

    @Test
    public void test_GestureFinalizedListener() {
        GestureFinalizedListener listener = mock(GestureFinalizedListener.class);
@@ -501,6 +515,6 @@ public class FalsingDataProviderTest extends ClassifierTest {

    private FalsingDataProvider createWithFoldCapability(boolean foldable) {
        return new FalsingDataProvider(mDisplayMetrics, mBatteryController, mFoldStateListener,
                mDockManager, foldable);
                mDockManager, mDesktopInteractor, foldable);
    }
}