Loading libs/WindowManager/Shell/res/layout/pip_menu_activity.xml→libs/WindowManager/Shell/res/layout/pip_menu.xml +0 −0 File moved. View file packages/CarSystemUI/src/com/android/systemui/wmshell/CarWMShellModule.java +0 −10 Original line number Diff line number Diff line Loading @@ -22,8 +22,6 @@ import android.view.IWindowManager; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.pip.phone.PipMenuActivity; import com.android.systemui.pip.phone.dagger.PipMenuActivityClass; import com.android.systemui.wm.DisplaySystemBarsController; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayImeController; Loading @@ -43,12 +41,4 @@ public class CarWMShellModule { return new DisplaySystemBarsController(context, wmService, displayController, mainHandler, transactionPool); } /** TODO(b/150319024): PipMenuActivity will move to a Window */ @SysUISingleton @PipMenuActivityClass @Provides Class<?> providePipMenuActivityClass() { return PipMenuActivity.class; } } packages/SystemUI/AndroidManifest.xml +0 −14 Original line number Diff line number Diff line Loading @@ -530,20 +530,6 @@ androidprv:alwaysFocusable="true" android:excludeFromRecents="true" /> <activity android:name=".pip.phone.PipMenuActivity" android:permission="com.android.systemui.permission.SELF" android:theme="@style/PipPhoneOverlayControlTheme" android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout" android:excludeFromRecents="true" android:exported="false" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:stateNotNeeded="true" android:taskAffinity="" android:launchMode="singleTop" androidprv:alwaysFocusable="true" /> <!-- started from SliceProvider --> <activity android:name=".SlicePermissionActivity" android:theme="@style/Theme.SystemUI.Dialog.Alert" Loading packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +53 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,9 @@ import android.os.RemoteException; import android.util.Log; import android.util.Size; import android.view.SurfaceControl; import android.view.SurfaceControlViewHost; import android.view.View; import android.view.WindowManager; import android.window.TaskOrganizer; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; Loading @@ -57,6 +60,7 @@ import android.window.WindowOrganizer; import com.android.internal.os.SomeArgs; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.pip.phone.PipMenuActivityController; import com.android.systemui.pip.phone.PipUpdateThread; import com.android.systemui.stackdivider.SplitScreen; import com.android.wm.shell.R; Loading Loading @@ -95,6 +99,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize private static final int MSG_FINISH_RESIZE = 4; private static final int MSG_RESIZE_USER = 5; private final Context mContext; private final Handler mMainHandler; private final Handler mUpdateHandler; private final PipBoundsHandler mPipBoundsHandler; Loading @@ -107,6 +112,8 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize private final Map<IBinder, Configuration> mInitialState = new HashMap<>(); private final Optional<SplitScreen> mSplitScreenOptional; protected final ShellTaskOrganizer mTaskOrganizer; private SurfaceControlViewHost mPipViewHost; private SurfaceControl mPipMenuSurface; // These callbacks are called on the update thread private final PipAnimationController.PipAnimationCallback mPipAnimationCallback = Loading Loading @@ -212,6 +219,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize @NonNull DisplayController displayController, @NonNull PipUiEventLogger pipUiEventLogger, @NonNull ShellTaskOrganizer shellTaskOrganizer) { mContext = context; mMainHandler = new Handler(Looper.getMainLooper()); mUpdateHandler = new Handler(PipUpdateThread.get().getLooper(), mUpdateCallbacks); mPipBoundsHandler = boundsHandler; Loading Loading @@ -503,6 +511,45 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize } } /** * Setup the ViewHost and attach the provided menu view to the ViewHost. */ public void attachPipMenuViewHost(View menuView, WindowManager.LayoutParams lp) { if (mPipMenuSurface != null) { Log.e(TAG, "PIP Menu View already created and attached."); return; } if (Looper.getMainLooper() != Looper.myLooper()) { throw new RuntimeException("PipMenuView needs to be attached on the main thread."); } mPipViewHost = new SurfaceControlViewHost(mContext, mContext.getDisplay(), (android.os.Binder) null); mPipMenuSurface = mPipViewHost.getSurfacePackage().getSurfaceControl(); SurfaceControl.Transaction transaction = new SurfaceControl.Transaction(); transaction.reparent(mPipMenuSurface, mLeash); transaction.show(mPipMenuSurface); transaction.setRelativeLayer(mPipMenuSurface, mLeash, 1); transaction.apply(); mPipViewHost.setView(menuView, lp); } /** * Releases the PIP Menu's View host, remove it from PIP task surface. */ public void detachPipMenuViewHost() { if (mPipMenuSurface != null) { SurfaceControl.Transaction transaction = new SurfaceControl.Transaction(); transaction.remove(mPipMenuSurface); transaction.apply(); mPipMenuSurface = null; mPipViewHost = null; } } /** * Note that dismissing PiP is now originated from SystemUI, see {@link #exitPip(int)}. * Meanwhile this callback is invoked whenever the task is removed. For instance: Loading Loading @@ -838,6 +885,12 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize WindowContainerTransaction wct = new WindowContainerTransaction(); prepareFinishResizeTransaction(destinationBounds, direction, tx, wct); applyFinishBoundsResize(wct, direction); runOnMainHandler(() -> { if (mPipViewHost != null) { mPipViewHost.relayout(PipMenuActivityController.getPipMenuLayoutParams( destinationBounds.width(), destinationBounds.height())); } }); } private void prepareFinishResizeTransaction(Rect destinationBounds, Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +2 −4 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipSurfaceTransactionHelper; import com.android.systemui.pip.PipTaskOrganizer; import com.android.systemui.pip.PipUiEventLogger; import com.android.systemui.pip.phone.dagger.PipMenuActivityClass; import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputConsumerController; Loading Loading @@ -267,7 +266,6 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio @Inject public PipManager(Context context, BroadcastDispatcher broadcastDispatcher, @PipMenuActivityClass Class<?> pipMenuActivityClass, ConfigurationController configController, DeviceConfigProxy deviceConfig, DisplayController displayController, Loading Loading @@ -296,8 +294,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio mPipTaskOrganizer.registerPipTransitionCallback(this); mInputConsumerController = InputConsumerController.getPipInputConsumer(); mMediaController = new PipMediaController(context, mActivityManager, broadcastDispatcher); mMenuController = new PipMenuActivityController(context, pipMenuActivityClass, mMediaController, mInputConsumerController); mMenuController = new PipMenuActivityController(context, mMediaController, mInputConsumerController, mPipTaskOrganizer); mTouchHandler = new PipTouchHandler(context, mActivityManager, mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer, floatingContentCoordinator, deviceConfig, sysUiState, pipUiEventLogger); Loading Loading
libs/WindowManager/Shell/res/layout/pip_menu_activity.xml→libs/WindowManager/Shell/res/layout/pip_menu.xml +0 −0 File moved. View file
packages/CarSystemUI/src/com/android/systemui/wmshell/CarWMShellModule.java +0 −10 Original line number Diff line number Diff line Loading @@ -22,8 +22,6 @@ import android.view.IWindowManager; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.pip.phone.PipMenuActivity; import com.android.systemui.pip.phone.dagger.PipMenuActivityClass; import com.android.systemui.wm.DisplaySystemBarsController; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.DisplayImeController; Loading @@ -43,12 +41,4 @@ public class CarWMShellModule { return new DisplaySystemBarsController(context, wmService, displayController, mainHandler, transactionPool); } /** TODO(b/150319024): PipMenuActivity will move to a Window */ @SysUISingleton @PipMenuActivityClass @Provides Class<?> providePipMenuActivityClass() { return PipMenuActivity.class; } }
packages/SystemUI/AndroidManifest.xml +0 −14 Original line number Diff line number Diff line Loading @@ -530,20 +530,6 @@ androidprv:alwaysFocusable="true" android:excludeFromRecents="true" /> <activity android:name=".pip.phone.PipMenuActivity" android:permission="com.android.systemui.permission.SELF" android:theme="@style/PipPhoneOverlayControlTheme" android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout" android:excludeFromRecents="true" android:exported="false" android:resizeableActivity="true" android:supportsPictureInPicture="true" android:stateNotNeeded="true" android:taskAffinity="" android:launchMode="singleTop" androidprv:alwaysFocusable="true" /> <!-- started from SliceProvider --> <activity android:name=".SlicePermissionActivity" android:theme="@style/Theme.SystemUI.Dialog.Alert" Loading
packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +53 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,9 @@ import android.os.RemoteException; import android.util.Log; import android.util.Size; import android.view.SurfaceControl; import android.view.SurfaceControlViewHost; import android.view.View; import android.view.WindowManager; import android.window.TaskOrganizer; import android.window.WindowContainerToken; import android.window.WindowContainerTransaction; Loading @@ -57,6 +60,7 @@ import android.window.WindowOrganizer; import com.android.internal.os.SomeArgs; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.pip.phone.PipMenuActivityController; import com.android.systemui.pip.phone.PipUpdateThread; import com.android.systemui.stackdivider.SplitScreen; import com.android.wm.shell.R; Loading Loading @@ -95,6 +99,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize private static final int MSG_FINISH_RESIZE = 4; private static final int MSG_RESIZE_USER = 5; private final Context mContext; private final Handler mMainHandler; private final Handler mUpdateHandler; private final PipBoundsHandler mPipBoundsHandler; Loading @@ -107,6 +112,8 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize private final Map<IBinder, Configuration> mInitialState = new HashMap<>(); private final Optional<SplitScreen> mSplitScreenOptional; protected final ShellTaskOrganizer mTaskOrganizer; private SurfaceControlViewHost mPipViewHost; private SurfaceControl mPipMenuSurface; // These callbacks are called on the update thread private final PipAnimationController.PipAnimationCallback mPipAnimationCallback = Loading Loading @@ -212,6 +219,7 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize @NonNull DisplayController displayController, @NonNull PipUiEventLogger pipUiEventLogger, @NonNull ShellTaskOrganizer shellTaskOrganizer) { mContext = context; mMainHandler = new Handler(Looper.getMainLooper()); mUpdateHandler = new Handler(PipUpdateThread.get().getLooper(), mUpdateCallbacks); mPipBoundsHandler = boundsHandler; Loading Loading @@ -503,6 +511,45 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize } } /** * Setup the ViewHost and attach the provided menu view to the ViewHost. */ public void attachPipMenuViewHost(View menuView, WindowManager.LayoutParams lp) { if (mPipMenuSurface != null) { Log.e(TAG, "PIP Menu View already created and attached."); return; } if (Looper.getMainLooper() != Looper.myLooper()) { throw new RuntimeException("PipMenuView needs to be attached on the main thread."); } mPipViewHost = new SurfaceControlViewHost(mContext, mContext.getDisplay(), (android.os.Binder) null); mPipMenuSurface = mPipViewHost.getSurfacePackage().getSurfaceControl(); SurfaceControl.Transaction transaction = new SurfaceControl.Transaction(); transaction.reparent(mPipMenuSurface, mLeash); transaction.show(mPipMenuSurface); transaction.setRelativeLayer(mPipMenuSurface, mLeash, 1); transaction.apply(); mPipViewHost.setView(menuView, lp); } /** * Releases the PIP Menu's View host, remove it from PIP task surface. */ public void detachPipMenuViewHost() { if (mPipMenuSurface != null) { SurfaceControl.Transaction transaction = new SurfaceControl.Transaction(); transaction.remove(mPipMenuSurface); transaction.apply(); mPipMenuSurface = null; mPipViewHost = null; } } /** * Note that dismissing PiP is now originated from SystemUI, see {@link #exitPip(int)}. * Meanwhile this callback is invoked whenever the task is removed. For instance: Loading Loading @@ -838,6 +885,12 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize WindowContainerTransaction wct = new WindowContainerTransaction(); prepareFinishResizeTransaction(destinationBounds, direction, tx, wct); applyFinishBoundsResize(wct, direction); runOnMainHandler(() -> { if (mPipViewHost != null) { mPipViewHost.relayout(PipMenuActivityController.getPipMenuLayoutParams( destinationBounds.width(), destinationBounds.height())); } }); } private void prepareFinishResizeTransaction(Rect destinationBounds, Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +2 −4 Original line number Diff line number Diff line Loading @@ -49,7 +49,6 @@ import com.android.systemui.pip.PipBoundsHandler; import com.android.systemui.pip.PipSurfaceTransactionHelper; import com.android.systemui.pip.PipTaskOrganizer; import com.android.systemui.pip.PipUiEventLogger; import com.android.systemui.pip.phone.dagger.PipMenuActivityClass; import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputConsumerController; Loading Loading @@ -267,7 +266,6 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio @Inject public PipManager(Context context, BroadcastDispatcher broadcastDispatcher, @PipMenuActivityClass Class<?> pipMenuActivityClass, ConfigurationController configController, DeviceConfigProxy deviceConfig, DisplayController displayController, Loading Loading @@ -296,8 +294,8 @@ public class PipManager implements BasePipManager, PipTaskOrganizer.PipTransitio mPipTaskOrganizer.registerPipTransitionCallback(this); mInputConsumerController = InputConsumerController.getPipInputConsumer(); mMediaController = new PipMediaController(context, mActivityManager, broadcastDispatcher); mMenuController = new PipMenuActivityController(context, pipMenuActivityClass, mMediaController, mInputConsumerController); mMenuController = new PipMenuActivityController(context, mMediaController, mInputConsumerController, mPipTaskOrganizer); mTouchHandler = new PipTouchHandler(context, mActivityManager, mMenuController, mInputConsumerController, mPipBoundsHandler, mPipTaskOrganizer, floatingContentCoordinator, deviceConfig, sysUiState, pipUiEventLogger); Loading