Loading services/core/java/com/android/server/wm/SafeActivityOptions.java +12 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.Manifest.permission.STATUS_BAR_SERVICE; import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.activityTypeToString; import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; Loading Loading @@ -318,6 +319,17 @@ public class SafeActivityOptions { throw new SecurityException(msg); } // setLaunchWindowingMode(PINNED) is not allowed, use ActivityOptions#makeLaunchIntoPip // instead which is a public API. if (options.getLaunchWindowingMode() == WINDOWING_MODE_PINNED) { final String msg = "Permission Denial: starting " + getIntentString(intent) + " from " + callerApp + " (pid=" + callingPid + ", uid=" + callingUid + ") with" + " setLaunchWindowingMode=PINNED"; Slog.w(TAG, msg); throw new SecurityException(msg); } final int activityType = options.getLaunchActivityType(); if (activityType != ACTIVITY_TYPE_UNDEFINED && !isSystemOrSystemUI(callingPid, callingUid)) { Loading services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +0 −36 Original line number Diff line number Diff line Loading @@ -584,42 +584,6 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { WINDOWING_MODE_FULLSCREEN); } @Test public void testKeepsPictureInPictureLaunchModeInOptions() { final TestDisplayContent freeformDisplay = createNewDisplayContent( WINDOWING_MODE_FREEFORM); final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchWindowingMode(WINDOWING_MODE_PINNED); mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_PINNED, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); } @Test public void testKeepsPictureInPictureLaunchModeWithBoundsInOptions() { final TestDisplayContent freeformDisplay = createNewDisplayContent( WINDOWING_MODE_FREEFORM); final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchWindowingMode(WINDOWING_MODE_PINNED); options.setLaunchBounds(new Rect(0, 0, 100, 100)); mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_PINNED, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); } @Test public void testKeepsFullscreenLaunchModeInOptionsOnNonFreeformDisplay() { final ActivityOptions options = ActivityOptions.makeBasic(); Loading Loading
services/core/java/com/android/server/wm/SafeActivityOptions.java +12 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static android.Manifest.permission.STATUS_BAR_SERVICE; import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.activityTypeToString; import static android.content.pm.PackageManager.PERMISSION_DENIED; import static android.content.pm.PackageManager.PERMISSION_GRANTED; Loading Loading @@ -318,6 +319,17 @@ public class SafeActivityOptions { throw new SecurityException(msg); } // setLaunchWindowingMode(PINNED) is not allowed, use ActivityOptions#makeLaunchIntoPip // instead which is a public API. if (options.getLaunchWindowingMode() == WINDOWING_MODE_PINNED) { final String msg = "Permission Denial: starting " + getIntentString(intent) + " from " + callerApp + " (pid=" + callingPid + ", uid=" + callingUid + ") with" + " setLaunchWindowingMode=PINNED"; Slog.w(TAG, msg); throw new SecurityException(msg); } final int activityType = options.getLaunchActivityType(); if (activityType != ACTIVITY_TYPE_UNDEFINED && !isSystemOrSystemUI(callingPid, callingUid)) { Loading
services/tests/wmtests/src/com/android/server/wm/TaskLaunchParamsModifierTests.java +0 −36 Original line number Diff line number Diff line Loading @@ -584,42 +584,6 @@ public class TaskLaunchParamsModifierTests extends WindowTestsBase { WINDOWING_MODE_FULLSCREEN); } @Test public void testKeepsPictureInPictureLaunchModeInOptions() { final TestDisplayContent freeformDisplay = createNewDisplayContent( WINDOWING_MODE_FREEFORM); final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchWindowingMode(WINDOWING_MODE_PINNED); mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_PINNED, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); } @Test public void testKeepsPictureInPictureLaunchModeWithBoundsInOptions() { final TestDisplayContent freeformDisplay = createNewDisplayContent( WINDOWING_MODE_FREEFORM); final ActivityOptions options = ActivityOptions.makeBasic(); options.setLaunchWindowingMode(WINDOWING_MODE_PINNED); options.setLaunchBounds(new Rect(0, 0, 100, 100)); mCurrent.mPreferredTaskDisplayArea = freeformDisplay.getDefaultTaskDisplayArea(); assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setOptions(options).calculate()); assertEquivalentWindowingMode(WINDOWING_MODE_PINNED, mResult.mWindowingMode, WINDOWING_MODE_FREEFORM); } @Test public void testKeepsFullscreenLaunchModeInOptionsOnNonFreeformDisplay() { final ActivityOptions options = ActivityOptions.makeBasic(); Loading