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

Commit efbbd496 authored by Youngsang Cho's avatar Youngsang Cho
Browse files

Use ActivityOptions.setLaunchBounds to resize PIP

Bug: 26574470
Change-Id: I5444ae40a51cf2746d78b4c006e5936c91d01ae4
parent 760199ea
Loading
Loading
Loading
Loading
+11 −26
Original line number Original line Diff line number Diff line
@@ -84,9 +84,8 @@ public class PipManager {
                return;
                return;
            }
            }
            if (DEBUG) Log.d(TAG, "PINNED_STACK:" + stackInfo);
            if (DEBUG) Log.d(TAG, "PINNED_STACK:" + stackInfo);
            mState = STATE_PIP_OVERLAY;
            mPipTaskId = stackInfo.taskIds[stackInfo.taskIds.length - 1];
            mPipTaskId = stackInfo.taskIds[stackInfo.taskIds.length - 1];
            launchPipOverlayActivity();
            showPipOverlay(false);
        }
        }
    };
    };
    private final Runnable mOnTaskStackChanged = new Runnable() {
    private final Runnable mOnTaskStackChanged = new Runnable() {
@@ -208,17 +207,17 @@ public class PipManager {
     * stack to the default PIP bound {@link com.android.internal.R.string
     * stack to the default PIP bound {@link com.android.internal.R.string
     * .config_defaultPictureInPictureBounds}.
     * .config_defaultPictureInPictureBounds}.
     */
     */
    public void showPipOverlay() {
    public void showPipOverlay(boolean resizeStack) {
        if (DEBUG) Log.d(TAG, "showPipOverlay()");
        if (DEBUG) Log.d(TAG, "showPipOverlay()");
        try {
            mActivityManager.resizeStack(PINNED_STACK_ID, mPipBound, false);
        } catch (Exception e) {
            Log.e(TAG, "resizeStack failed", e);
            closePip();
            return;
        }
        mState = STATE_PIP_OVERLAY;
        mState = STATE_PIP_OVERLAY;
        launchPipOverlayActivity();
        Intent intent = new Intent(mContext, PipOverlayActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        final ActivityOptions options = ActivityOptions.makeBasic();
        options.setLaunchStackId(PINNED_STACK_ID);
        if (resizeStack) {
            options.setLaunchBounds(mPipBound);
        }
        mContext.startActivity(intent, options.toBundle());
    }
    }


    /**
    /**
@@ -228,13 +227,6 @@ public class PipManager {
     */
     */
    public void showPipMenu() {
    public void showPipMenu() {
        if (DEBUG) Log.d(TAG, "showPipMenu()");
        if (DEBUG) Log.d(TAG, "showPipMenu()");
        try {
            mActivityManager.resizeStack(PINNED_STACK_ID, mMenuModePipBound, false);
        } catch (Exception e) {
            Log.e(TAG, "resizeStack failed", e);
            closePip();
            return;
        }
        mState = STATE_PIP_MENU;
        mState = STATE_PIP_MENU;
        for (int i = mListeners.size() - 1; i >= 0; --i) {
        for (int i = mListeners.size() - 1; i >= 0; --i) {
            mListeners.get(i).onShowPipMenu();
            mListeners.get(i).onShowPipMenu();
@@ -243,6 +235,7 @@ public class PipManager {
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        final ActivityOptions options = ActivityOptions.makeBasic();
        final ActivityOptions options = ActivityOptions.makeBasic();
        options.setLaunchStackId(PINNED_STACK_ID);
        options.setLaunchStackId(PINNED_STACK_ID);
        options.setLaunchBounds(mMenuModePipBound);
        mContext.startActivity(intent, options.toBundle());
        mContext.startActivity(intent, options.toBundle());
    }
    }


@@ -260,14 +253,6 @@ public class PipManager {
        mListeners.remove(listener);
        mListeners.remove(listener);
    }
    }


    private void launchPipOverlayActivity() {
        Intent intent = new Intent(mContext, PipOverlayActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        final ActivityOptions options = ActivityOptions.makeBasic();
        options.setLaunchStackId(PINNED_STACK_ID);
        mContext.startActivity(intent, options.toBundle());
    }

    private boolean hasPipTasks() {
    private boolean hasPipTasks() {
        try {
        try {
            StackInfo stackInfo = mActivityManager.getStackInfo(PINNED_STACK_ID);
            StackInfo stackInfo = mActivityManager.getStackInfo(PINNED_STACK_ID);
+2 −2
Original line number Original line Diff line number Diff line
@@ -55,7 +55,7 @@ public class PipMenuActivity extends Activity implements PipManager.Listener {
        findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
        findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
            @Override
            @Override
            public void onClick(View v) {
            public void onClick(View v) {
                mPipManager.showPipOverlay();
                mPipManager.showPipOverlay(true);
                finish();
                finish();
            }
            }
        });
        });
@@ -69,7 +69,7 @@ public class PipMenuActivity extends Activity implements PipManager.Listener {


    @Override
    @Override
    public void onBackPressed() {
    public void onBackPressed() {
        mPipManager.showPipOverlay();
        mPipManager.showPipOverlay(true);
        finish();
        finish();
    }
    }