Merge "Register side swipes on the QS with the FalsingManager." into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a6950d1f01
@@ -42,6 +42,7 @@ public abstract class Classifier {
|
||||
public static final int QS_COLLAPSE = 12;
|
||||
public static final int UDFPS_AUTHENTICATION = 13;
|
||||
public static final int DISABLED_UDFPS_AFFORDANCE = 14;
|
||||
public static final int QS_SWIPE = 15;
|
||||
|
||||
@IntDef({
|
||||
QUICK_SETTINGS,
|
||||
@@ -59,7 +60,8 @@ public abstract class Classifier {
|
||||
QS_COLLAPSE,
|
||||
BRIGHTNESS_SLIDER,
|
||||
UDFPS_AUTHENTICATION,
|
||||
DISABLED_UDFPS_AFFORDANCE
|
||||
DISABLED_UDFPS_AFFORDANCE,
|
||||
QS_SWIPE
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface InteractionType {}
|
||||
|
||||
@@ -155,7 +155,8 @@ class DistanceClassifier extends FalsingClassifier {
|
||||
|| interactionType == SHADE_DRAG
|
||||
|| interactionType == QS_COLLAPSE
|
||||
|| interactionType == Classifier.UDFPS_AUTHENTICATION
|
||||
|| interactionType == Classifier.DISABLED_UDFPS_AFFORDANCE) {
|
||||
|| interactionType == Classifier.DISABLED_UDFPS_AFFORDANCE
|
||||
|| interactionType == Classifier.QS_SWIPE) {
|
||||
return Result.passed(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.systemui.classifier;
|
||||
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.BRIGHTLINE_FALSING_PROXIMITY_PERCENT_COVERED_THRESHOLD;
|
||||
import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER;
|
||||
import static com.android.systemui.classifier.Classifier.QS_COLLAPSE;
|
||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
||||
import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
|
||||
|
||||
import android.provider.DeviceConfig;
|
||||
@@ -118,7 +119,7 @@ class ProximityClassifier extends FalsingClassifier {
|
||||
@Classifier.InteractionType int interactionType,
|
||||
double historyBelief, double historyConfidence) {
|
||||
if (interactionType == QUICK_SETTINGS || interactionType == BRIGHTNESS_SLIDER
|
||||
|| interactionType == QS_COLLAPSE) {
|
||||
|| interactionType == QS_COLLAPSE || interactionType == QS_SWIPE) {
|
||||
return Result.passed(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ import static com.android.systemui.classifier.Classifier.NOTIFICATION_DISMISS;
|
||||
import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN;
|
||||
import static com.android.systemui.classifier.Classifier.PULSE_EXPAND;
|
||||
import static com.android.systemui.classifier.Classifier.QS_COLLAPSE;
|
||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
||||
import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
|
||||
import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE;
|
||||
import static com.android.systemui.classifier.Classifier.SHADE_DRAG;
|
||||
@@ -85,6 +86,9 @@ public class TypeClassifier extends FalsingClassifier {
|
||||
case QS_COLLAPSE:
|
||||
wrongDirection = !vertical || !up;
|
||||
break;
|
||||
case QS_SWIPE:
|
||||
wrongDirection = vertical;
|
||||
break;
|
||||
default:
|
||||
wrongDirection = true;
|
||||
break;
|
||||
|
||||
@@ -16,12 +16,14 @@
|
||||
|
||||
package com.android.systemui.qs;
|
||||
|
||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
||||
import static com.android.systemui.media.dagger.MediaModule.QS_PANEL;
|
||||
import static com.android.systemui.qs.QSPanel.QS_SHOW_BRIGHTNESS;
|
||||
import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.content.res.Configuration;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
@@ -31,6 +33,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.media.MediaHierarchyManager;
|
||||
import com.android.systemui.media.MediaHost;
|
||||
import com.android.systemui.plugins.FalsingManager;
|
||||
import com.android.systemui.plugins.qs.DetailAdapter;
|
||||
import com.android.systemui.plugins.qs.QSTile;
|
||||
import com.android.systemui.qs.customize.QSCustomizerController;
|
||||
@@ -58,6 +61,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
private final TunerService mTunerService;
|
||||
private final QSCustomizerController mQsCustomizerController;
|
||||
private final QSTileRevealController.Factory mQsTileRevealControllerFactory;
|
||||
private final FalsingManager mFalsingManager;
|
||||
private final BrightnessController mBrightnessController;
|
||||
private final BrightnessSlider.Factory mBrightnessSliderFactory;
|
||||
private final BrightnessSlider mBrightnessSlider;
|
||||
@@ -81,6 +85,16 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
private final BrightnessMirrorController.BrightnessMirrorListener mBrightnessMirrorListener =
|
||||
mirror -> updateBrightnessMirror();
|
||||
|
||||
private View.OnTouchListener mTileLayoutTouchListener = new View.OnTouchListener() {
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||
mFalsingManager.isFalseTouch(QS_SWIPE);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
@Inject
|
||||
QSPanelController(QSPanel view, QSSecurityFooter qsSecurityFooter, TunerService tunerService,
|
||||
QSTileHost qstileHost, QSCustomizerController qsCustomizerController,
|
||||
@@ -89,7 +103,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
QSTileRevealController.Factory qsTileRevealControllerFactory,
|
||||
DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger,
|
||||
QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory,
|
||||
BrightnessSlider.Factory brightnessSliderFactory,
|
||||
BrightnessSlider.Factory brightnessSliderFactory, FalsingManager falsingManager,
|
||||
FeatureFlags featureFlags) {
|
||||
super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost,
|
||||
metricsLogger, uiEventLogger, qsLogger, dumpManager, featureFlags);
|
||||
@@ -97,6 +111,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
mTunerService = tunerService;
|
||||
mQsCustomizerController = qsCustomizerController;
|
||||
mQsTileRevealControllerFactory = qsTileRevealControllerFactory;
|
||||
mFalsingManager = falsingManager;
|
||||
mQsSecurityFooter.setHostEnvironment(qstileHost);
|
||||
mBrightnessSliderFactory = brightnessSliderFactory;
|
||||
|
||||
@@ -133,6 +148,9 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
||||
if (mBrightnessMirrorController != null) {
|
||||
mBrightnessMirrorController.addCallback(mBrightnessMirrorListener);
|
||||
}
|
||||
|
||||
((PagedTileLayout) mView.createRegularTileLayout())
|
||||
.setOnTouchListener(mTileLayoutTouchListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.systemui.classifier;
|
||||
|
||||
import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER;
|
||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@@ -103,4 +104,11 @@ public class DistanceClassifierTest extends ClassifierTest {
|
||||
assertThat(mClassifier.classifyGesture(BRIGHTNESS_SLIDER, 0.5, 1).isFalse())
|
||||
.isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPass_QsSwipeAlwaysPasses() {
|
||||
mClassifier.onTouchEvent(appendDownEvent(1, 1));
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 1).isFalse())
|
||||
.isFalse();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ import static com.android.systemui.classifier.Classifier.LEFT_AFFORDANCE;
|
||||
import static com.android.systemui.classifier.Classifier.NOTIFICATION_DISMISS;
|
||||
import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN;
|
||||
import static com.android.systemui.classifier.Classifier.PULSE_EXPAND;
|
||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
||||
import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
|
||||
import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE;
|
||||
import static com.android.systemui.classifier.Classifier.UNLOCK;
|
||||
@@ -320,4 +321,46 @@ public class TypeClassifierTest extends ClassifierTest {
|
||||
when(mDataProvider.isRight()).thenReturn(true);
|
||||
assertThat(mClassifier.classifyGesture(BRIGHTNESS_SLIDER, 0.5, 0).isFalse()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPass_QsSwipe() {
|
||||
when(mDataProvider.isVertical()).thenReturn(false);
|
||||
|
||||
when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect.
|
||||
when(mDataProvider.isRight()).thenReturn(false);
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
|
||||
|
||||
when(mDataProvider.isUp()).thenReturn(true);
|
||||
when(mDataProvider.isRight()).thenReturn(false);
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
|
||||
|
||||
when(mDataProvider.isUp()).thenReturn(false);
|
||||
when(mDataProvider.isRight()).thenReturn(true);
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
|
||||
|
||||
when(mDataProvider.isUp()).thenReturn(true);
|
||||
when(mDataProvider.isRight()).thenReturn(true);
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFalse_QsSwipe() {
|
||||
when(mDataProvider.isVertical()).thenReturn(true);
|
||||
|
||||
when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect.
|
||||
when(mDataProvider.isRight()).thenReturn(false);
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
|
||||
|
||||
when(mDataProvider.isUp()).thenReturn(true);
|
||||
when(mDataProvider.isRight()).thenReturn(false);
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
|
||||
|
||||
when(mDataProvider.isUp()).thenReturn(false);
|
||||
when(mDataProvider.isRight()).thenReturn(true);
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
|
||||
|
||||
when(mDataProvider.isUp()).thenReturn(true);
|
||||
when(mDataProvider.isRight()).thenReturn(true);
|
||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import com.android.internal.logging.MetricsLogger;
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.internal.logging.testing.UiEventLoggerFake;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.classifier.FalsingManagerFake;
|
||||
import com.android.systemui.dump.DumpManager;
|
||||
import com.android.systemui.media.MediaHost;
|
||||
import com.android.systemui.plugins.qs.QSTileView;
|
||||
@@ -94,6 +95,7 @@ public class QSPanelControllerTest extends SysuiTestCase {
|
||||
QSTileView mQSTileView;
|
||||
@Mock
|
||||
PagedTileLayout mPagedTileLayout;
|
||||
FalsingManagerFake mFalsingManager = new FalsingManagerFake();
|
||||
@Mock
|
||||
FeatureFlags mFeatureFlags;
|
||||
|
||||
@@ -121,7 +123,7 @@ public class QSPanelControllerTest extends SysuiTestCase {
|
||||
mQSTileHost, mQSCustomizerController, true, mMediaHost,
|
||||
mQSTileRevealControllerFactory, mDumpManager, mMetricsLogger, mUiEventLogger,
|
||||
mQSLogger, mBrightnessControllerFactory, mToggleSliderViewControllerFactory,
|
||||
mFeatureFlags
|
||||
mFalsingManager, mFeatureFlags
|
||||
);
|
||||
|
||||
mController.init();
|
||||
|
||||
Reference in New Issue
Block a user