Loading packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java +16 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ class Bubble implements BubbleViewProvider { private BubbleViewInfoTask mInflationTask; private boolean mInflateSynchronously; private boolean mPendingIntentCanceled; /** * Presentational info about the flyout. Loading Loading @@ -182,6 +183,14 @@ class Bubble implements BubbleViewProvider { mIconView = null; } void setPendingIntentCanceled() { mPendingIntentCanceled = true; } boolean getPendingIntentCanceled() { return mPendingIntentCanceled; } /** * Sets whether to perform inflation on the same thread as the caller. This method should only * be used in tests, not in production. Loading Loading @@ -294,6 +303,13 @@ class Bubble implements BubbleViewProvider { return mLastUpdated; } /** * @return if the bubble was ever expanded */ boolean getWasAccessed() { return mLastAccessed != 0L; } /** * @return the display id of the virtual display on which bubble contents is drawn. */ Loading packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java +19 −1 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Rect; import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; import android.service.notification.NotificationListenerService; Loading Loading @@ -176,6 +177,9 @@ public class BubbleController implements ConfigurationController.ConfigurationLi private IStatusBarService mBarService; private SysUiState mSysUiState; // Used to post to main UI thread private Handler mHandler = new Handler(); // Used for determining view rect for touch interaction private Rect mTempRect = new Rect(); Loading Loading @@ -808,7 +812,21 @@ public class BubbleController implements ConfigurationController.ConfigurationLi Bubble bubble = mBubbleData.getOrCreateBubble(notif); bubble.setInflateSynchronously(mInflateSynchronously); bubble.inflate( b -> mBubbleData.notificationEntryUpdated(b, suppressFlyout, showInShade), b -> { mBubbleData.notificationEntryUpdated(b, suppressFlyout, showInShade); if (bubble.getBubbleIntent() == null) { return; } bubble.getBubbleIntent().registerCancelListener(pendingIntent -> { if (bubble.getWasAccessed()) { bubble.setPendingIntentCanceled(); return; } mHandler.post( () -> removeBubble(bubble.getEntry(), BubbleController.DISMISS_INVALID_INTENT)); }); }, mContext, mStackView, mBubbleIconFactory); } Loading packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java +2 −1 Original line number Diff line number Diff line Loading @@ -480,7 +480,8 @@ public class BubbleData { } void overflowBubble(@DismissReason int reason, Bubble bubble) { if (!(reason == BubbleController.DISMISS_AGED if (bubble.getPendingIntentCanceled() || !(reason == BubbleController.DISMISS_AGED || reason == BubbleController.DISMISS_USER_GESTURE)) { return; } Loading Loading
packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java +16 −0 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ class Bubble implements BubbleViewProvider { private BubbleViewInfoTask mInflationTask; private boolean mInflateSynchronously; private boolean mPendingIntentCanceled; /** * Presentational info about the flyout. Loading Loading @@ -182,6 +183,14 @@ class Bubble implements BubbleViewProvider { mIconView = null; } void setPendingIntentCanceled() { mPendingIntentCanceled = true; } boolean getPendingIntentCanceled() { return mPendingIntentCanceled; } /** * Sets whether to perform inflation on the same thread as the caller. This method should only * be used in tests, not in production. Loading Loading @@ -294,6 +303,13 @@ class Bubble implements BubbleViewProvider { return mLastUpdated; } /** * @return if the bubble was ever expanded */ boolean getWasAccessed() { return mLastAccessed != 0L; } /** * @return the display id of the virtual display on which bubble contents is drawn. */ Loading
packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java +19 −1 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.graphics.Rect; import android.os.Handler; import android.os.RemoteException; import android.os.ServiceManager; import android.service.notification.NotificationListenerService; Loading Loading @@ -176,6 +177,9 @@ public class BubbleController implements ConfigurationController.ConfigurationLi private IStatusBarService mBarService; private SysUiState mSysUiState; // Used to post to main UI thread private Handler mHandler = new Handler(); // Used for determining view rect for touch interaction private Rect mTempRect = new Rect(); Loading Loading @@ -808,7 +812,21 @@ public class BubbleController implements ConfigurationController.ConfigurationLi Bubble bubble = mBubbleData.getOrCreateBubble(notif); bubble.setInflateSynchronously(mInflateSynchronously); bubble.inflate( b -> mBubbleData.notificationEntryUpdated(b, suppressFlyout, showInShade), b -> { mBubbleData.notificationEntryUpdated(b, suppressFlyout, showInShade); if (bubble.getBubbleIntent() == null) { return; } bubble.getBubbleIntent().registerCancelListener(pendingIntent -> { if (bubble.getWasAccessed()) { bubble.setPendingIntentCanceled(); return; } mHandler.post( () -> removeBubble(bubble.getEntry(), BubbleController.DISMISS_INVALID_INTENT)); }); }, mContext, mStackView, mBubbleIconFactory); } Loading
packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java +2 −1 Original line number Diff line number Diff line Loading @@ -480,7 +480,8 @@ public class BubbleData { } void overflowBubble(@DismissReason int reason, Bubble bubble) { if (!(reason == BubbleController.DISMISS_AGED if (bubble.getPendingIntentCanceled() || !(reason == BubbleController.DISMISS_AGED || reason == BubbleController.DISMISS_USER_GESTURE)) { return; } Loading