Merge "Adding tests that would reliably reproduce shifted search." into ub-launcher3-master
diff --git a/quickstep/src/com/android/quickstep/ActivityControlHelper.java b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
index 16f5fa1..f60572c 100644
--- a/quickstep/src/com/android/quickstep/ActivityControlHelper.java
+++ b/quickstep/src/com/android/quickstep/ActivityControlHelper.java
@@ -45,6 +45,7 @@
 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 @@
     @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 b1a214d..a42ee09 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -249,7 +249,7 @@
         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 @@
                 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);
         }
     }
 
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 56aca02..eb26961 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -3065,9 +3065,9 @@
         mapOverItems(MAP_RECURSE, new ItemOperator() {
             @Override
             public boolean evaluate(ItemInfo info, View v) {
-                if (info instanceof ShortcutInfo && v instanceof BubbleTextView
-                        && packageUserKey.updateFromItemInfo(info)) {
-                    if (updatedDots.contains(packageUserKey)) {
+                if (info instanceof ShortcutInfo && v instanceof BubbleTextView) {
+                    if (!packageUserKey.updateFromItemInfo(info)
+                            || updatedDots.contains(packageUserKey)) {
                         ((BubbleTextView) v).applyDotState(info, true /* animate */);
                         folderIds.add(info.container);
                     }
diff --git a/src/com/android/launcher3/util/TraceHelper.java b/src/com/android/launcher3/util/TraceHelper.java
index 4aa2f37..a321bcc 100644
--- a/src/com/android/launcher3/util/TraceHelper.java
+++ b/src/com/android/launcher3/util/TraceHelper.java
@@ -39,7 +39,7 @@
     private static final boolean SYSTEM_TRACE = false;
     private static final ArrayMap<String, MutableLong> sUpTimes = ENABLED ? new ArrayMap<>() : null;
 
-    public static void beginSection(String sectionName) {
+    public static synchronized void beginSection(String sectionName) {
         if (ENABLED) {
             MutableLong time = sUpTimes.get(sectionName);
             if (time == null) {
@@ -55,7 +55,7 @@
         }
     }
 
-    public static void partitionSection(String sectionName, String partition) {
+    public static synchronized void partitionSection(String sectionName, String partition) {
         if (ENABLED) {
             MutableLong time = sUpTimes.get(sectionName);
             if (time != null && time.value >= 0) {
@@ -78,7 +78,7 @@
         }
     }
 
-    public static void endSection(String sectionName, String msg) {
+    public static synchronized void endSection(String sectionName, String msg) {
         if (ENABLED) {
             MutableLong time = sUpTimes.get(sectionName);
             if (time != null && time.value >= 0) {