Loading packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +6 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ 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.pip.phone.PipUtils; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; Loading Loading @@ -260,6 +261,11 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize mSurfaceControlTransactionFactory = SurfaceControl.Transaction::new; mSplitScreenOptional = splitScreenOptional; mTaskOrganizer = shellTaskOrganizer; if (!PipUtils.hasSystemFeature(context)) { Log.w(TAG, "Device not support PIP feature"); return; } mTaskOrganizer.addListener(this, WINDOWING_MODE_PINNED); displayController.addDisplayWindowListener(this); } Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipController.java +1 −5 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.systemui.pip.phone; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static com.android.systemui.pip.PipAnimationController.isOutPipDirection; Loading @@ -30,7 +29,6 @@ import android.app.IActivityManager; import android.app.RemoteAction; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.res.Configuration; import android.graphics.Rect; Loading Loading @@ -278,9 +276,7 @@ public class PipController implements Pip, PipTaskOrganizer.PipTransitionCallbac mContext = context; mActivityManager = ActivityManager.getService(); PackageManager pm = context.getPackageManager(); boolean supportsPip = pm.hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); if (supportsPip) { if (PipUtils.hasSystemFeature(mContext)) { initController(context, broadcastDispatcher, configController, deviceConfig, displayController, floatingContentCoordinator, sysUiState, pipBoundsHandler, pipSurfaceTransactionHelper, pipTaskOrganizer, pipUiEventLogger); Loading packages/SystemUI/src/com/android/systemui/pip/phone/PipUtils.java +11 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.pip.phone; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import android.app.ActivityTaskManager; import android.app.ActivityTaskManager.RootTaskInfo; Loading Loading @@ -57,4 +58,14 @@ public class PipUtils { } return new Pair<>(null, 0); } /** * The util to check if device has PIP feature * * @param context application context * @return true if device has PIP feature, false otherwise. */ public static boolean hasSystemFeature(Context context) { return context.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); } } packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +5 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.recents; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import static android.view.MotionEvent.ACTION_CANCEL; import static android.view.MotionEvent.ACTION_DOWN; Loading Loading @@ -65,6 +64,7 @@ import android.view.accessibility.AccessibilityManager; import androidx.annotation.NonNull; import com.android.internal.accessibility.dialog.AccessibilityButtonChooserActivity; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.policy.ScreenDecorationsUtils; import com.android.internal.util.ScreenshotHelper; import com.android.systemui.Dumpable; Loading @@ -77,6 +77,7 @@ import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.pip.Pip; import com.android.systemui.pip.PipAnimationController; import com.android.systemui.pip.phone.PipUtils; import com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import com.android.systemui.settings.CurrentUserTracker; import com.android.systemui.shared.recents.IOverviewProxy; Loading Loading @@ -155,7 +156,8 @@ public class OverviewProxyService extends CurrentUserTracker implements private boolean mSupportsRoundedCornersOnWindows; private int mNavBarMode = NAV_BAR_MODE_3BUTTON; private ISystemUiProxy mSysUiProxy = new ISystemUiProxy.Stub() { @VisibleForTesting public ISystemUiProxy mSysUiProxy = new ISystemUiProxy.Stub() { @Override public void startScreenPinning(int taskId) { Loading Loading @@ -624,7 +626,7 @@ public class OverviewProxyService extends CurrentUserTracker implements super(broadcastDispatcher); mContext = context; mPipOptional = pipOptional; mHasPipFeature = mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); mHasPipFeature = PipUtils.hasSystemFeature(mContext); mStatusBarOptionalLazy = statusBarOptionalLazy; mHandler = new Handler(); mNavBarControllerLazy = navBarControllerLazy; Loading packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java +5 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.pip.Pip; import com.android.systemui.pip.phone.PipUtils; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.shared.tracing.ProtoTraceable; Loading @@ -57,7 +58,6 @@ import com.android.wm.shell.protolog.ShellProtoLogImpl; import com.android.wm.shell.splitscreen.SplitScreen; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.PrintWriter; import java.util.Arrays; import java.util.Optional; Loading Loading @@ -103,7 +103,6 @@ public final class WMShell extends SystemUI ProtoTracer protoTracer) { super(context); mCommandQueue = commandQueue; mCommandQueue.addCallback(this); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mActivityManagerWrapper = activityManagerWrapper; mDisplayImeController = displayImeController; Loading @@ -120,6 +119,7 @@ public final class WMShell extends SystemUI @Override public void start() { mCommandQueue.addCallback(this); // This is to prevent circular init problem by separating registration step out of its // constructor. And make sure the initialization of DisplayImeController won't depend on // specific feature anymore. Loading @@ -131,6 +131,9 @@ public final class WMShell extends SystemUI @VisibleForTesting void initPip(Pip pip) { if (!PipUtils.hasSystemFeature(mContext)) { return; } mCommandQueue.addCallback(new CommandQueue.Callbacks() { @Override public void showPictureInPictureMenu() { Loading Loading
packages/SystemUI/src/com/android/systemui/pip/PipTaskOrganizer.java +6 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,7 @@ 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.pip.phone.PipUtils; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; Loading Loading @@ -260,6 +261,11 @@ public class PipTaskOrganizer extends TaskOrganizer implements ShellTaskOrganize mSurfaceControlTransactionFactory = SurfaceControl.Transaction::new; mSplitScreenOptional = splitScreenOptional; mTaskOrganizer = shellTaskOrganizer; if (!PipUtils.hasSystemFeature(context)) { Log.w(TAG, "Device not support PIP feature"); return; } mTaskOrganizer.addListener(this, WINDOWING_MODE_PINNED); displayController.addDisplayWindowListener(this); } Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipController.java +1 −5 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.systemui.pip.phone; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static com.android.systemui.pip.PipAnimationController.isOutPipDirection; Loading @@ -30,7 +29,6 @@ import android.app.IActivityManager; import android.app.RemoteAction; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; import android.content.pm.ParceledListSlice; import android.content.res.Configuration; import android.graphics.Rect; Loading Loading @@ -278,9 +276,7 @@ public class PipController implements Pip, PipTaskOrganizer.PipTransitionCallbac mContext = context; mActivityManager = ActivityManager.getService(); PackageManager pm = context.getPackageManager(); boolean supportsPip = pm.hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); if (supportsPip) { if (PipUtils.hasSystemFeature(mContext)) { initController(context, broadcastDispatcher, configController, deviceConfig, displayController, floatingContentCoordinator, sysUiState, pipBoundsHandler, pipSurfaceTransactionHelper, pipTaskOrganizer, pipUiEventLogger); Loading
packages/SystemUI/src/com/android/systemui/pip/phone/PipUtils.java +11 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.pip.phone; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import android.app.ActivityTaskManager; import android.app.ActivityTaskManager.RootTaskInfo; Loading Loading @@ -57,4 +58,14 @@ public class PipUtils { } return new Pair<>(null, 0); } /** * The util to check if device has PIP feature * * @param context application context * @return true if device has PIP feature, false otherwise. */ public static boolean hasSystemFeature(Context context) { return context.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); } }
packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +5 −3 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.systemui.recents; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; import static android.view.MotionEvent.ACTION_CANCEL; import static android.view.MotionEvent.ACTION_DOWN; Loading Loading @@ -65,6 +64,7 @@ import android.view.accessibility.AccessibilityManager; import androidx.annotation.NonNull; import com.android.internal.accessibility.dialog.AccessibilityButtonChooserActivity; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.policy.ScreenDecorationsUtils; import com.android.internal.util.ScreenshotHelper; import com.android.systemui.Dumpable; Loading @@ -77,6 +77,7 @@ import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.pip.Pip; import com.android.systemui.pip.PipAnimationController; import com.android.systemui.pip.phone.PipUtils; import com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import com.android.systemui.settings.CurrentUserTracker; import com.android.systemui.shared.recents.IOverviewProxy; Loading Loading @@ -155,7 +156,8 @@ public class OverviewProxyService extends CurrentUserTracker implements private boolean mSupportsRoundedCornersOnWindows; private int mNavBarMode = NAV_BAR_MODE_3BUTTON; private ISystemUiProxy mSysUiProxy = new ISystemUiProxy.Stub() { @VisibleForTesting public ISystemUiProxy mSysUiProxy = new ISystemUiProxy.Stub() { @Override public void startScreenPinning(int taskId) { Loading Loading @@ -624,7 +626,7 @@ public class OverviewProxyService extends CurrentUserTracker implements super(broadcastDispatcher); mContext = context; mPipOptional = pipOptional; mHasPipFeature = mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); mHasPipFeature = PipUtils.hasSystemFeature(mContext); mStatusBarOptionalLazy = statusBarOptionalLazy; mHandler = new Handler(); mNavBarControllerLazy = navBarControllerLazy; Loading
packages/SystemUI/src/com/android/systemui/wmshell/WMShell.java +5 −2 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.pip.Pip; import com.android.systemui.pip.phone.PipUtils; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.shared.tracing.ProtoTraceable; Loading @@ -57,7 +58,6 @@ import com.android.wm.shell.protolog.ShellProtoLogImpl; import com.android.wm.shell.splitscreen.SplitScreen; import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.PrintWriter; import java.util.Arrays; import java.util.Optional; Loading Loading @@ -103,7 +103,6 @@ public final class WMShell extends SystemUI ProtoTracer protoTracer) { super(context); mCommandQueue = commandQueue; mCommandQueue.addCallback(this); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mActivityManagerWrapper = activityManagerWrapper; mDisplayImeController = displayImeController; Loading @@ -120,6 +119,7 @@ public final class WMShell extends SystemUI @Override public void start() { mCommandQueue.addCallback(this); // This is to prevent circular init problem by separating registration step out of its // constructor. And make sure the initialization of DisplayImeController won't depend on // specific feature anymore. Loading @@ -131,6 +131,9 @@ public final class WMShell extends SystemUI @VisibleForTesting void initPip(Pip pip) { if (!PipUtils.hasSystemFeature(mContext)) { return; } mCommandQueue.addCallback(new CommandQueue.Callbacks() { @Override public void showPictureInPictureMenu() { Loading