Merge "Analyze vertical swipes on QS's Scroll View." into tm-qpr-dev
This commit is contained in:
@@ -220,7 +220,7 @@ public class BrightLineFalsingManager implements FalsingManager {
|
|||||||
return r;
|
return r;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
logDebug("False Gesture: " + localResult[0]);
|
logDebug("False Gesture (type: " + interactionType + "): " + localResult[0]);
|
||||||
|
|
||||||
return localResult[0];
|
return localResult[0];
|
||||||
}
|
}
|
||||||
@@ -454,6 +454,12 @@ public class BrightLineFalsingManager implements FalsingManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void logVerbose(String msg) {
|
||||||
|
if (DEBUG) {
|
||||||
|
Log.v(TAG, msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void logInfo(String msg) {
|
static void logInfo(String msg) {
|
||||||
Log.i(TAG, msg);
|
Log.i(TAG, msg);
|
||||||
RECENT_INFO_LOG.add(msg);
|
RECENT_INFO_LOG.add(msg);
|
||||||
|
|||||||
@@ -42,8 +42,9 @@ public abstract class Classifier {
|
|||||||
public static final int QS_COLLAPSE = 12;
|
public static final int QS_COLLAPSE = 12;
|
||||||
public static final int UDFPS_AUTHENTICATION = 13;
|
public static final int UDFPS_AUTHENTICATION = 13;
|
||||||
public static final int LOCK_ICON = 14;
|
public static final int LOCK_ICON = 14;
|
||||||
public static final int QS_SWIPE = 15;
|
public static final int QS_SWIPE_SIDE = 15;
|
||||||
public static final int BACK_GESTURE = 16;
|
public static final int BACK_GESTURE = 16;
|
||||||
|
public static final int QS_SWIPE_NESTED = 17;
|
||||||
|
|
||||||
@IntDef({
|
@IntDef({
|
||||||
QUICK_SETTINGS,
|
QUICK_SETTINGS,
|
||||||
@@ -62,7 +63,8 @@ public abstract class Classifier {
|
|||||||
BRIGHTNESS_SLIDER,
|
BRIGHTNESS_SLIDER,
|
||||||
UDFPS_AUTHENTICATION,
|
UDFPS_AUTHENTICATION,
|
||||||
LOCK_ICON,
|
LOCK_ICON,
|
||||||
QS_SWIPE,
|
QS_SWIPE_SIDE,
|
||||||
|
QS_SWIPE_NESTED,
|
||||||
BACK_GESTURE
|
BACK_GESTURE
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.BRIGHT
|
|||||||
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.BRIGHTLINE_FALSING_DISTANCE_VERTICAL_SWIPE_THRESHOLD_IN;
|
import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.BRIGHTLINE_FALSING_DISTANCE_VERTICAL_SWIPE_THRESHOLD_IN;
|
||||||
import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER;
|
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_COLLAPSE;
|
||||||
|
import static com.android.systemui.classifier.Classifier.QS_SWIPE_NESTED;
|
||||||
import static com.android.systemui.classifier.Classifier.SHADE_DRAG;
|
import static com.android.systemui.classifier.Classifier.SHADE_DRAG;
|
||||||
|
|
||||||
import android.provider.DeviceConfig;
|
import android.provider.DeviceConfig;
|
||||||
@@ -156,7 +157,8 @@ class DistanceClassifier extends FalsingClassifier {
|
|||||||
|| interactionType == QS_COLLAPSE
|
|| interactionType == QS_COLLAPSE
|
||||||
|| interactionType == Classifier.UDFPS_AUTHENTICATION
|
|| interactionType == Classifier.UDFPS_AUTHENTICATION
|
||||||
|| interactionType == Classifier.LOCK_ICON
|
|| interactionType == Classifier.LOCK_ICON
|
||||||
|| interactionType == Classifier.QS_SWIPE) {
|
|| interactionType == Classifier.QS_SWIPE_SIDE
|
||||||
|
|| interactionType == QS_SWIPE_NESTED) {
|
||||||
return Result.passed(0);
|
return Result.passed(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -147,6 +147,11 @@ public abstract class FalsingClassifier {
|
|||||||
BrightLineFalsingManager.logDebug(msg);
|
BrightLineFalsingManager.logDebug(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** */
|
||||||
|
public static void logVerbose(String msg) {
|
||||||
|
BrightLineFalsingManager.logVerbose(msg);
|
||||||
|
}
|
||||||
|
|
||||||
/** */
|
/** */
|
||||||
public static void logInfo(String msg) {
|
public static void logInfo(String msg) {
|
||||||
BrightLineFalsingManager.logInfo(msg);
|
BrightLineFalsingManager.logInfo(msg);
|
||||||
|
|||||||
@@ -78,10 +78,10 @@ public class FalsingDataProvider {
|
|||||||
|
|
||||||
void onMotionEvent(MotionEvent motionEvent) {
|
void onMotionEvent(MotionEvent motionEvent) {
|
||||||
List<MotionEvent> motionEvents = unpackMotionEvent(motionEvent);
|
List<MotionEvent> motionEvents = unpackMotionEvent(motionEvent);
|
||||||
FalsingClassifier.logDebug("Unpacked into: " + motionEvents.size());
|
FalsingClassifier.logVerbose("Unpacked into: " + motionEvents.size());
|
||||||
if (BrightLineFalsingManager.DEBUG) {
|
if (BrightLineFalsingManager.DEBUG) {
|
||||||
for (MotionEvent m : motionEvents) {
|
for (MotionEvent m : motionEvents) {
|
||||||
FalsingClassifier.logDebug(
|
FalsingClassifier.logVerbose(
|
||||||
"x,y,t: " + m.getX() + "," + m.getY() + "," + m.getEventTime());
|
"x,y,t: " + m.getX() + "," + m.getY() + "," + m.getEventTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,7 +92,7 @@ public class FalsingDataProvider {
|
|||||||
}
|
}
|
||||||
mRecentMotionEvents.addAll(motionEvents);
|
mRecentMotionEvents.addAll(motionEvents);
|
||||||
|
|
||||||
FalsingClassifier.logDebug("Size: " + mRecentMotionEvents.size());
|
FalsingClassifier.logVerbose("Size: " + mRecentMotionEvents.size());
|
||||||
|
|
||||||
mMotionEventListeners.forEach(listener -> listener.onMotionEvent(motionEvent));
|
mMotionEventListeners.forEach(listener -> listener.onMotionEvent(motionEvent));
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +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.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.BRIGHTNESS_SLIDER;
|
||||||
import static com.android.systemui.classifier.Classifier.QS_COLLAPSE;
|
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.QS_SWIPE_SIDE;
|
||||||
import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
|
import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
|
||||||
|
|
||||||
import android.provider.DeviceConfig;
|
import android.provider.DeviceConfig;
|
||||||
@@ -119,7 +119,7 @@ class ProximityClassifier extends FalsingClassifier {
|
|||||||
@Classifier.InteractionType int interactionType,
|
@Classifier.InteractionType int interactionType,
|
||||||
double historyBelief, double historyConfidence) {
|
double historyBelief, double historyConfidence) {
|
||||||
if (interactionType == QUICK_SETTINGS || interactionType == BRIGHTNESS_SLIDER
|
if (interactionType == QUICK_SETTINGS || interactionType == BRIGHTNESS_SLIDER
|
||||||
|| interactionType == QS_COLLAPSE || interactionType == QS_SWIPE) {
|
|| interactionType == QS_COLLAPSE || interactionType == QS_SWIPE_SIDE) {
|
||||||
return Result.passed(0);
|
return Result.passed(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,8 @@ 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.NOTIFICATION_DRAG_DOWN;
|
||||||
import static com.android.systemui.classifier.Classifier.PULSE_EXPAND;
|
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_COLLAPSE;
|
||||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
import static com.android.systemui.classifier.Classifier.QS_SWIPE_NESTED;
|
||||||
|
import static com.android.systemui.classifier.Classifier.QS_SWIPE_SIDE;
|
||||||
import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
|
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.RIGHT_AFFORDANCE;
|
||||||
import static com.android.systemui.classifier.Classifier.SHADE_DRAG;
|
import static com.android.systemui.classifier.Classifier.SHADE_DRAG;
|
||||||
@@ -86,9 +87,12 @@ public class TypeClassifier extends FalsingClassifier {
|
|||||||
case QS_COLLAPSE:
|
case QS_COLLAPSE:
|
||||||
wrongDirection = !vertical || !up;
|
wrongDirection = !vertical || !up;
|
||||||
break;
|
break;
|
||||||
case QS_SWIPE:
|
case QS_SWIPE_SIDE:
|
||||||
wrongDirection = vertical;
|
wrongDirection = vertical;
|
||||||
break;
|
break;
|
||||||
|
case QS_SWIPE_NESTED:
|
||||||
|
wrongDirection = !vertical;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
wrongDirection = true;
|
wrongDirection = true;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -137,8 +137,8 @@ class ZigZagClassifier extends FalsingClassifier {
|
|||||||
runningAbsDy += Math.abs(point.y - pY);
|
runningAbsDy += Math.abs(point.y - pY);
|
||||||
pX = point.x;
|
pX = point.x;
|
||||||
pY = point.y;
|
pY = point.y;
|
||||||
logDebug("(x, y, runningAbsDx, runningAbsDy) - (" + pX + ", " + pY + ", " + runningAbsDx
|
logVerbose("(x, y, runningAbsDx, runningAbsDy) - ("
|
||||||
+ ", " + runningAbsDy + ")");
|
+ pX + ", " + pY + ", " + runningAbsDx + ", " + runningAbsDy + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
float devianceX = runningAbsDx - actualDx;
|
float devianceX = runningAbsDx - actualDx;
|
||||||
|
|||||||
@@ -28,21 +28,29 @@ import android.widget.ScrollView;
|
|||||||
public class NonInterceptingScrollView extends ScrollView {
|
public class NonInterceptingScrollView extends ScrollView {
|
||||||
|
|
||||||
private final int mTouchSlop;
|
private final int mTouchSlop;
|
||||||
|
|
||||||
private float mDownY;
|
private float mDownY;
|
||||||
private boolean mScrollEnabled = true;
|
private boolean mScrollEnabled = true;
|
||||||
|
private boolean mPreventingIntercept;
|
||||||
|
|
||||||
public NonInterceptingScrollView(Context context, AttributeSet attrs) {
|
public NonInterceptingScrollView(Context context, AttributeSet attrs) {
|
||||||
super(context, attrs);
|
super(context, attrs);
|
||||||
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
|
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isPreventingIntercept() {
|
||||||
|
return mPreventingIntercept;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onTouchEvent(MotionEvent ev) {
|
public boolean onTouchEvent(MotionEvent ev) {
|
||||||
int action = ev.getActionMasked();
|
int action = ev.getActionMasked();
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case MotionEvent.ACTION_DOWN:
|
case MotionEvent.ACTION_DOWN:
|
||||||
|
mPreventingIntercept = false;
|
||||||
if (canScrollVertically(1)) {
|
if (canScrollVertically(1)) {
|
||||||
// If we can scroll down, make sure we're not intercepted by the parent
|
// If we can scroll down, make sure we're not intercepted by the parent
|
||||||
|
mPreventingIntercept = true;
|
||||||
final ViewParent parent = getParent();
|
final ViewParent parent = getParent();
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
parent.requestDisallowInterceptTouchEvent(true);
|
parent.requestDisallowInterceptTouchEvent(true);
|
||||||
@@ -62,10 +70,13 @@ public class NonInterceptingScrollView extends ScrollView {
|
|||||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||||
// If there's a touch on this view and we can scroll down, we don't want to be intercepted
|
// If there's a touch on this view and we can scroll down, we don't want to be intercepted
|
||||||
int action = ev.getActionMasked();
|
int action = ev.getActionMasked();
|
||||||
|
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case MotionEvent.ACTION_DOWN:
|
case MotionEvent.ACTION_DOWN:
|
||||||
// If we can scroll down, make sure non of our parents intercepts us.
|
mPreventingIntercept = false;
|
||||||
|
// If we can scroll down, make sure none of our parents intercepts us.
|
||||||
if (canScrollVertically(1)) {
|
if (canScrollVertically(1)) {
|
||||||
|
mPreventingIntercept = true;
|
||||||
final ViewParent parent = getParent();
|
final ViewParent parent = getParent();
|
||||||
if (parent != null) {
|
if (parent != null) {
|
||||||
parent.requestDisallowInterceptTouchEvent(true);
|
parent.requestDisallowInterceptTouchEvent(true);
|
||||||
|
|||||||
@@ -131,6 +131,10 @@ public class QSContainerImpl extends FrameLayout implements Dumpable {
|
|||||||
updateClippingPath();
|
updateClippingPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NonInterceptingScrollView getQSPanelContainer() {
|
||||||
|
return mQSPanelContainer;
|
||||||
|
}
|
||||||
|
|
||||||
public void disable(int state1, int state2, boolean animate) {
|
public void disable(int state1, int state2, boolean animate) {
|
||||||
final boolean disabled = (state2 & DISABLE2_QUICK_SETTINGS) != 0;
|
final boolean disabled = (state2 & DISABLE2_QUICK_SETTINGS) != 0;
|
||||||
if (disabled == mQsDisabled) return;
|
if (disabled == mQsDisabled) return;
|
||||||
|
|||||||
@@ -16,8 +16,13 @@
|
|||||||
|
|
||||||
package com.android.systemui.qs;
|
package com.android.systemui.qs;
|
||||||
|
|
||||||
import android.content.res.Configuration;
|
import static com.android.systemui.classifier.Classifier.QS_SWIPE_NESTED;
|
||||||
|
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import com.android.systemui.plugins.FalsingManager;
|
||||||
import com.android.systemui.qs.dagger.QSScope;
|
import com.android.systemui.qs.dagger.QSScope;
|
||||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||||
import com.android.systemui.util.ViewController;
|
import com.android.systemui.util.ViewController;
|
||||||
@@ -30,6 +35,8 @@ public class QSContainerImplController extends ViewController<QSContainerImpl> {
|
|||||||
private final QSPanelController mQsPanelController;
|
private final QSPanelController mQsPanelController;
|
||||||
private final QuickStatusBarHeaderController mQuickStatusBarHeaderController;
|
private final QuickStatusBarHeaderController mQuickStatusBarHeaderController;
|
||||||
private final ConfigurationController mConfigurationController;
|
private final ConfigurationController mConfigurationController;
|
||||||
|
private final FalsingManager mFalsingManager;
|
||||||
|
private final NonInterceptingScrollView mQSPanelContainer;
|
||||||
|
|
||||||
private final ConfigurationController.ConfigurationListener mConfigurationListener =
|
private final ConfigurationController.ConfigurationListener mConfigurationListener =
|
||||||
new ConfigurationController.ConfigurationListener() {
|
new ConfigurationController.ConfigurationListener() {
|
||||||
@@ -39,14 +46,32 @@ public class QSContainerImplController extends ViewController<QSContainerImpl> {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private final View.OnTouchListener mContainerTouchHandler = new View.OnTouchListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||||
|
if (mQSPanelContainer.isPreventingIntercept()) {
|
||||||
|
// There's really no action here to take, but we need to tell the FalsingManager
|
||||||
|
mFalsingManager.isFalseTouch(QS_SWIPE_NESTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
QSContainerImplController(QSContainerImpl view, QSPanelController qsPanelController,
|
QSContainerImplController(
|
||||||
|
QSContainerImpl view,
|
||||||
|
QSPanelController qsPanelController,
|
||||||
QuickStatusBarHeaderController quickStatusBarHeaderController,
|
QuickStatusBarHeaderController quickStatusBarHeaderController,
|
||||||
ConfigurationController configurationController) {
|
ConfigurationController configurationController,
|
||||||
|
FalsingManager falsingManager) {
|
||||||
super(view);
|
super(view);
|
||||||
mQsPanelController = qsPanelController;
|
mQsPanelController = qsPanelController;
|
||||||
mQuickStatusBarHeaderController = quickStatusBarHeaderController;
|
mQuickStatusBarHeaderController = quickStatusBarHeaderController;
|
||||||
mConfigurationController = configurationController;
|
mConfigurationController = configurationController;
|
||||||
|
mFalsingManager = falsingManager;
|
||||||
|
mQSPanelContainer = mView.getQSPanelContainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -62,11 +87,13 @@ public class QSContainerImplController extends ViewController<QSContainerImpl> {
|
|||||||
protected void onViewAttached() {
|
protected void onViewAttached() {
|
||||||
mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController);
|
mView.updateResources(mQsPanelController, mQuickStatusBarHeaderController);
|
||||||
mConfigurationController.addCallback(mConfigurationListener);
|
mConfigurationController.addCallback(mConfigurationListener);
|
||||||
|
mQSPanelContainer.setOnTouchListener(mContainerTouchHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onViewDetached() {
|
protected void onViewDetached() {
|
||||||
mConfigurationController.removeCallback(mConfigurationListener);
|
mConfigurationController.removeCallback(mConfigurationListener);
|
||||||
|
mQSPanelContainer.setOnTouchListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public QSContainerImpl getView() {
|
public QSContainerImpl getView() {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package com.android.systemui.qs;
|
package com.android.systemui.qs;
|
||||||
|
|
||||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
import static com.android.systemui.classifier.Classifier.QS_SWIPE_SIDE;
|
||||||
import static com.android.systemui.media.dagger.MediaModule.QS_PANEL;
|
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.QSPanel.QS_SHOW_BRIGHTNESS;
|
||||||
import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER;
|
import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER;
|
||||||
@@ -76,7 +76,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> {
|
|||||||
@Override
|
@Override
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
|
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
|
||||||
mFalsingManager.isFalseTouch(QS_SWIPE);
|
mFalsingManager.isFalseTouch(QS_SWIPE_SIDE);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
package com.android.systemui.classifier;
|
package com.android.systemui.classifier;
|
||||||
|
|
||||||
import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER;
|
import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER;
|
||||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
import static com.android.systemui.classifier.Classifier.QS_SWIPE_SIDE;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
@@ -106,9 +106,9 @@ public class DistanceClassifierTest extends ClassifierTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPass_QsSwipeAlwaysPasses() {
|
public void testPass_QsSwipeSideAlwaysPasses() {
|
||||||
mClassifier.onTouchEvent(appendDownEvent(1, 1));
|
mClassifier.onTouchEvent(appendDownEvent(1, 1));
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 1).isFalse())
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 1).isFalse())
|
||||||
.isFalse();
|
.isFalse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ 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_DISMISS;
|
||||||
import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN;
|
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.PULSE_EXPAND;
|
||||||
import static com.android.systemui.classifier.Classifier.QS_SWIPE;
|
import static com.android.systemui.classifier.Classifier.QS_SWIPE_NESTED;
|
||||||
|
import static com.android.systemui.classifier.Classifier.QS_SWIPE_SIDE;
|
||||||
import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS;
|
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.RIGHT_AFFORDANCE;
|
||||||
import static com.android.systemui.classifier.Classifier.UNLOCK;
|
import static com.android.systemui.classifier.Classifier.UNLOCK;
|
||||||
@@ -323,44 +324,86 @@ public class TypeClassifierTest extends ClassifierTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPass_QsSwipe() {
|
public void testPass_QsSwipeSide() {
|
||||||
when(mDataProvider.isVertical()).thenReturn(false);
|
when(mDataProvider.isVertical()).thenReturn(false);
|
||||||
|
|
||||||
when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect.
|
when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect.
|
||||||
when(mDataProvider.isRight()).thenReturn(false);
|
when(mDataProvider.isRight()).thenReturn(false);
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 0).isFalse()).isFalse();
|
||||||
|
|
||||||
when(mDataProvider.isUp()).thenReturn(true);
|
when(mDataProvider.isUp()).thenReturn(true);
|
||||||
when(mDataProvider.isRight()).thenReturn(false);
|
when(mDataProvider.isRight()).thenReturn(false);
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 0).isFalse()).isFalse();
|
||||||
|
|
||||||
when(mDataProvider.isUp()).thenReturn(false);
|
when(mDataProvider.isUp()).thenReturn(false);
|
||||||
when(mDataProvider.isRight()).thenReturn(true);
|
when(mDataProvider.isRight()).thenReturn(true);
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 0).isFalse()).isFalse();
|
||||||
|
|
||||||
when(mDataProvider.isUp()).thenReturn(true);
|
when(mDataProvider.isUp()).thenReturn(true);
|
||||||
when(mDataProvider.isRight()).thenReturn(true);
|
when(mDataProvider.isRight()).thenReturn(true);
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse();
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 0).isFalse()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFalse_QsSwipe() {
|
public void testFalse_QsSwipeSide() {
|
||||||
when(mDataProvider.isVertical()).thenReturn(true);
|
when(mDataProvider.isVertical()).thenReturn(true);
|
||||||
|
|
||||||
when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect.
|
when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect.
|
||||||
when(mDataProvider.isRight()).thenReturn(false);
|
when(mDataProvider.isRight()).thenReturn(false);
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 0).isFalse()).isTrue();
|
||||||
|
|
||||||
when(mDataProvider.isUp()).thenReturn(true);
|
when(mDataProvider.isUp()).thenReturn(true);
|
||||||
when(mDataProvider.isRight()).thenReturn(false);
|
when(mDataProvider.isRight()).thenReturn(false);
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 0).isFalse()).isTrue();
|
||||||
|
|
||||||
when(mDataProvider.isUp()).thenReturn(false);
|
when(mDataProvider.isUp()).thenReturn(false);
|
||||||
when(mDataProvider.isRight()).thenReturn(true);
|
when(mDataProvider.isRight()).thenReturn(true);
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 0).isFalse()).isTrue();
|
||||||
|
|
||||||
when(mDataProvider.isUp()).thenReturn(true);
|
when(mDataProvider.isUp()).thenReturn(true);
|
||||||
when(mDataProvider.isRight()).thenReturn(true);
|
when(mDataProvider.isRight()).thenReturn(true);
|
||||||
assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue();
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_SIDE, 0.5, 0).isFalse()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPass_QsNestedSwipe() {
|
||||||
|
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_NESTED, 0.5, 0).isFalse()).isFalse();
|
||||||
|
|
||||||
|
when(mDataProvider.isUp()).thenReturn(true);
|
||||||
|
when(mDataProvider.isRight()).thenReturn(false);
|
||||||
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_NESTED, 0.5, 0).isFalse()).isFalse();
|
||||||
|
|
||||||
|
when(mDataProvider.isUp()).thenReturn(false);
|
||||||
|
when(mDataProvider.isRight()).thenReturn(true);
|
||||||
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_NESTED, 0.5, 0).isFalse()).isFalse();
|
||||||
|
|
||||||
|
when(mDataProvider.isUp()).thenReturn(true);
|
||||||
|
when(mDataProvider.isRight()).thenReturn(true);
|
||||||
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_NESTED, 0.5, 0).isFalse()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFalse_QsNestedSwipe() {
|
||||||
|
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_NESTED, 0.5, 0).isFalse()).isTrue();
|
||||||
|
|
||||||
|
when(mDataProvider.isUp()).thenReturn(true);
|
||||||
|
when(mDataProvider.isRight()).thenReturn(false);
|
||||||
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_NESTED, 0.5, 0).isFalse()).isTrue();
|
||||||
|
|
||||||
|
when(mDataProvider.isUp()).thenReturn(false);
|
||||||
|
when(mDataProvider.isRight()).thenReturn(true);
|
||||||
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_NESTED, 0.5, 0).isFalse()).isTrue();
|
||||||
|
|
||||||
|
when(mDataProvider.isUp()).thenReturn(true);
|
||||||
|
when(mDataProvider.isRight()).thenReturn(true);
|
||||||
|
assertThat(mClassifier.classifyGesture(QS_SWIPE_NESTED, 0.5, 0).isFalse()).isTrue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user