Merge "Taskbar fixes when apps move to desktop and back" into tm-qpr-dev
diff --git a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java
index a205d19..bbc0627 100644
--- a/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java
+++ b/quickstep/src/com/android/launcher3/statehandlers/DesktopVisibilityController.java
@@ -43,7 +43,7 @@
      */
     private boolean isDesktopModeSupported() {
         return SystemProperties.getBoolean("persist.wm.debug.desktop_mode", false)
-            || SystemProperties.getBoolean("persist.wm.debug.desktop_mode_2", false);
+                || SystemProperties.getBoolean("persist.wm.debug.desktop_mode_2", false);
     }
 
     /**
@@ -81,7 +81,9 @@
         StatefulActivity<LauncherState> activity =
                 QuickstepLauncher.ACTIVITY_TRACKER.getCreatedActivity();
         View workspaceView = mLauncher.getWorkspace();
-        if (activity == null || workspaceView == null || !isDesktopModeSupported()) return;
+        if (activity == null || workspaceView == null || !isDesktopModeSupported()) {
+            return;
+        }
 
         if (mFreeformTasksVisible) {
             workspaceView.setVisibility(View.INVISIBLE);
@@ -93,7 +95,12 @@
         } else {
             workspaceView.setVisibility(View.VISIBLE);
             // If freeform isn't visible ensure that launcher appears resumed to behave normally.
-            activity.setResumed();
+            // Check activity state before calling setResumed(). Launcher may have been actually
+            // paused (eg fullscreen task moved to front).
+            // In this case we should not mark the activity as resumed.
+            if (activity.isResumed()) {
+                activity.setResumed();
+            }
         }
     }
 }
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
index a07e4d7..bb76846 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
@@ -141,6 +141,7 @@
 import com.android.quickstep.util.SplitToWorkspaceController;
 import com.android.quickstep.util.SplitWithKeyboardShortcutController;
 import com.android.quickstep.util.TISBindHelper;
+import com.android.quickstep.views.DesktopTaskView;
 import com.android.quickstep.views.OverviewActionsView;
 import com.android.quickstep.views.RecentsView;
 import com.android.quickstep.views.TaskView;
@@ -664,6 +665,20 @@
     }
 
     @Override
+    public void setResumed() {
+        if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED) {
+            DesktopVisibilityController controller = mDesktopVisibilityController;
+            if (controller != null && controller.areFreeformTasksVisible()) {
+                // Return early to skip setting activity to appear as resumed
+                // TODO(b/255649902): shouldn't be needed when we have a separate launcher state
+                //  for desktop that we can use to control other parts of launcher
+                return;
+            }
+        }
+        super.setResumed();
+    }
+
+    @Override
     protected void onDeferredResumed() {
         super.onDeferredResumed();
         handlePendingActivityRequest();
diff --git a/quickstep/src/com/android/quickstep/views/DesktopTaskView.java b/quickstep/src/com/android/quickstep/views/DesktopTaskView.java
index 308249c..c878278 100644
--- a/quickstep/src/com/android/quickstep/views/DesktopTaskView.java
+++ b/quickstep/src/com/android/quickstep/views/DesktopTaskView.java
@@ -59,10 +59,14 @@
 // TODO(b/249371338): TaskView needs to be refactored to have better support for N tasks.
 public class DesktopTaskView extends TaskView {
 
+    /** Flag to indicate whether desktop windowing proto 2 is enabled */
+    public static final boolean DESKTOP_IS_PROTO2_ENABLED = SystemProperties.getBoolean(
+            "persist.wm.debug.desktop_mode_2", false);
+
     /** Flags to indicate whether desktop mode is available on the device */
     public static final boolean DESKTOP_MODE_SUPPORTED =
             SystemProperties.getBoolean("persist.wm.debug.desktop_mode", false)
-                    || SystemProperties.getBoolean("persist.wm.debug.desktop_mode_2", false);
+                    || DESKTOP_IS_PROTO2_ENABLED;
 
     private static final String TAG = DesktopTaskView.class.getSimpleName();