Merge "Using dimension instead of relyong on relativeLayout for view positions" into ub-launcher3-master
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()) {