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

Commit ad8505fb authored by Ats Jenk's avatar Ats Jenk
Browse files

Log when bubble bar bubble is selected

Bug: 349845968
Test: atest BubblesTest
Test: have two bubbles in bar, expand bar, check that expand event is
  logged, select other bubbles, check that switch event is logged
Test: have two bubbles, expand bar, drag selected bubble expanded view
  to dismiss, check that switch event is logged when other bubble is
  selected
Test: have two bubbles, expand bar, drag selected bubble from bar to
  dismiss, check that switch event is logged when other bubble is
  selected

Flag: com.android.wm.shell.enable_bubble_bar
Change-Id: I797fd070a6f437d837b47a21ad8f5a82a842878c
parent 85d3dbf4
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -1259,6 +1259,14 @@ public class BubbleController implements ConfigurationChangeListener,
            // We still have bubbles, if we dragged an individual bubble to dismiss we were expanded
            // so re-expand to whatever is selected.
            showExpandedViewForBubbleBar();
            if (bubbleKey.equals(selectedBubbleKey)) {
                // We dragged the selected bubble to dismiss, log switch event
                if (mBubbleData.getSelectedBubble() instanceof Bubble) {
                    // Log only bubbles as overflow can't be dragged
                    mLogger.log((Bubble) mBubbleData.getSelectedBubble(),
                            BubbleLogger.Event.BUBBLE_BAR_BUBBLE_SWITCHED);
                }
            }
        }
    }

@@ -1301,10 +1309,16 @@ public class BubbleController implements ConfigurationChangeListener,
    public void expandStackAndSelectBubbleFromLauncher(String key, int topOnScreen) {
        mBubblePositioner.setBubbleBarTopOnScreen(topOnScreen);

        boolean wasExpanded = (mLayerView != null && mLayerView.isExpanded());

        if (BubbleOverflow.KEY.equals(key)) {
            mBubbleData.setSelectedBubbleFromLauncher(mBubbleData.getOverflow());
            mLayerView.showExpandedView(mBubbleData.getOverflow());
            if (wasExpanded) {
                mLogger.log(BubbleLogger.Event.BUBBLE_BAR_BUBBLE_SWITCHED);
            } else {
                mLogger.log(BubbleLogger.Event.BUBBLE_BAR_EXPANDED);
            }
            return;
        }

@@ -1316,7 +1330,11 @@ public class BubbleController implements ConfigurationChangeListener,
            // already in the stack
            mBubbleData.setSelectedBubbleFromLauncher(b);
            mLayerView.showExpandedView(b);
            if (wasExpanded) {
                mLogger.log(b, BubbleLogger.Event.BUBBLE_BAR_BUBBLE_SWITCHED);
            } else {
                mLogger.log(b, BubbleLogger.Event.BUBBLE_BAR_EXPANDED);
            }
        } else if (mBubbleData.hasOverflowBubbleWithKey(b.getKey())) {
            // TODO: (b/271468319) handle overflow
        } else {
@@ -2045,6 +2063,9 @@ public class BubbleController implements ConfigurationChangeListener,
            // Only need to update the layer view if we're currently expanded for selection changes.
            if (mLayerView != null && mLayerView.isExpanded()) {
                mLayerView.showExpandedView(selectedBubble);
                if (selectedBubble instanceof Bubble bubble) {
                    mLogger.log(bubble, BubbleLogger.Event.BUBBLE_BAR_BUBBLE_SWITCHED);
                }
            }
        }
    };
+66 −2
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -2505,17 +2506,54 @@ public class BubblesTest extends SysuiTestCase {

    @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
    @Test
    public void testEventLogging_bubbleBar_dragBubbleToDismiss() {
    public void testEventLogging_bubbleBar_dragSelectedBubbleToDismiss() {
        mBubbleProperties.mIsBubbleBarEnabled = true;
        mPositioner.setIsLargeScreen(true);
        FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
        mBubbleController.registerBubbleStateListener(bubbleStateListener);

        mEntryListener.onEntryAdded(mRow);
        mBubbleController.dragBubbleToDismiss(mRow.getKey(), 1L);
        mEntryListener.onEntryAdded(mRow2);
        mBubbleController.expandStackAndSelectBubbleFromLauncher(mRow2.getKey(), 0);

        clearInvocations(mBubbleLogger);

        // Dismiss selected bubble
        mBubbleController.startBubbleDrag(mRow2.getKey());
        mBubbleController.dragBubbleToDismiss(mRow2.getKey(), System.currentTimeMillis());

        // Log bubble dismissed via drag and new bubble selected
        verify(mBubbleLogger).log(eqBubbleWithKey(mRow2.getKey()),
                eq(BubbleLogger.Event.BUBBLE_BAR_BUBBLE_DISMISSED_DRAG_BUBBLE));
        verify(mBubbleLogger).log(eqBubbleWithKey(mRow.getKey()),
                eq(BubbleLogger.Event.BUBBLE_BAR_BUBBLE_SWITCHED));

        verifyNoMoreInteractions(mBubbleLogger);
    }

    @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
    @Test
    public void testEventLogging_bubbleBar_dragOtherBubbleToDismiss() {
        mBubbleProperties.mIsBubbleBarEnabled = true;
        mPositioner.setIsLargeScreen(true);
        FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
        mBubbleController.registerBubbleStateListener(bubbleStateListener);

        mEntryListener.onEntryAdded(mRow);
        mEntryListener.onEntryAdded(mRow2);
        mBubbleController.expandStackAndSelectBubbleFromLauncher(mRow2.getKey(), 0);

        clearInvocations(mBubbleLogger);

        // Dismiss other bubble
        mBubbleController.startBubbleDrag(mRow.getKey());
        mBubbleController.dragBubbleToDismiss(mRow.getKey(), System.currentTimeMillis());

        // Log bubble dismissed via drag, but no switch event
        verify(mBubbleLogger).log(eqBubbleWithKey(mRow.getKey()),
                eq(BubbleLogger.Event.BUBBLE_BAR_BUBBLE_DISMISSED_DRAG_BUBBLE));

        verifyNoMoreInteractions(mBubbleLogger);
    }

    @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
@@ -2569,6 +2607,32 @@ public class BubblesTest extends SysuiTestCase {
                eq(BubbleLogger.Event.BUBBLE_BAR_EXPANDED));
    }

    @EnableFlags(FLAG_ENABLE_BUBBLE_BAR)
    @Test
    public void testEventLogging_bubbleBar_switchBubble() {
        mBubbleProperties.mIsBubbleBarEnabled = true;
        mPositioner.setIsLargeScreen(true);
        FakeBubbleStateListener bubbleStateListener = new FakeBubbleStateListener();
        mBubbleController.registerBubbleStateListener(bubbleStateListener);

        mEntryListener.onEntryAdded(mRow);
        mEntryListener.onEntryAdded(mRow2);
        mBubbleController.expandStackAndSelectBubbleFromLauncher(mRow.getKey(), 0);

        // First select is expand
        verify(mBubbleLogger).log(eqBubbleWithKey(mRow.getKey()),
                eq(BubbleLogger.Event.BUBBLE_BAR_EXPANDED));
        verify(mBubbleLogger, never()).log(eqBubbleWithKey(mRow.getKey()),
                eq(BubbleLogger.Event.BUBBLE_BAR_BUBBLE_SWITCHED));

        // Second select is switch
        mBubbleController.expandStackAndSelectBubbleFromLauncher(mRow2.getKey(), 0);
        verify(mBubbleLogger).log(eqBubbleWithKey(mRow2.getKey()),
                eq(BubbleLogger.Event.BUBBLE_BAR_BUBBLE_SWITCHED));
        verify(mBubbleLogger, never()).log(eqBubbleWithKey(mRow2.getKey()),
                eq(BubbleLogger.Event.BUBBLE_BAR_EXPANDED));
    }

    /** Creates a bubble using the userId and package. */
    private Bubble createBubble(int userId, String pkg) {
        final UserHandle userHandle = new UserHandle(userId);