Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1ac18c7 authored by Bryce Lee's avatar Bryce Lee
Browse files

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
parent 9684d718
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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();
+1 −1
Original line number Diff line number Diff line
@@ -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");
        }

+2 −2
Original line number Diff line number Diff line
@@ -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;
        }