Merge "Fix issue with TV PIP clobbering resize on orientation change." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-23 16:54:44 +00:00
committed by Android (Google) Code Review
4 changed files with 18 additions and 7 deletions

View File

@@ -17,12 +17,13 @@
package com.android.systemui.pip; package com.android.systemui.pip;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration;
import java.io.PrintWriter; import java.io.PrintWriter;
public interface BasePipManager { public interface BasePipManager {
void initialize(Context context); void initialize(Context context);
void showPictureInPictureMenu(); void showPictureInPictureMenu();
void onConfigurationChanged(); void onConfigurationChanged(Configuration newConfig);
void dump(PrintWriter pw); void dump(PrintWriter pw);
} }

View File

@@ -72,7 +72,7 @@ public class PipUI extends SystemUI implements CommandQueue.Callbacks {
return; return;
} }
mPipManager.onConfigurationChanged(); mPipManager.onConfigurationChanged(newConfig);
} }
@Override @Override

View File

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

View File

@@ -26,6 +26,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.pm.ParceledListSlice; import android.content.pm.ParceledListSlice;
import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Rect; import android.graphics.Rect;
import android.media.session.MediaController; import android.media.session.MediaController;
@@ -116,6 +117,7 @@ public class PipManager implements BasePipManager {
private Rect mDefaultPipBounds = new Rect(); private Rect mDefaultPipBounds = new Rect();
private Rect mSettingsPipBounds; private Rect mSettingsPipBounds;
private Rect mMenuModePipBounds; private Rect mMenuModePipBounds;
private int mLastOrientation = Configuration.ORIENTATION_UNDEFINED;
private boolean mInitialized; private boolean mInitialized;
private int mPipTaskId = TASK_ID_NO_PIP; private int mPipTaskId = TASK_ID_NO_PIP;
private ComponentName mPipComponentName; private ComponentName mPipComponentName;
@@ -237,7 +239,7 @@ public class PipManager implements BasePipManager {
} }
} }
loadConfigurationsAndApply(); loadConfigurationsAndApply(mContext.getResources().getConfiguration());
mMediaSessionManager = mMediaSessionManager =
(MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE); (MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE);
@@ -250,7 +252,14 @@ public class PipManager implements BasePipManager {
mPipNotification = new PipNotification(context); 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(); Resources res = mContext.getResources();
mSettingsPipBounds = Rect.unflattenFromString(res.getString( mSettingsPipBounds = Rect.unflattenFromString(res.getString(
R.string.pip_settings_bounds)); R.string.pip_settings_bounds));
@@ -267,8 +276,8 @@ public class PipManager implements BasePipManager {
/** /**
* Updates the PIP per configuration changed. * Updates the PIP per configuration changed.
*/ */
public void onConfigurationChanged() { public void onConfigurationChanged(Configuration newConfig) {
loadConfigurationsAndApply(); loadConfigurationsAndApply(newConfig);
mPipNotification.onConfigurationChanged(mContext); mPipNotification.onConfigurationChanged(mContext);
} }