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

Commit ce3b1c0d authored by Dave Mankoff's avatar Dave Mankoff Committed by Automerger Merge Worker
Browse files

Merge "Don't report non-foldables as unfolded." into tm-qpr-dev am: b1f2fb99...

Merge "Don't report non-foldables as unfolded." into tm-qpr-dev am: b1f2fb99 am: 5e06db80 am: 49ef1d5d

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22220292



Change-Id: Ie363cbd994107286e55d7129ddb2f3bc6fb67aff
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents c770799d 49ef1d5d
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.classifier;

import static com.android.systemui.classifier.FalsingModule.IS_FOLDABLE_DEVICE;

import android.hardware.devicestate.DeviceStateManager.FoldStateListener;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
@@ -30,6 +32,7 @@ import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

/**
 * Acts as a cache and utility class for FalsingClassifiers.
@@ -46,6 +49,7 @@ public class FalsingDataProvider {
    private BatteryController mBatteryController;
    private final FoldStateListener mFoldStateListener;
    private final DockManager mDockManager;
    private boolean mIsFoldableDevice;
    private final float mXdpi;
    private final float mYdpi;
    private final List<SessionListener> mSessionListeners = new ArrayList<>();
@@ -70,7 +74,8 @@ public class FalsingDataProvider {
            DisplayMetrics displayMetrics,
            BatteryController batteryController,
            FoldStateListener foldStateListener,
            DockManager dockManager) {
            DockManager dockManager,
            @Named(IS_FOLDABLE_DEVICE) boolean isFoldableDevice) {
        mXdpi = displayMetrics.xdpi;
        mYdpi = displayMetrics.ydpi;
        mWidthPixels = displayMetrics.widthPixels;
@@ -78,6 +83,7 @@ public class FalsingDataProvider {
        mBatteryController = batteryController;
        mFoldStateListener = foldStateListener;
        mDockManager = dockManager;
        mIsFoldableDevice = isFoldableDevice;

        FalsingClassifier.logInfo("xdpi, ydpi: " + getXdpi() + ", " + getYdpi());
        FalsingClassifier.logInfo("width, height: " + getWidthPixels() + ", " + getHeightPixels());
@@ -417,7 +423,7 @@ public class FalsingDataProvider {
    }

    public boolean isUnfolded() {
        return Boolean.FALSE.equals(mFoldStateListener.getFolded());
        return mIsFoldableDevice && Boolean.FALSE.equals(mFoldStateListener.getFolded());
    }

    /** Implement to be alerted abotu the beginning and ending of falsing tracking. */
+13 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ public interface FalsingModule {
    String LONG_TAP_TOUCH_SLOP = "falsing_long_tap_slop";
    String DOUBLE_TAP_TOUCH_SLOP = "falsing_double_tap_touch_slop";
    String DOUBLE_TAP_TIMEOUT_MS = "falsing_double_tap_timeout_ms";
    String IS_FOLDABLE_DEVICE = "falsing_foldable_device";

    /** */
    @Binds
@@ -89,4 +90,16 @@ public interface FalsingModule {
    static float providesLongTapTouchSlop(ViewConfiguration viewConfiguration) {
        return viewConfiguration.getScaledTouchSlop() * 1.25f;
    }

    /** */
    @Provides
    @Named(IS_FOLDABLE_DEVICE)
    static boolean providesIsFoldableDevice(@Main Resources resources) {
        try {
            return resources.getIntArray(
                    com.android.internal.R.array.config_foldedDeviceStates).length != 0;
        } catch (Resources.NotFoundException e) {
            return false;
        }
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ public class ClassifierTest extends SysuiTestCase {
        displayMetrics.widthPixels = 1000;
        displayMetrics.heightPixels = 1000;
        mDataProvider = new FalsingDataProvider(
                displayMetrics, mBatteryController, mFoldStateListener, mDockManager);
                displayMetrics, mBatteryController, mFoldStateListener, mDockManager, false);
    }

    @After
+35 −13
Original line number Diff line number Diff line
@@ -54,18 +54,18 @@ public class FalsingDataProviderTest extends ClassifierTest {
    @Mock
    private FoldStateListener mFoldStateListener;
    private final DockManagerFake mDockManager = new DockManagerFake();
    private DisplayMetrics mDisplayMetrics;

    @Before
    public void setup() {
        super.setup();
        MockitoAnnotations.initMocks(this);
        DisplayMetrics displayMetrics = new DisplayMetrics();
        displayMetrics.xdpi = 100;
        displayMetrics.ydpi = 100;
        displayMetrics.widthPixels = 1000;
        displayMetrics.heightPixels = 1000;
        mDataProvider = new FalsingDataProvider(
                displayMetrics, mBatteryController, mFoldStateListener, mDockManager);
        mDisplayMetrics = new DisplayMetrics();
        mDisplayMetrics.xdpi = 100;
        mDisplayMetrics.ydpi = 100;
        mDisplayMetrics.widthPixels = 1000;
        mDisplayMetrics.heightPixels = 1000;
        mDataProvider = createWithFoldCapability(false);
    }

    @After
@@ -345,20 +345,42 @@ public class FalsingDataProviderTest extends ClassifierTest {
    }

    @Test
    public void test_FoldedState_Folded() {
    public void test_UnfoldedState_Folded() {
        FalsingDataProvider falsingDataProvider = createWithFoldCapability(true);
        when(mFoldStateListener.getFolded()).thenReturn(true);
        assertThat(mDataProvider.isUnfolded()).isFalse();
        assertThat(falsingDataProvider.isUnfolded()).isFalse();
    }

    @Test
    public void test_FoldedState_Unfolded() {
    public void test_UnfoldedState_Unfolded() {
        FalsingDataProvider falsingDataProvider = createWithFoldCapability(true);
        when(mFoldStateListener.getFolded()).thenReturn(false);
        assertThat(mDataProvider.isUnfolded()).isTrue();
        assertThat(falsingDataProvider.isUnfolded()).isTrue();
    }

    @Test
    public void test_FoldedState_NotFoldable() {
    public void test_Nonfoldabled_TrueFoldState() {
        FalsingDataProvider falsingDataProvider = createWithFoldCapability(false);
        when(mFoldStateListener.getFolded()).thenReturn(true);
        assertThat(falsingDataProvider.isUnfolded()).isFalse();
    }

    @Test
    public void test_Nonfoldabled_FalseFoldState() {
        FalsingDataProvider falsingDataProvider = createWithFoldCapability(false);
        when(mFoldStateListener.getFolded()).thenReturn(false);
        assertThat(falsingDataProvider.isUnfolded()).isFalse();
    }

    @Test
    public void test_Nonfoldabled_NullFoldState() {
        FalsingDataProvider falsingDataProvider = createWithFoldCapability(true);
        when(mFoldStateListener.getFolded()).thenReturn(null);
        assertThat(mDataProvider.isUnfolded()).isFalse();
        assertThat(falsingDataProvider.isUnfolded()).isFalse();
    }

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