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

Commit 2806269a authored by shawnlin's avatar shawnlin
Browse files

Fixed the conflict of the release methods of ActivityView & TaskEmbedder

There is a case in Bubble that we might release a un-initialized
TaskEmbedder while calling ActivityView.release() (ex. create a bubble
and don't expand it and then dismiss it) which will cause an exception.

Allow ActivityView.release() to be called at anytime and check the
initialization state before calling TaskEmbedder.release().

Bug: 155417004
Test: 1. Add bubbles and don't expands them then dimiss them
      2. Check logs.
Change-Id: I583ddd36f407c908cb63c109834940fc91c8d130
parent 2db44245
Loading
Loading
Loading
Loading
+4 −11
Original line number Diff line number Diff line
@@ -360,18 +360,9 @@ public class ActivityView extends ViewGroup implements android.window.TaskEmbedd
    }

    /**
     * Release this container. Activity launching will no longer be permitted.
     * <p>Note: Calling this method is allowed after
     * {@link StateCallback#onActivityViewReady(ActivityView)} callback was triggered and before
     * {@link StateCallback#onActivityViewDestroyed(ActivityView)}.
     *
     * @see StateCallback
     * Release this container if it is initialized. Activity launching will no longer be permitted.
     */
    public void release() {
        if (!mTaskEmbedder.isInitialized()) {
            throw new IllegalStateException(
                    "Trying to release container that is not initialized.");
        }
        performRelease();
    }

@@ -487,7 +478,9 @@ public class ActivityView extends ViewGroup implements android.window.TaskEmbedd
            return;
        }
        mSurfaceView.getHolder().removeCallback(mSurfaceCallback);
        if (mTaskEmbedder.isInitialized()) {
            mTaskEmbedder.release();
        }
        mTaskEmbedder.setListener(null);

        mGuard.close();
+1 −5
Original line number Diff line number Diff line
@@ -746,11 +746,7 @@ public class BubbleExpandedView extends LinearLayout {
        if (mActivityView == null) {
            return;
        }
        switch (mActivityViewStatus) {
            case INITIALIZED:
            case ACTIVITY_STARTED:
        mActivityView.release();
        }
        if (mTaskId != -1) {
            try {
                ActivityTaskManager.getService().removeTask(mTaskId);