Merge cherrypicks of ['googleplex-android-review.googlesource.com/35234605'] into security-aosp-24Q3-release.

Change-Id: I0b7552f902eb1e38787e1f3294df81e0a5fb9051
diff --git a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
index 7da92bc..b5c0291 100644
--- a/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
+++ b/quickstep/src/com/android/quickstep/OverviewCommandHelper.java
@@ -29,6 +29,7 @@
 import android.os.SystemClock;
 import android.os.Trace;
 import android.util.Log;
+import android.view.KeyEvent;
 import android.view.View;
 
 import androidx.annotation.BinderThread;
@@ -79,6 +80,7 @@
     private final TouchInteractionService mService;
     private final OverviewComponentObserver mOverviewComponentObserver;
     private final TaskAnimationManager mTaskAnimationManager;
+    private final SystemUiProxy mSystemUiProxy;
     private final ArrayList<CommandInfo> mPendingCommands = new ArrayList<>();
 
     /**
@@ -98,10 +100,12 @@
 
     public OverviewCommandHelper(TouchInteractionService service,
             OverviewComponentObserver observer,
-            TaskAnimationManager taskAnimationManager) {
+            TaskAnimationManager taskAnimationManager,
+            SystemUiProxy systemUiProxy) {
         mService = service;
         mOverviewComponentObserver = observer;
         mTaskAnimationManager = taskAnimationManager;
+        mSystemUiProxy = systemUiProxy;
     }
 
     /**
@@ -265,7 +269,7 @@
                 case TYPE_HOME:
                     ActiveGestureLog.INSTANCE.addLog(
                             "OverviewCommandHelper.executeCommand(TYPE_HOME)");
-                    mService.startActivity(mOverviewComponentObserver.getHomeIntent());
+                    mSystemUiProxy.onKeyEvent(KeyEvent.KEYCODE_HOME);
                     return true;
                 case TYPE_SHOW:
                     // When Recents is not currently visible, the command's type is TYPE_SHOW
diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java
index 433baa9..9913bce 100644
--- a/quickstep/src/com/android/quickstep/SystemUiProxy.java
+++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java
@@ -218,6 +218,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 bfdc3df..975bbe0 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -644,7 +644,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.registerInputConsumer();