Merge "Cancelling touch interaction on multi-touch event" into ub-launcher3-qt-dev
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/SwipeSharedState.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/SwipeSharedState.java
index 194d073..5a039cd 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/SwipeSharedState.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/SwipeSharedState.java
@@ -22,6 +22,7 @@
import com.android.quickstep.util.RecentsAnimationListenerSet;
import com.android.quickstep.util.SwipeAnimationTargetSet;
import com.android.quickstep.util.SwipeAnimationTargetSet.SwipeAnimationListener;
+import java.io.PrintWriter;
/**
* Utility class used to store state information shared across multiple transitions.
@@ -134,4 +135,13 @@
nextRunningTaskId = -1;
goingToLauncher = false;
}
+
+ public void dump(String prefix, PrintWriter pw) {
+ pw.println(prefix + "goingToLauncher=" + goingToLauncher);
+ pw.println(prefix + "canGestureBeContinued=" + canGestureBeContinued);
+ pw.println(prefix + "recentsAnimationFinishInterrupted=" + recentsAnimationFinishInterrupted);
+ pw.println(prefix + "nextRunningTaskId=" + nextRunningTaskId);
+ pw.println(prefix + "lastAnimationCancelled=" + mLastAnimationCancelled);
+ pw.println(prefix + "lastAnimationRunning=" + mLastAnimationRunning);
+ }
}
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskSystemShortcut.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskSystemShortcut.java
index 2c919b3..213c5d3 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskSystemShortcut.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskSystemShortcut.java
@@ -226,7 +226,7 @@
// TODO(b/118266305): Temporarily disable splitscreen for secondary display while new
// implementation is enabled
return !activity.getDeviceProfile().isMultiWindowMode
- && displayId == DEFAULT_DISPLAY;
+ && (displayId == -1 || displayId == DEFAULT_DISPLAY);
}
@Override
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
index c0e7871..0fd74bb 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TouchInteractionService.java
@@ -84,9 +84,32 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.LinkedList;
import java.util.List;
/**
+ * Wrapper around a list for processing arguments.
+ */
+class ArgList extends LinkedList<String> {
+ public ArgList(List<String> l) {
+ super(l);
+ }
+
+ public String peekArg() {
+ return peekFirst();
+ }
+
+ public String nextArg() {
+ return pollFirst().toLowerCase();
+ }
+
+ public String nextArgExact() {
+ return pollFirst();
+ }
+}
+
+/**
* Service connected by system-UI for handling touch interaction.
*/
@TargetApi(Build.VERSION_CODES.Q)
@@ -439,12 +462,18 @@
mUncheckedConsumer.onMotionEvent(event);
}
+ private boolean validSystemUiFlags() {
+ return (mSystemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) == 0
+ && (mSystemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) == 0;
+ }
+
+ private boolean topTaskLocked() {
+ return ActivityManagerWrapper.getInstance().isLockToAppActive();
+ }
private InputConsumer newConsumer(boolean useSharedState, MotionEvent event) {
- boolean validSystemUIFlags = (mSystemUiStateFlags & SYSUI_STATE_NAV_BAR_HIDDEN) == 0
- && (mSystemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED) == 0;
- boolean topTaskLocked = ActivityManagerWrapper.getInstance().isLockToAppActive();
- boolean isInValidSystemUiState = validSystemUIFlags && !topTaskLocked;
+ boolean topTaskLocked = topTaskLocked();
+ boolean isInValidSystemUiState = validSystemUiFlags() && !topTaskLocked;
if (!mIsUserUnlocked) {
if (isInValidSystemUiState) {
@@ -540,7 +569,55 @@
}
@Override
- protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
- TOUCH_INTERACTION_LOG.dump("", pw);
+ protected void dump(FileDescriptor fd, PrintWriter pw, String[] rawArgs) {
+ if (rawArgs.length > 0 && Utilities.IS_DEBUG_DEVICE) {
+ ArgList args = new ArgList(Arrays.asList(rawArgs));
+ switch (args.nextArg()) {
+ case "cmd":
+ if (args.peekArg() == null) {
+ printAvailableCommands(pw);
+ } else {
+ onCommand(pw, args);
+ }
+ break;
+ }
+ } else {
+ // Dump everything
+ pw.println("TouchState:");
+ pw.println(" navMode=" + mMode);
+ pw.println(" validSystemUiFlags=" + validSystemUiFlags()
+ + " flags=" + mSystemUiStateFlags);
+ pw.println(" topTaskLocked=" + topTaskLocked());
+ pw.println(" isDeviceLocked=" + mKM.isDeviceLocked());
+ pw.println(" screenPinned=" +
+ ActivityManagerWrapper.getInstance().isScreenPinningActive());
+ pw.println(" assistantAvailable=" + mAssistantAvailable);
+ pw.println(" a11yClickable="
+ + ((mSystemUiStateFlags & SYSUI_STATE_A11Y_BUTTON_CLICKABLE) != 0));
+ pw.println(" a11yLongClickable="
+ + ((mSystemUiStateFlags & SYSUI_STATE_A11Y_BUTTON_LONG_CLICKABLE) != 0));
+ pw.println(" resumed="
+ + mOverviewComponentObserver.getActivityControlHelper().isResumed());
+ pw.println(" useSharedState=" + mConsumer.useSharedSwipeState());
+ if (mConsumer.useSharedSwipeState()) {
+ mSwipeSharedState.dump(" ", pw);
+ }
+ pw.println(" mConsumer=" + mConsumer.getName());
+ TOUCH_INTERACTION_LOG.dump("", pw);
+
+ }
+ }
+
+ private void printAvailableCommands(PrintWriter pw) {
+ pw.println("Available commands:");
+ pw.println(" clear-touch-log: Clears the touch interaction log");
+ }
+
+ private void onCommand(PrintWriter pw, ArgList args) {
+ switch (args.nextArg()) {
+ case "clear-touch-log":
+ TOUCH_INTERACTION_LOG.clear();
+ break;
+ }
}
}
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/InputConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/InputConsumer.java
index 2e8880d..6e7cb8f 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/InputConsumer.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/InputConsumer.java
@@ -63,4 +63,23 @@
onKeyEvent((KeyEvent) ev);
}
}
+
+ default String getName() {
+ switch (getType()) {
+ case TYPE_OVERVIEW:
+ return "OVERVIEW";
+ case TYPE_OTHER_ACTIVITY:
+ return "OTHER_ACTIVITY";
+ case TYPE_ASSISTANT:
+ return "ASSISTANT";
+ case TYPE_DEVICE_LOCKED:
+ return "DEVICE_LOCKED";
+ case TYPE_ACCESSIBILITY:
+ return "ACCESSIBILITY";
+ case TYPE_SCREEN_PINNED:
+ return "SCREEN_PINNED";
+ default:
+ return "NO_OP";
+ }
+ }
}
diff --git a/src/com/android/launcher3/logging/EventLogArray.java b/src/com/android/launcher3/logging/EventLogArray.java
index bfb3792..f20f365 100644
--- a/src/com/android/launcher3/logging/EventLogArray.java
+++ b/src/com/android/launcher3/logging/EventLogArray.java
@@ -18,6 +18,7 @@
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
+import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
@@ -76,8 +77,12 @@
nextIndex = (nextIndex + 1) % logs.length;
}
+ public void clear() {
+ Arrays.setAll(logs, (i) -> null);
+ }
+
public void dump(String prefix, PrintWriter writer) {
- writer.println(prefix + name + " event history:");
+ writer.println(prefix + "EventLog (" + name + ") history:");
SimpleDateFormat sdf = new SimpleDateFormat(" HH:mm:ss.SSSZ ", Locale.US);
Date date = new Date();