Merge cherrypicks of ['googleplex-android-review.googlesource.com/35234607'] into security-aosp-udc-release.

Change-Id: I29b657376b20b1efbc00668e2a8ef9d083f3432e
diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index 07db194..f894a5f 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -24,6 +24,7 @@
 import android.os.Build;
 import android.os.SystemClock;
 import android.os.Trace;
+import android.view.KeyEvent;
 import android.view.View;
 
 import androidx.annotation.BinderThread;
@@ -70,6 +71,7 @@
     private final TouchInteractionService mService;
     private final OverviewComponentObserver mOverviewComponentObserver;
     private final TaskAnimationManager mTaskAnimationManager;
+    private final SystemUiProxy mSystemUiProxy;
     private final ArrayList<CommandInfo> mPendingCommands = new ArrayList<>();
 
     /**
@@ -81,10 +83,12 @@
 
     public OverviewCommandHelper(TouchInteractionService service,
             OverviewComponentObserver observer,
-            TaskAnimationManager taskAnimationManager) {
+            TaskAnimationManager taskAnimationManager,
+            SystemUiProxy systemUiProxy) {
         mService = service;
         mOverviewComponentObserver = observer;
         mTaskAnimationManager = taskAnimationManager;
+        mSystemUiProxy = systemUiProxy;
     }
 
     /**
@@ -205,7 +209,7 @@
                 return true;
             }
             if (cmd.type == TYPE_HOME) {
-                mService.startActivity(mOverviewComponentObserver.getHomeIntent());
+                mSystemUiProxy.onKeyEvent(KeyEvent.KEYCODE_HOME);
                 return true;
             }
         } else {
diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java
index 9350c72..461a882 100644
--- a/quickstep/src/com/android/quickstep/SystemUiProxy.java
+++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java
@@ -179,6 +179,17 @@
     }
 
     @Override
+    public void onKeyEvent(int keycode) {
+        if (mSystemUiProxy != null) {
+            try {
+                mSystemUiProxy.onKeyEvent(keycode);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Failed call onKeyEvent", e);
+            }
+        }
+    }
+
+    @Override
     public void onImeSwitcherPressed() {
         if (mSystemUiProxy != null) {
             try {
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index d6a468d..41d6dc8 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -535,7 +535,8 @@
         mTaskAnimationManager = new TaskAnimationManager(this);
         mOverviewComponentObserver = new OverviewComponentObserver(this, mDeviceState);
         mOverviewCommandHelper = new OverviewCommandHelper(this,
-                mOverviewComponentObserver, mTaskAnimationManager);
+                mOverviewComponentObserver, mTaskAnimationManager,
+                SystemUiProxy.INSTANCE.get(this));
         mResetGestureInputConsumer = new ResetGestureInputConsumer(
                 mTaskAnimationManager, mTaskbarManager::getCurrentActivityContext);
         mInputConsumer = InputConsumerController.getRecentsAnimationInputConsumer();