Merge "Dismiss TV PiP when app op OP_PICTURE_IN_PICTURE is revoked" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7bea00698c
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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();
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user