Focusing on the second task on Alt+Tab
Reusing the quick scrub codepath. I’m postponing the cleanup with
removing duplicated code and isolating the reused code so that it’s
separated from touch events.
I’m accumulating the cleanup notes in a doc, and will create a Q bug
from them at the end.
This CL leaves mOverviewCommandHelper.onOverviewShown/Hidden() unused,
but we may use them later when implementing the case when System UI
invokes the callback with different params.
Note that the noew code works even when Alt+Tab is pressed while the
Overview is already open.
Bug: 73090995
Test: Alt+Tab. Alt+Tab while Overview is open.
Change-Id: Iba05c5628959b3640ddd643dead0fba3ae4714c1
diff --git a/quickstep/src/com/android/quickstep/MotionEventQueue.java b/quickstep/src/com/android/quickstep/MotionEventQueue.java
index 94b6faa..72f8301 100644
--- a/quickstep/src/com/android/quickstep/MotionEventQueue.java
+++ b/quickstep/src/com/android/quickstep/MotionEventQueue.java
@@ -55,6 +55,8 @@
ACTION_VIRTUAL | (5 << ACTION_POINTER_INDEX_SHIFT);
private static final int ACTION_DEFER_INIT =
ACTION_VIRTUAL | (6 << ACTION_POINTER_INDEX_SHIFT);
+ private static final int ACTION_SHOW_OVERVIEW_FROM_ALT_TAB =
+ ACTION_VIRTUAL | (7 << ACTION_POINTER_INDEX_SHIFT);
private final EventArray mEmptyArray = new EventArray();
private final Object mExecutionLock = new Object();
@@ -161,6 +163,10 @@
case ACTION_DEFER_INIT:
mConsumer.deferInit();
break;
+ case ACTION_SHOW_OVERVIEW_FROM_ALT_TAB:
+ mConsumer.onShowOverviewFromAltTab();
+ mConsumer.updateTouchTracking(INTERACTION_QUICK_SCRUB);
+ break;
default:
Log.e(TAG, "Invalid virtual event: " + event.getAction());
}
@@ -197,6 +203,10 @@
queueVirtualAction(ACTION_QUICK_SCRUB_START, 0);
}
+ public void onOverviewShownFromAltTab() {
+ queueVirtualAction(ACTION_SHOW_OVERVIEW_FROM_ALT_TAB, 0);
+ }
+
public void onQuickScrubProgress(float progress) {
queueVirtualAction(ACTION_QUICK_SCRUB_PROGRESS, progress);
}
diff --git a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
index ab19c6e..93eafe4 100644
--- a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
+++ b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
@@ -35,7 +35,7 @@
import android.os.Build;
import android.os.Bundle;
import android.os.Looper;
-import android.util.Log;
+import android.os.SystemClock;
import android.view.Choreographer;
import android.view.Display;
import android.view.MotionEvent;
@@ -107,6 +107,11 @@
}
@Override
+ public void onShowOverviewFromAltTab() {
+ startTouchTrackingForWindowAnimation(SystemClock.uptimeMillis());
+ }
+
+ @Override
public void accept(MotionEvent ev) {
if (mVelocityTracker == null) {
return;
diff --git a/quickstep/src/com/android/quickstep/TouchConsumer.java b/quickstep/src/com/android/quickstep/TouchConsumer.java
index 768fbda..0554d9c 100644
--- a/quickstep/src/com/android/quickstep/TouchConsumer.java
+++ b/quickstep/src/com/android/quickstep/TouchConsumer.java
@@ -72,4 +72,6 @@
default boolean forceToLauncherConsumer() {
return false;
}
+
+ default void onShowOverviewFromAltTab() {}
}
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index df7214e..bbbeb14 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -21,6 +21,7 @@
import static android.view.MotionEvent.ACTION_POINTER_DOWN;
import static android.view.MotionEvent.ACTION_POINTER_UP;
import static android.view.MotionEvent.ACTION_UP;
+
import static com.android.launcher3.LauncherState.FAST_OVERVIEW;
import static com.android.launcher3.LauncherState.NORMAL;
@@ -54,6 +55,8 @@
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.NavigationBarCompat.HitTarget;
+import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_NONE;
+
/**
* Service connected by system-UI for handling touch interaction.
*/
@@ -85,7 +88,7 @@
@Override
public void onPreMotionEvent(@HitTarget int downHitTarget) throws RemoteException {
TraceHelper.beginSection("SysUiBinder");
- onBinderPreMotionEvent(downHitTarget);
+ setupTouchConsumer(downHitTarget);
TraceHelper.partitionSection("SysUiBinder", "Down target " + downHitTarget);
}
@@ -139,14 +142,20 @@
@Override
public void onOverviewShown(boolean triggeredFromAltTab) {
if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) {
- mOverviewCommandHelper.onOverviewShown();
+ if (triggeredFromAltTab) {
+ setupTouchConsumer(HIT_TARGET_NONE);
+ mEventQueue.onOverviewShownFromAltTab();
+ }
}
}
@Override
public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) {
- mOverviewCommandHelper.onOverviewHidden();
+ if (triggeredFromAltTab && !triggeredFromHomeKey) {
+ // onOverviewShownFromAltTab initiates quick scrub. Ending it here.
+ mEventQueue.onQuickScrubEnd();
+ }
}
}
@@ -205,7 +214,7 @@
return mMyBinder;
}
- private void onBinderPreMotionEvent(@HitTarget int downHitTarget) {
+ private void setupTouchConsumer(@HitTarget int downHitTarget) {
mEventQueue.reset();
TouchConsumer oldConsumer = mEventQueue.getConsumer();
if (oldConsumer.deferNextEventToMainThread()) {