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

Commit 567e8a79 authored by Mady Mellor's avatar Mady Mellor
Browse files

Use BubbleTaskViewListener for floating bubbles (behind a flag)

Flag: com.android.wm.shell.enable_bubble_task_view_listener
Test: manual - enable the flag and use floating bubbles, try basic
               interactions - expand, switch, dismiss, hit back
Bug: 272102927
Change-Id: Ide2298ce36c91eabb8603354ebe874a932ec1b82
parent 53f64acf
Loading
Loading
Loading
Loading
+42 −5
Original line number Diff line number Diff line
@@ -197,6 +197,8 @@ public class BubbleExpandedView extends LinearLayout {
     */
    private final FrameLayout mExpandedViewContainer = new FrameLayout(getContext());

    private TaskView.Listener mCurrentTaskViewListener;

    private final TaskView.Listener mTaskViewListener = new TaskView.Listener() {
        private boolean mInitialized = false;
        private boolean mDestroyed = false;
@@ -453,7 +455,34 @@ public class BubbleExpandedView extends LinearLayout {
            mTaskView = bubbleTaskView.getTaskView();
            // reset the insets that might left after TaskView is shown in BubbleBarExpandedView
            mTaskView.setCaptionInsets(null);
            bubbleTaskView.setDelegateListener(mTaskViewListener);
            if (Flags.enableBubbleTaskViewListener()) {
                mCurrentTaskViewListener = new BubbleTaskViewListener(mContext, bubbleTaskView,
                        /* viewParent= */ this, expandedViewManager,
                        new BubbleTaskViewListener.Callback() {
                            @Override
                            public void onTaskCreated() {
                                setContentVisibility(true);
                            }

                            @Override
                            public void onContentVisibilityChanged(boolean visible) {
                                setContentVisibility(visible);
                            }

                            @Override
                            public void onBackPressed() {
                                mStackView.onBackPressed();
                            }

                            @Override
                            public void onTaskRemovalStarted() {
                                // nothing to do / handled in listener.
                            }
                        });
            } else {
                mCurrentTaskViewListener = mTaskViewListener;
                bubbleTaskView.setDelegateListener(mCurrentTaskViewListener);
            }

            // set a fixed width so it is not recalculated as part of a rotation. the width will be
            // updated manually after the rotation.
@@ -464,12 +493,15 @@ public class BubbleExpandedView extends LinearLayout {
            }
            mExpandedViewContainer.addView(mTaskView, lp);
            bringChildToFront(mTaskView);

            if (!Flags.enableBubbleTaskViewListener()) {
                if (bubbleTaskView.isCreated()) {
                mTaskViewListener.onTaskCreated(
                    mCurrentTaskViewListener.onTaskCreated(
                            bubbleTaskView.getTaskId(), bubbleTaskView.getComponentName());
                }
            }
        }
    }

    void updateDimensions() {
        Resources res = getResources();
@@ -897,7 +929,12 @@ public class BubbleExpandedView extends LinearLayout {
            Log.w(TAG, "Stack is null for bubble: " + bubble);
            return;
        }
        boolean isNew = mBubble == null || didBackingContentChange(bubble);
        boolean isNew;
        if (mCurrentTaskViewListener instanceof BubbleTaskViewListener) {
            isNew = ((BubbleTaskViewListener) mCurrentTaskViewListener).setBubble(bubble);
        } else {
            isNew = mBubble == null || didBackingContentChange(bubble);
        }
        boolean isUpdate = bubble != null && mBubble != null
                && bubble.getKey().equals(mBubble.getKey());
        ProtoLog.d(WM_SHELL_BUBBLES, "BubbleExpandedView - update bubble=%s; isNew=%b; isUpdate=%b",