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

Commit 0c5a5929 authored by Winson Chung's avatar Winson Chung
Browse files

Fix issue with TV PIP clobbering resize on orientation change.

- When the device rotates due to a test that requests a specific
  orientation, the TV PiP logic was resizing the state back to
  mDefaultPipBounds, which doesn't change depending on orientation change,
  clobbering the bounds in the new orientation that were calculated in WM.
  Since TV does not really care about the rotation case, we can just
  ignore the configuration changes due to orientation changes for the sake
  of passing the common CTS tests across handhelds and TV.

Bug: 38246863
Test: android.server.cts.ActivityManagerPinnedStackTests
Change-Id: Id7988a0b02f14f67908d3202cdd73b186d9fea16
parent 07f580ea
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -17,12 +17,13 @@
package com.android.systemui.pip;

import android.content.Context;
import android.content.res.Configuration;

import java.io.PrintWriter;

public interface  BasePipManager {
    void initialize(Context context);
    void showPictureInPictureMenu();
    void onConfigurationChanged();
    void onConfigurationChanged(Configuration newConfig);
    void dump(PrintWriter pw);
}
+1 −1
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ public class PipUI extends SystemUI implements CommandQueue.Callbacks {
            return;
        }

        mPipManager.onConfigurationChanged();
        mPipManager.onConfigurationChanged(newConfig);
    }

    @Override
+2 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.app.IActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ParceledListSlice;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.Handler;
import android.os.RemoteException;
@@ -196,7 +197,7 @@ public class PipManager implements BasePipManager {
    /**
     * Updates the PIP per configuration changed.
     */
    public void onConfigurationChanged() {
    public void onConfigurationChanged(Configuration newConfig) {
        mTouchHandler.onConfigurationChanged();
    }

+13 −4
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ParceledListSlice;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
import android.media.session.MediaController;
@@ -116,6 +117,7 @@ public class PipManager implements BasePipManager {
    private Rect mDefaultPipBounds = new Rect();
    private Rect mSettingsPipBounds;
    private Rect mMenuModePipBounds;
    private int mLastOrientation = Configuration.ORIENTATION_UNDEFINED;
    private boolean mInitialized;
    private int mPipTaskId = TASK_ID_NO_PIP;
    private ComponentName mPipComponentName;
@@ -237,7 +239,7 @@ public class PipManager implements BasePipManager {
            }
        }

        loadConfigurationsAndApply();
        loadConfigurationsAndApply(mContext.getResources().getConfiguration());
        mMediaSessionManager =
                (MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE);

@@ -250,7 +252,14 @@ public class PipManager implements BasePipManager {
        mPipNotification = new PipNotification(context);
    }

    private void loadConfigurationsAndApply() {
    private void loadConfigurationsAndApply(Configuration newConfig) {
        if (mLastOrientation != newConfig.orientation) {
            // Don't resize the pinned stack on orientation change. TV does not care about this case
            // and this could clobber the existing animation to the new bounds calculated by WM.
            mLastOrientation = newConfig.orientation;
            return;
        }

        Resources res = mContext.getResources();
        mSettingsPipBounds = Rect.unflattenFromString(res.getString(
                R.string.pip_settings_bounds));
@@ -267,8 +276,8 @@ public class PipManager implements BasePipManager {
    /**
     * Updates the PIP per configuration changed.
     */
    public void onConfigurationChanged() {
        loadConfigurationsAndApply();
    public void onConfigurationChanged(Configuration newConfig) {
        loadConfigurationsAndApply(newConfig);
        mPipNotification.onConfigurationChanged(mContext);
    }