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

Commit c416376c authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Separate fillsParent from deciding orientation" into tm-dev

parents 839756e6 fb7fd8ed
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -670,9 +670,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
     * from the style of activity. Because we don't want {@link WindowContainer#getOrientation()}
     * to be affected by the temporal state of {@link ActivityClientController#convertToTranslucent}
     * when running ANIM_SCENE_TRANSITION.
     * @see WindowContainer#fillsParent()
     * @see WindowContainer#providesOrientation()
     */
    private final boolean mFillsParent;
    private final boolean mStyleFillsParent;

    // The input dispatching timeout for this application token in milliseconds.
    long mInputDispatchingTimeoutMillis = DEFAULT_DISPATCHING_TIMEOUT_MILLIS;
@@ -1971,10 +1971,10 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
                    // This style is propagated to the main window attributes with
                    // FLAG_SHOW_WALLPAPER from PhoneWindow#generateLayout.
                    || ent.array.getBoolean(R.styleable.Window_windowShowWallpaper, false);
            mFillsParent = mOccludesParent;
            mStyleFillsParent = mOccludesParent;
            noDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false);
        } else {
            mFillsParent = mOccludesParent = true;
            mStyleFillsParent = mOccludesParent = true;
            noDisplay = false;
        }

@@ -2879,9 +2879,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
        return (TaskDisplayArea) super.getDisplayArea();
    }

    @Override
    boolean providesOrientation() {
        return mStyleFillsParent;
    }

    @Override
    boolean fillsParent() {
        return mFillsParent;
        return occludesParent(true /* includingFinishing */);
    }

    /** Returns true if this activity is not finishing, is opaque and fills the entire space of
+1 −1
Original line number Diff line number Diff line
@@ -172,7 +172,7 @@ class PinnedTaskController {
     */
    void deferOrientationChangeForEnteringPipFromFullScreenIfNeeded() {
        final ActivityRecord topFullscreen = mDisplayContent.getActivity(
                a -> a.fillsParent() && !a.getTask().inMultiWindowMode());
                a -> a.providesOrientation() && !a.getTask().inMultiWindowMode());
        if (topFullscreen == null || topFullscreen.hasFixedRotationTransform()) {
            return;
        }
+7 −4
Original line number Diff line number Diff line
@@ -1495,8 +1495,7 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
     */
    int getOrientation(int candidate) {
        mLastOrientationSource = null;
        if (!fillsParent()) {
            // Ignore containers that don't completely fill their parents.
        if (!providesOrientation()) {
            return SCREEN_ORIENTATION_UNSET;
        }

@@ -1530,8 +1529,8 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
                continue;
            }

            if (wc.fillsParent() || orientation != SCREEN_ORIENTATION_UNSPECIFIED) {
                // Use the orientation if the container fills its parent or requested an explicit
            if (wc.providesOrientation() || orientation != SCREEN_ORIENTATION_UNSPECIFIED) {
                // Use the orientation if the container can provide or requested an explicit
                // orientation that isn't SCREEN_ORIENTATION_UNSPECIFIED.
                ProtoLog.v(WM_DEBUG_ORIENTATION, "%s is requesting orientation %d (%s)",
                        wc.toString(), orientation,
@@ -1560,6 +1559,10 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
        return source;
    }

    boolean providesOrientation() {
        return fillsParent();
    }

    /**
     * Returns true if this container is opaque and fills all the space made available by its parent
     * container.
+2 −2
Original line number Diff line number Diff line
@@ -756,8 +756,8 @@ public class ActivityRecordTests extends WindowTestsBase {
        final ActivityRecord activity = createActivityWithTask();
        ActivityRecord topActivity = new ActivityBuilder(mAtm).setTask(activity.getTask()).build();
        topActivity.setOccludesParent(false);
        // The requested occluding state doesn't affect whether it fills parent.
        assertTrue(topActivity.fillsParent());
        // The requested occluding state doesn't affect whether it can decide orientation.
        assertTrue(topActivity.providesOrientation());
        activity.setState(STOPPED, "Testing");
        activity.setVisibility(true);
        activity.makeActiveIfNeeded(null /* activeActivity */);