From 195d5694e48fa6c0000200b7f78b679265120956 Mon Sep 17 00:00:00 2001 From: vadimt Date: Tue, 11 Dec 2018 17:59:36 -0800 Subject: [PATCH] Not relying on activity manager when choosing a touch consumer. Activity manager can report launcher activity as running when is hasn't yet been resumed. Bug: 120628042 Test: TaplTests, Fallback tests, manual tests Change-Id: I6b382b17d05066a63360acc19e094674ecca7130 --- .../com/android/quickstep/ActivityControlHelper.java | 6 ++++++ .../com/android/quickstep/TouchInteractionService.java | 10 +++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java index 16f5fa1142..f60572cc32 100644 --- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java +++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java @@ -45,6 +45,7 @@ import android.os.Handler; import android.os.Looper; import android.view.View; +import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; @@ -114,6 +115,11 @@ public interface ActivityControlHelper { @Nullable T getCreatedActivity(); + default boolean isResumed() { + BaseDraggingActivity activity = getCreatedActivity(); + return activity != null && activity.hasBeenResumed(); + } + @UiThread @Nullable RecentsView getVisibleRecentsView(); diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index b1a214d9dd..a42ee094f4 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -249,7 +249,7 @@ public class TouchInteractionService extends Service { if (runningTaskInfo == null && !forceToLauncher) { return TouchConsumer.NO_OP; } else if (forceToLauncher || - runningTaskInfo.topActivity.equals(mOverviewCommandHelper.overviewComponent)) { + mOverviewCommandHelper.getActivityControlHelper().isResumed()) { return OverviewTouchConsumer.newInstance( mOverviewCommandHelper.getActivityControlHelper(), false, mTouchInteractionLog); } else { @@ -257,10 +257,10 @@ public class TouchInteractionService extends Service { tracker = VelocityTracker.obtain(); } return new OtherActivityTouchConsumer(this, runningTaskInfo, mRecentsModel, - mOverviewCommandHelper.overviewIntent, - mOverviewCommandHelper.getActivityControlHelper(), mMainThreadExecutor, - mBackgroundThreadChoreographer, downHitTarget, mOverviewCallbacks, - mTaskOverlayFactory, mInputConsumer, tracker, mTouchInteractionLog); + mOverviewCommandHelper.overviewIntent, + mOverviewCommandHelper.getActivityControlHelper(), mMainThreadExecutor, + mBackgroundThreadChoreographer, downHitTarget, mOverviewCallbacks, + mTaskOverlayFactory, mInputConsumer, tracker, mTouchInteractionLog); } }