Merge "Send the bubble removal timestamp to wm shell" into main
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java
index a3832cd..7426dc7 100644
--- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java
@@ -356,6 +356,13 @@
}
}
+ // if a bubble was updated upstream, but removed before the update was received, add it back
+ if (update.updatedBubble != null && !mBubbles.containsKey(update.updatedBubble.getKey())) {
+ mBubbles.put(update.updatedBubble.getKey(), update.updatedBubble);
+ mBubbleBarViewController.addBubble(
+ update.updatedBubble, isExpanding, suppressAnimation);
+ }
+
if (update.addedBubble != null && isCollapsed) {
// If we're collapsed, the most recently added bubble will be selected.
bubbleToSelect = update.addedBubble;
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java
index 0f9de16..24b9139 100644
--- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java
@@ -89,6 +89,8 @@
private BubbleBarViewAnimator mBubbleBarViewAnimator;
+ private TimeSource mTimeSource = System::currentTimeMillis;
+
@Nullable
private BubbleBarBoundsChangeListener mBoundsChangeListener;
@@ -576,7 +578,7 @@
* @param bubble dismissed bubble item
*/
public void onDismissBubbleWhileDragging(@NonNull BubbleBarItem bubble) {
- mSystemUiProxy.dragBubbleToDismiss(bubble.getKey());
+ mSystemUiProxy.dragBubbleToDismiss(bubble.getKey(), mTimeSource.currentTimeMillis());
}
/**
@@ -601,6 +603,11 @@
void onBoundsChanged();
}
+ /** Interface for getting the current timestamp. */
+ interface TimeSource {
+ long currentTimeMillis();
+ }
+
/** Dumps the state of BubbleBarViewController. */
public void dump(PrintWriter pw) {
pw.println("Bubble bar view controller state:");
diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java
index 0d9f81f..66aa897 100644
--- a/quickstep/src/com/android/quickstep/SystemUiProxy.java
+++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java
@@ -842,12 +842,14 @@
/**
* Tells SysUI to dismiss the bubble with the provided key.
+ *
* @param key the key of the bubble to dismiss.
+ * @param timestamp the timestamp when the removal happened.
*/
- public void dragBubbleToDismiss(String key) {
+ public void dragBubbleToDismiss(String key, long timestamp) {
if (mBubbles == null) return;
try {
- mBubbles.dragBubbleToDismiss(key);
+ mBubbles.dragBubbleToDismiss(key, timestamp);
} catch (RemoteException e) {
Log.w(TAG, "Failed call dragBubbleToDismiss");
}