Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8f6a9bfc authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Handle PendingIntent cancellation v2" into rvc-dev am:...

Merge "Merge "Handle PendingIntent cancellation v2" into rvc-dev am: 9cdbc7f6 am: 0c7c81a6" into rvc-d1-dev-plus-aosp
parents 88a9efe3 e932da2a
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@ class Bubble implements BubbleViewProvider {

    private BubbleViewInfoTask mInflationTask;
    private boolean mInflateSynchronously;
    private boolean mPendingIntentCanceled;

    /**
     * Presentational info about the flyout.
@@ -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.
@@ -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.
     */
+19 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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();

@@ -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);
    }

+2 −1
Original line number Diff line number Diff line
@@ -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;
        }