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

Commit d4b7be24 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Stop inflate on overflow and null check views" into rvc-dev am: 39ea2f1d am: 59907cf8

Change-Id: I0c86e216a8641d497ddaa702b3720aac8c4ee66d
parents c585cf0e 59907cf8
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -216,11 +216,20 @@ class Bubble implements BubbleViewProvider {
        return mInflated;
    }

    void stopInflation() {
        if (mInflationTask == null) {
            return;
        }
        mInflationTask.cancel(/* mayInterruptIfRunning */ true);
        mIconView = null;
        mExpandedView = null;
        mInflated = false;
    }

    void setViewInfo(BubbleViewInfoTask.BubbleViewInfo info) {
        if (!isInflated()) {
            mIconView = info.imageView;
            mExpandedView = info.expandedView;
            mInflated = true;
        }

        mShortcutInfo = info.shortcutInfo;
@@ -231,8 +240,15 @@ class Bubble implements BubbleViewProvider {
        mDotColor = info.dotColor;
        mDotPath = info.dotPath;

        mExpandedView.update(this);
        mIconView.update(this);
        if (mExpandedView != null && mIconView != null) {
            mInflated = true;
        }
        if (mExpandedView != null) {
            mExpandedView.update(/* bubble */ this);
        }
        if (mIconView != null) {
            mIconView.update(/* bubble */ this);
        }
    }

    void setInflated(boolean inflated) {
+10 −6
Original line number Diff line number Diff line
@@ -203,10 +203,7 @@ public class BubbleData {
        if (DEBUG_BUBBLE_DATA) {
            Log.d(TAG, "promoteBubbleFromOverflow: " + bubble);
        }

        // Preserve new order for next repack, which sorts by last updated time.
        bubble.markUpdatedAt(mTimeSource.currentTimeMillis());
        mOverflowBubbles.remove(bubble);
        moveOverflowBubbleToPending(bubble);
        bubble.inflate(
                b -> {
                    notificationEntryUpdated(bubble, /* suppressFlyout */
@@ -217,6 +214,13 @@ public class BubbleData {
        dispatchPendingChanges();
    }

    private void moveOverflowBubbleToPending(Bubble b) {
        // Preserve new order for next repack, which sorts by last updated time.
        b.markUpdatedAt(mTimeSource.currentTimeMillis());
        mOverflowBubbles.remove(b);
        mPendingBubbles.add(b);
    }

    /**
     * Constructs a new bubble or returns an existing one. Does not add new bubbles to
     * bubble data, must go through {@link #notificationEntryUpdated(Bubble, boolean, boolean)}
@@ -228,8 +232,7 @@ public class BubbleData {
            for (int i = 0; i < mOverflowBubbles.size(); i++) {
                Bubble b = mOverflowBubbles.get(i);
                if (b.getKey().equals(entry.getKey())) {
                    mOverflowBubbles.remove(b);
                    mPendingBubbles.add(b);
                    moveOverflowBubbleToPending(b);
                    return b;
                }
            }
@@ -445,6 +448,7 @@ public class BubbleData {
                Log.d(TAG, "overflowing bubble: " + bubble);
            }
            mOverflowBubbles.add(0, bubble);
            bubble.stopInflation();

            if (mOverflowBubbles.size() == mMaxOverflowBubbles + 1) {
                // Remove oldest bubble.