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

Commit 6fab51bd authored by Mady Mellor's avatar Mady Mellor
Browse files

Don't include a flyout for BubbleInfo object if we shouldn't show it

There's no notion of not showing the flyout for bubble bar, but there
are cases where it shouldn't be shown (e.g. DND).

Simply don't add the flyout message to the BubbleInfo object if we
shouldn't show it.

Flag: com.android.wm.shell.enable_bubble_bar
Test: atest BubbleTest
Test: - turn on DND mode with bubble bar, get a notification, observe
        that the flyout doesn't show (but the dot is there)
Bug: 444398581
Change-Id: I7daa232f1b25ef2d497dd95e2e0d34cd1fdc686d
parent ed8fa5d7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -496,7 +496,7 @@ public class Bubble implements BubbleViewProvider {
    /** Creates a parcelable flyout message to send to launcher. */
    @Nullable
    private ParcelableFlyoutMessage getParcelableFlyoutMessage() {
        if (mFlyoutMessage == null) {
        if (mFlyoutMessage == null || !showFlyout()) {
            return null;
        }
        // the icon is only used in group chats
+37 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
import android.os.Bundle;
import android.os.UserHandle;
@@ -315,6 +316,42 @@ public class BubbleTest extends ShellTestCase {
        assertThat(bubble.getTaskId()).isEqualTo(INVALID_TASK_ID);
    }

    @Test
    public void testAsBubbleBarBubble_showFlyoutFalse() {
        Bubble b = createChatBubble(true);
        BubbleViewInfoTask.BubbleViewInfo info = new BubbleViewInfoTask.BubbleViewInfo();
        info.flyoutMessage = createFlyoutMessage();
        b.setViewInfo(info);
        b.setSuppressFlyout(true);

        assertThat(b.showFlyout()).isFalse();

        BubbleInfo bubbleInfo = b.asBubbleBarBubble();
        assertThat(bubbleInfo.getParcelableFlyoutMessage()).isNull();
    }

    @Test
    public void testAsBubbleBarBubble_showFlyoutTrue() {
        Bubble b = createChatBubble(true);
        BubbleViewInfoTask.BubbleViewInfo info = new BubbleViewInfoTask.BubbleViewInfo();
        info.flyoutMessage = createFlyoutMessage();
        b.setViewInfo(info);

        assertThat(b.showFlyout()).isTrue();

        BubbleInfo bubbleInfo = b.asBubbleBarBubble();
        assertThat(bubbleInfo.getParcelableFlyoutMessage()).isNotNull();
    }

    private Bubble.FlyoutMessage createFlyoutMessage() {
        Bubble.FlyoutMessage flyout = new Bubble.FlyoutMessage();
        flyout.senderIcon = mock(Icon.class);
        flyout.senderAvatar = mock(Drawable.class);
        flyout.senderName = "senderName";
        flyout.message = "help I'm trapped in a bubble";
        return flyout;
    }

    private Intent createIntent() {
        Intent intent = new Intent(mContext, BubblesTestActivity.class);
        intent.setPackage(mContext.getPackageName());