From d1ac18c7c9eca1b07120be598dc6859b188baeb3 Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Thu, 11 May 2017 07:59:41 -0700 Subject: [PATCH] Allow for SDK 26 Activities to specify orientation when not fullscreen. Change-Id: I9137a7ba7593dcd6031e1fcbcd6dcc0a287d707b Fixes: 38221413 Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsServicesHostTestCases android.server.cts.ActivityManagerAppConfigurationTests#testNonfullscreenAppOrientationRequests Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsServicesHostTestCases android.server.cts.ActivityManagerAppConfigurationTests#testLegacyNonFullscreenActivityPermitted --- core/java/android/app/Activity.java | 2 +- services/core/java/com/android/server/am/ActivityRecord.java | 2 +- services/core/java/com/android/server/wm/AppWindowToken.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index ad272b8b83b33..e4c63f742f17d 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -976,7 +976,7 @@ public class Activity extends ContextThemeWrapper protected void onCreate(@Nullable Bundle savedInstanceState) { if (DEBUG_LIFECYCLE) Slog.v(TAG, "onCreate " + this + ": " + savedInstanceState); - if (getApplicationInfo().targetSdkVersion >= O && mActivityInfo.isFixedOrientation()) { + if (getApplicationInfo().targetSdkVersion > O && mActivityInfo.isFixedOrientation()) { final TypedArray ta = obtainStyledAttributes(com.android.internal.R.styleable.Window); final boolean isTranslucentOrFloating = ActivityInfo.isTranslucentOrFloating(ta); ta.recycle(); diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java index 5c57be283793f..f13dad7f3ecce 100644 --- a/services/core/java/com/android/server/am/ActivityRecord.java +++ b/services/core/java/com/android/server/am/ActivityRecord.java @@ -2180,7 +2180,7 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo void setRequestedOrientation(int requestedOrientation) { if (ActivityInfo.isFixedOrientation(requestedOrientation) && !fullscreen - && appInfo.targetSdkVersion >= O) { + && appInfo.targetSdkVersion > O) { throw new IllegalStateException("Only fullscreen activities can request orientation"); } diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java index 982561c989fff..96ea5e5a3d0c0 100644 --- a/services/core/java/com/android/server/wm/AppWindowToken.java +++ b/services/core/java/com/android/server/wm/AppWindowToken.java @@ -1248,11 +1248,11 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree */ @Override int getOrientation(int candidate) { - // We do not allow non-fullscreen apps to influence orientation at and beyond O. While we do + // We do not allow non-fullscreen apps to influence orientation beyond O. While we do // throw an exception in {@link Activity#onCreate} and // {@link Activity#setRequestedOrientation}, we also ignore the orientation here so that // other calculations aren't affected. - if (!fillsParent() && mTargetSdk >= O) { + if (!fillsParent() && mTargetSdk > O) { // Can't specify orientation if app doesn't fill parent. return SCREEN_ORIENTATION_UNSET; }