Merge "Updating materialColorSurfaceContainerHighest color access" into udc-dev
diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
index ba6f165..abf49eb 100644
--- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java
@@ -50,6 +50,7 @@
import com.android.quickstep.views.RecentsView;
import java.io.PrintWriter;
+import java.util.Arrays;
/**
* A data source which integrates with a Launcher instance
@@ -105,6 +106,10 @@
// Restore the in-app display progress from before Taskbar was recreated.
float[] prevProgresses = mControllers.getSharedState().inAppDisplayProgressMultiPropValues;
+ // Make a copy of the previous progress to set since updating the multiprop will update
+ // the property which also calls onInAppDisplayProgressChanged() which writes the current
+ // values into the shared state
+ prevProgresses = Arrays.copyOf(prevProgresses, prevProgresses.length);
for (int i = 0; i < prevProgresses.length; i++) {
mTaskbarInAppDisplayProgressMultiProp.get(i).setValue(prevProgresses[i]);
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
index 9a9e0ba..9c463cb 100644
--- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
@@ -923,6 +923,15 @@
insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
}
+ /**
+ * Called whenever a new ui controller is set, and should update anything that depends on the
+ * ui controller.
+ */
+ public void onUiControllerChanged() {
+ updateNavButtonInAppDisplayProgressForSysui();
+ updateNavButtonTranslationY();
+ }
+
@Override
public void dumpLogs(String prefix, PrintWriter pw) {
pw.println(prefix + "NavbarButtonsViewController:");
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index 43feec7..a1390ae 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -591,9 +591,7 @@
* Sets a new data-source for this taskbar instance
*/
public void setUIController(@NonNull TaskbarUIController uiController) {
- mControllers.uiController.onDestroy();
- mControllers.uiController = uiController;
- mControllers.uiController.init(mControllers);
+ mControllers.setUiController(uiController);
}
/**
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java
index 66c2eb3..d3f80e3 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarControllers.java
@@ -196,6 +196,19 @@
mPostInitCallbacks.clear();
}
+ /**
+ * Sets the ui controller.
+ */
+ public void setUiController(@NonNull TaskbarUIController newUiController) {
+ uiController.onDestroy();
+ uiController = newUiController;
+ uiController.init(this);
+ uiController.updateStateForSysuiFlags(mSharedState.sysuiStateFlags);
+
+ // Notify that the ui controller has changed
+ navbarButtonsViewController.onUiControllerChanged();
+ }
+
@Nullable
public TaskbarSharedState getSharedState() {
// This should only be null if called before init() and after destroy().
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java b/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java
index 523a98e..2256cbf 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationCallbacks.java
@@ -15,6 +15,7 @@
*/
package com.android.quickstep;
+import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER;
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
@@ -37,6 +38,7 @@
import com.android.systemui.shared.system.RecentsAnimationControllerCompat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Set;
@@ -101,9 +103,22 @@
RemoteAnimationTarget[] appTargets,
RemoteAnimationTarget[] wallpaperTargets,
Rect homeContentInsets, Rect minimizedHomeBounds) {
+ long appCount = Arrays.stream(appTargets)
+ .filter(app -> app.mode == MODE_CLOSING)
+ .count();
+ if (appCount == 0) {
+ // Edge case, if there are no closing app targets, then Launcher has nothing to handle
+ ActiveGestureLog.INSTANCE.addLog(
+ /* event= */ "RecentsAnimationCallbacks.onAnimationStart (canceled)",
+ /* extras= */ 0,
+ /* gestureEvent= */ START_RECENTS_ANIMATION);
+ notifyAnimationCanceled();
+ animationController.finish(false /* toHome */, false /* sendUserLeaveHint */);
+ return;
+ }
+
mController = new RecentsAnimationController(animationController,
mAllowMinimizeSplitScreen, this::onAnimationFinished);
-
if (mCancelled) {
Utilities.postAsyncCallback(MAIN_EXECUTOR.getHandler(),
mController::finishAnimationToApp);