Merge "Dismiss TV PiP when app op OP_PICTURE_IN_PICTURE is revoked" into tm-dev am: 7bea00698c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17907962

Change-Id: Icdc7a26c1655ca50bf2509d1651e93e259acfdb9
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Robert Horvath
2022-05-05 16:52:41 +00:00
committed by Automerger Merge Worker
8 changed files with 36 additions and 12 deletions

View File

@@ -29,6 +29,7 @@ import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.common.annotations.ShellMainThread;
import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.pip.PipAnimationController; import com.android.wm.shell.pip.PipAnimationController;
import com.android.wm.shell.pip.PipAppOpsListener;
import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipMediaController;
import com.android.wm.shell.pip.PipParamsChangedForwarder; import com.android.wm.shell.pip.PipParamsChangedForwarder;
import com.android.wm.shell.pip.PipSnapAlgorithm; import com.android.wm.shell.pip.PipSnapAlgorithm;
@@ -63,6 +64,7 @@ public abstract class TvPipModule {
Context context, Context context,
TvPipBoundsState tvPipBoundsState, TvPipBoundsState tvPipBoundsState,
TvPipBoundsAlgorithm tvPipBoundsAlgorithm, TvPipBoundsAlgorithm tvPipBoundsAlgorithm,
PipAppOpsListener pipAppOpsListener,
PipTaskOrganizer pipTaskOrganizer, PipTaskOrganizer pipTaskOrganizer,
TvPipMenuController tvPipMenuController, TvPipMenuController tvPipMenuController,
PipMediaController pipMediaController, PipMediaController pipMediaController,
@@ -79,6 +81,7 @@ public abstract class TvPipModule {
context, context,
tvPipBoundsState, tvPipBoundsState,
tvPipBoundsAlgorithm, tvPipBoundsAlgorithm,
pipAppOpsListener,
pipTaskOrganizer, pipTaskOrganizer,
pipTransitionController, pipTransitionController,
tvPipMenuController, tvPipMenuController,
@@ -185,4 +188,12 @@ public abstract class TvPipModule {
static PipParamsChangedForwarder providePipParamsChangedForwarder() { static PipParamsChangedForwarder providePipParamsChangedForwarder() {
return new PipParamsChangedForwarder(); return new PipParamsChangedForwarder();
} }
@WMSingleton
@Provides
static PipAppOpsListener providePipAppOpsListener(Context context,
PipTaskOrganizer pipTaskOrganizer,
@ShellMainThread ShellExecutor mainExecutor) {
return new PipAppOpsListener(context, pipTaskOrganizer::removePip, mainExecutor);
}
} }

View File

@@ -78,7 +78,6 @@ import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipMediaController;
import com.android.wm.shell.pip.PipSurfaceTransactionHelper; import com.android.wm.shell.pip.PipSurfaceTransactionHelper;
import com.android.wm.shell.pip.PipUiEventLogger; import com.android.wm.shell.pip.PipUiEventLogger;
import com.android.wm.shell.pip.phone.PipAppOpsListener;
import com.android.wm.shell.pip.phone.PipTouchHandler; import com.android.wm.shell.pip.phone.PipTouchHandler;
import com.android.wm.shell.recents.RecentTasks; import com.android.wm.shell.recents.RecentTasks;
import com.android.wm.shell.recents.RecentTasksController; import com.android.wm.shell.recents.RecentTasksController;
@@ -435,14 +434,6 @@ public abstract class WMShellBaseModule {
return new FloatingContentCoordinator(); return new FloatingContentCoordinator();
} }
@WMSingleton
@Provides
static PipAppOpsListener providePipAppOpsListener(Context context,
PipTouchHandler pipTouchHandler,
@ShellMainThread ShellExecutor mainExecutor) {
return new PipAppOpsListener(context, pipTouchHandler.getMotionHelper(), mainExecutor);
}
// Needs handler for registering broadcast receivers // Needs handler for registering broadcast receivers
@WMSingleton @WMSingleton
@Provides @Provides

View File

@@ -51,6 +51,7 @@ import com.android.wm.shell.legacysplitscreen.LegacySplitScreenController;
import com.android.wm.shell.onehanded.OneHandedController; import com.android.wm.shell.onehanded.OneHandedController;
import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.pip.PipAnimationController; import com.android.wm.shell.pip.PipAnimationController;
import com.android.wm.shell.pip.PipAppOpsListener;
import com.android.wm.shell.pip.PipBoundsAlgorithm; import com.android.wm.shell.pip.PipBoundsAlgorithm;
import com.android.wm.shell.pip.PipBoundsState; import com.android.wm.shell.pip.PipBoundsState;
import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipMediaController;
@@ -63,7 +64,6 @@ import com.android.wm.shell.pip.PipTransitionController;
import com.android.wm.shell.pip.PipTransitionState; import com.android.wm.shell.pip.PipTransitionState;
import com.android.wm.shell.pip.PipUiEventLogger; import com.android.wm.shell.pip.PipUiEventLogger;
import com.android.wm.shell.pip.phone.PhonePipMenuController; import com.android.wm.shell.pip.phone.PhonePipMenuController;
import com.android.wm.shell.pip.phone.PipAppOpsListener;
import com.android.wm.shell.pip.phone.PipController; import com.android.wm.shell.pip.phone.PipController;
import com.android.wm.shell.pip.phone.PipMotionHelper; import com.android.wm.shell.pip.phone.PipMotionHelper;
import com.android.wm.shell.pip.phone.PipTouchHandler; import com.android.wm.shell.pip.phone.PipTouchHandler;
@@ -323,6 +323,14 @@ public class WMShellModule {
pipSurfaceTransactionHelper, splitScreenOptional); pipSurfaceTransactionHelper, splitScreenOptional);
} }
@WMSingleton
@Provides
static PipAppOpsListener providePipAppOpsListener(Context context,
PipTouchHandler pipTouchHandler,
@ShellMainThread ShellExecutor mainExecutor) {
return new PipAppOpsListener(context, pipTouchHandler.getMotionHelper(), mainExecutor);
}
@WMSingleton @WMSingleton
@Provides @Provides
static PipMotionHelper providePipMotionHelper(Context context, static PipMotionHelper providePipMotionHelper(Context context,

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.wm.shell.pip.phone; package com.android.wm.shell.pip;
import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.MODE_ALLOWED;
import static android.app.AppOpsManager.OP_PICTURE_IN_PICTURE; import static android.app.AppOpsManager.OP_PICTURE_IN_PICTURE;
@@ -28,7 +28,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.util.Pair; import android.util.Pair;
import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.pip.PipUtils;
public class PipAppOpsListener { public class PipAppOpsListener {
private static final String TAG = PipAppOpsListener.class.getSimpleName(); private static final String TAG = PipAppOpsListener.class.getSimpleName();

View File

@@ -76,6 +76,7 @@ import com.android.wm.shell.pip.IPipAnimationListener;
import com.android.wm.shell.pip.PinnedStackListenerForwarder; import com.android.wm.shell.pip.PinnedStackListenerForwarder;
import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.pip.PipAnimationController; import com.android.wm.shell.pip.PipAnimationController;
import com.android.wm.shell.pip.PipAppOpsListener;
import com.android.wm.shell.pip.PipBoundsAlgorithm; import com.android.wm.shell.pip.PipBoundsAlgorithm;
import com.android.wm.shell.pip.PipBoundsState; import com.android.wm.shell.pip.PipBoundsState;
import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipMediaController;

View File

@@ -44,6 +44,7 @@ import com.android.wm.shell.animation.FloatProperties;
import com.android.wm.shell.animation.PhysicsAnimator; import com.android.wm.shell.animation.PhysicsAnimator;
import com.android.wm.shell.common.FloatingContentCoordinator; import com.android.wm.shell.common.FloatingContentCoordinator;
import com.android.wm.shell.common.magnetictarget.MagnetizedObject; import com.android.wm.shell.common.magnetictarget.MagnetizedObject;
import com.android.wm.shell.pip.PipAppOpsListener;
import com.android.wm.shell.pip.PipBoundsState; import com.android.wm.shell.pip.PipBoundsState;
import com.android.wm.shell.pip.PipSnapAlgorithm; import com.android.wm.shell.pip.PipSnapAlgorithm;
import com.android.wm.shell.pip.PipTaskOrganizer; import com.android.wm.shell.pip.PipTaskOrganizer;

View File

@@ -45,6 +45,7 @@ import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.pip.PinnedStackListenerForwarder; import com.android.wm.shell.pip.PinnedStackListenerForwarder;
import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.Pip;
import com.android.wm.shell.pip.PipAnimationController; import com.android.wm.shell.pip.PipAnimationController;
import com.android.wm.shell.pip.PipAppOpsListener;
import com.android.wm.shell.pip.PipBoundsState; import com.android.wm.shell.pip.PipBoundsState;
import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipMediaController;
import com.android.wm.shell.pip.PipParamsChangedForwarder; import com.android.wm.shell.pip.PipParamsChangedForwarder;
@@ -97,6 +98,7 @@ public class TvPipController implements PipTransitionController.PipTransitionCal
private final TvPipBoundsState mTvPipBoundsState; private final TvPipBoundsState mTvPipBoundsState;
private final TvPipBoundsAlgorithm mTvPipBoundsAlgorithm; private final TvPipBoundsAlgorithm mTvPipBoundsAlgorithm;
private final PipAppOpsListener mAppOpsListener;
private final PipTaskOrganizer mPipTaskOrganizer; private final PipTaskOrganizer mPipTaskOrganizer;
private final PipMediaController mPipMediaController; private final PipMediaController mPipMediaController;
private final TvPipNotificationController mPipNotificationController; private final TvPipNotificationController mPipNotificationController;
@@ -121,6 +123,7 @@ public class TvPipController implements PipTransitionController.PipTransitionCal
Context context, Context context,
TvPipBoundsState tvPipBoundsState, TvPipBoundsState tvPipBoundsState,
TvPipBoundsAlgorithm tvPipBoundsAlgorithm, TvPipBoundsAlgorithm tvPipBoundsAlgorithm,
PipAppOpsListener pipAppOpsListener,
PipTaskOrganizer pipTaskOrganizer, PipTaskOrganizer pipTaskOrganizer,
PipTransitionController pipTransitionController, PipTransitionController pipTransitionController,
TvPipMenuController tvPipMenuController, TvPipMenuController tvPipMenuController,
@@ -136,6 +139,7 @@ public class TvPipController implements PipTransitionController.PipTransitionCal
context, context,
tvPipBoundsState, tvPipBoundsState,
tvPipBoundsAlgorithm, tvPipBoundsAlgorithm,
pipAppOpsListener,
pipTaskOrganizer, pipTaskOrganizer,
pipTransitionController, pipTransitionController,
tvPipMenuController, tvPipMenuController,
@@ -153,6 +157,7 @@ public class TvPipController implements PipTransitionController.PipTransitionCal
Context context, Context context,
TvPipBoundsState tvPipBoundsState, TvPipBoundsState tvPipBoundsState,
TvPipBoundsAlgorithm tvPipBoundsAlgorithm, TvPipBoundsAlgorithm tvPipBoundsAlgorithm,
PipAppOpsListener pipAppOpsListener,
PipTaskOrganizer pipTaskOrganizer, PipTaskOrganizer pipTaskOrganizer,
PipTransitionController pipTransitionController, PipTransitionController pipTransitionController,
TvPipMenuController tvPipMenuController, TvPipMenuController tvPipMenuController,
@@ -181,6 +186,7 @@ public class TvPipController implements PipTransitionController.PipTransitionCal
mTvPipMenuController = tvPipMenuController; mTvPipMenuController = tvPipMenuController;
mTvPipMenuController.setDelegate(this); mTvPipMenuController.setDelegate(this);
mAppOpsListener = pipAppOpsListener;
mPipTaskOrganizer = pipTaskOrganizer; mPipTaskOrganizer = pipTaskOrganizer;
pipTransitionController.registerPipTransitionCallback(this); pipTransitionController.registerPipTransitionCallback(this);
@@ -521,6 +527,12 @@ public class TvPipController implements PipTransitionController.PipTransitionCal
@Override @Override
public void onActivityPinned(String packageName, int userId, int taskId, int stackId) { public void onActivityPinned(String packageName, int userId, int taskId, int stackId) {
checkIfPinnedTaskAppeared(); checkIfPinnedTaskAppeared();
mAppOpsListener.onActivityPinned(packageName);
}
@Override
public void onActivityUnpinned() {
mAppOpsListener.onActivityUnpinned();
} }
@Override @Override

View File

@@ -45,6 +45,7 @@ import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.ShellExecutor;
import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.TaskStackListenerImpl;
import com.android.wm.shell.onehanded.OneHandedController; import com.android.wm.shell.onehanded.OneHandedController;
import com.android.wm.shell.pip.PipAppOpsListener;
import com.android.wm.shell.pip.PipBoundsAlgorithm; import com.android.wm.shell.pip.PipBoundsAlgorithm;
import com.android.wm.shell.pip.PipBoundsState; import com.android.wm.shell.pip.PipBoundsState;
import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipMediaController;