Merge "AssistContentRequester move binder call to background thread." into sc-dev am: 8c46bba98e

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/14801431

Change-Id: I08dbfabda7b1c233a39618536d95acbeb53ccbcd
diff --git a/quickstep/src/com/android/quickstep/util/AssistContentRequester.java b/quickstep/src/com/android/quickstep/util/AssistContentRequester.java
index 71c6382..b1e38eb 100644
--- a/quickstep/src/com/android/quickstep/util/AssistContentRequester.java
+++ b/quickstep/src/com/android/quickstep/util/AssistContentRequester.java
@@ -54,6 +54,7 @@
     private final IActivityTaskManager mActivityTaskManager;
     private final String mPackageName;
     private final Executor mCallbackExecutor;
+    private final Executor mSystemInteractionExecutor;
 
     // If system loses the callback, our internal cache of original callback will also get cleared.
     private final Map<Object, Callback> mPendingCallbacks =
@@ -63,6 +64,7 @@
         mActivityTaskManager = ActivityTaskManager.getService();
         mPackageName = context.getApplicationContext().getPackageName();
         mCallbackExecutor = Executors.MAIN_EXECUTOR;
+        mSystemInteractionExecutor = Executors.UI_HELPER_EXECUTOR;
     }
 
     /**
@@ -71,13 +73,16 @@
      * @param taskId to query for the content.
      * @param callback to call when the content is available, called on the main thread.
      */
-    public void requestAssistContent(int taskId, Callback callback) {
-        try {
-            mActivityTaskManager.requestAssistDataForTask(
-                    new AssistDataReceiver(callback, this), taskId, mPackageName);
-        } catch (RemoteException e) {
-            Log.e(TAG, "Requesting assist content failed for task: " + taskId, e);
-        }
+    public void requestAssistContent(final int taskId, final Callback callback) {
+        // ActivityTaskManager interaction here is synchronous, so call off the main thread.
+        mSystemInteractionExecutor.execute(() -> {
+            try {
+                mActivityTaskManager.requestAssistDataForTask(
+                        new AssistDataReceiver(callback, this), taskId, mPackageName);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Requesting assist content failed for task: " + taskId, e);
+            }
+        });
     }
 
     private void executeOnMainExecutor(Runnable callback) {