Making taskbar to stay stashed if user launches app for split screen view  from all apps view

Test: Visual
Fix: 263058045

Change-Id: Idcbc4ce90e8d4ff1084780bf331f2cea8b9335ca
diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
index 335482c..667fb0b 100644
--- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
@@ -310,6 +310,7 @@
 
     @Override
     public void onTaskbarIconLaunched(ItemInfo item) {
+        super.onTaskbarIconLaunched(item);
         InstanceId instanceId = new InstanceIdSequence().newInstanceId();
         mLauncher.logAppLaunch(mControllers.taskbarActivityContext.getStatsLogManager(), item,
                 instanceId);
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index c6d8fce..8916ba2 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -15,7 +15,6 @@
  */
 package com.android.launcher3.taskbar;
 
-import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.content.pm.PackageManager.FEATURE_PC;
 import static android.os.Trace.TRACE_TAG_APP;
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
@@ -829,15 +828,17 @@
                             launchFromTaskbarPreservingSplitIfVisible(recents, info);
                         }
 
-                        mControllers.uiController.onTaskbarIconLaunched(info);
                     } catch (NullPointerException
                             | ActivityNotFoundException
                             | SecurityException e) {
                         Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT)
                                 .show();
                         Log.e(TAG, "Unable to launch. tag=" + info + " intent=" + intent, e);
+                        return;
                     }
+
                 }
+                mControllers.uiController.onTaskbarIconLaunched(info);
                 mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true);
             }
         } else if (tag instanceof AppInfo) {
@@ -851,8 +852,8 @@
                 taskbarUIController.triggerSecondAppForSplit(info, info.intent, view);
             } else {
                 launchFromTaskbarPreservingSplitIfVisible(recents, info);
-                mControllers.uiController.onTaskbarIconLaunched(info);
             }
+            mControllers.uiController.onTaskbarIconLaunched(info);
             mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true);
         } else if (tag instanceof ItemClickProxy) {
             ((ItemClickProxy) tag).onItemClicked(view);
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
index bfdf156..749556d 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java
@@ -17,6 +17,8 @@
 
 import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 
+import static com.android.launcher3.taskbar.TaskbarStashController.FLAG_IN_APP;
+
 import android.content.Intent;
 import android.graphics.drawable.BitmapDrawable;
 import android.view.MotionEvent;
@@ -73,7 +75,13 @@
     protected void onStashedInAppChanged() { }
 
     /** Called when an icon is launched. */
-    public void onTaskbarIconLaunched(ItemInfo item) { }
+    @CallSuper
+    public void onTaskbarIconLaunched(ItemInfo item) {
+        // When launching from Taskbar, e.g. from Overview, set FLAG_IN_APP immediately instead of
+        // waiting for onPause, to reduce potential visual noise during the app open transition.
+        mControllers.taskbarStashController.updateStateForFlag(FLAG_IN_APP, true);
+        mControllers.taskbarStashController.applyState();
+    }
 
     public View getRootView() {
         return mControllers.taskbarActivityContext.getDragLayer();
@@ -103,7 +111,7 @@
     public void onExpandPip() {
         if (mControllers != null) {
             final TaskbarStashController stashController = mControllers.taskbarStashController;
-            stashController.updateStateForFlag(TaskbarStashController.FLAG_IN_APP, true);
+            stashController.updateStateForFlag(FLAG_IN_APP, true);
             stashController.applyState();
         }
     }