diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java index 11c1464578444..dca5985184320 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java @@ -739,14 +739,11 @@ public class BubbleController { return (isSummary && isSuppressedSummary) || isSuppressedBubble; } - private void removeSuppressedSummaryIfNecessary(String groupKey, Consumer callback, - Executor callbackExecutor) { + private void removeSuppressedSummaryIfNecessary(String groupKey, Consumer callback) { if (mBubbleData.isSummarySuppressed(groupKey)) { mBubbleData.removeSuppressedSummary(groupKey); if (callback != null) { - callbackExecutor.execute(() -> { - callback.accept(mBubbleData.getSummaryKey(groupKey)); - }); + callback.accept(mBubbleData.getSummaryKey(groupKey)); } } } @@ -1298,8 +1295,10 @@ public class BubbleController { public void removeSuppressedSummaryIfNecessary(String groupKey, Consumer callback, Executor callbackExecutor) { mMainExecutor.execute(() -> { - BubbleController.this.removeSuppressedSummaryIfNecessary(groupKey, callback, - callbackExecutor); + Consumer cb = callback != null + ? (key) -> callbackExecutor.execute(() -> callback.accept(key)) + : null; + BubbleController.this.removeSuppressedSummaryIfNecessary(groupKey, cb); }); } @@ -1340,10 +1339,13 @@ public class BubbleController { @Override public boolean handleDismissalInterception(BubbleEntry entry, - @Nullable List children, IntConsumer removeCallback) { + @Nullable List children, IntConsumer removeCallback, + Executor callbackExecutor) { + IntConsumer cb = removeCallback != null + ? (index) -> callbackExecutor.execute(() -> removeCallback.accept(index)) + : null; return mMainExecutor.executeBlockingForResult(() -> { - return BubbleController.this.handleDismissalInterception(entry, children, - removeCallback); + return BubbleController.this.handleDismissalInterception(entry, children, cb); }, Boolean.class); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java index 9fc8aef470642..1bfb619292976 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java @@ -140,7 +140,7 @@ public interface Bubbles { * @return true if we want to intercept the dismissal of the entry, else false. */ boolean handleDismissalInterception(BubbleEntry entry, @Nullable List children, - IntConsumer removeCallback); + IntConsumer removeCallback, Executor callbackExecutor); /** Set the proxy to commnuicate with SysUi side components. */ void setSysuiProxy(SysuiProxy proxy); diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java index 55b80dd69b6aa..db7736620c263 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java @@ -633,7 +633,7 @@ public class BubblesManager implements Dumpable { } else { mNotificationGroupManager.onEntryRemoved(entry); } - }); + }, mSysuiMainExecutor); } /**