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

Commit 27c8d246 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix mis-overridden of activity level unifying"

parents 143000b2 6b76cd3c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1735,13 +1735,13 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree
    }

    /** @return {@code true} if the compatibility bounds is taking effect. */
    boolean inSizeCompatMode() {
    boolean hasSizeCompatBounds() {
        return mSizeCompatBounds != null;
    }

    @Override
    float getSizeCompatScale() {
        return inSizeCompatMode() ? mSizeCompatScale : super.getSizeCompatScale();
        return hasSizeCompatBounds() ? mSizeCompatScale : super.getSizeCompatScale();
    }

    @Override
+9 −4
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ import java.util.function.Predicate;
 * particular Display.
 */
class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowContainer>
        implements WindowManagerPolicy.DisplayContentInfo {
        implements WindowManagerPolicy.DisplayContentInfo, ConfigurationContainerListener {
    private static final String TAG = TAG_WITH_CLASS_NAME ? "DisplayContent" : TAG_WM;

    /** The default scaling mode that scales content automatically. */
@@ -1136,10 +1136,12 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
     * values from being replaced by the initializing {@link #ActivityDisplay}.
     */
    void initializeDisplayOverrideConfiguration() {
        if (mActivityDisplay != null) {
            mActivityDisplay.getRequestedOverrideConfiguration()
                    .updateFrom(getRequestedOverrideConfiguration());
        if (mActivityDisplay == null) {
            return;
        }
        mActivityDisplay.onRequestedOverrideConfigurationChanged(
                getResolvedOverrideConfiguration());
        mActivityDisplay.registerConfigurationChangeListener(this);
    }

    void reconfigureDisplayLocked() {
@@ -2373,6 +2375,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
    void removeImmediately() {
        mRemovingDisplay = true;
        try {
            if (mActivityDisplay != null) {
                mActivityDisplay.unregisterConfigurationChangeListener(this);
            }
            if (mParentWindow != null) {
                mParentWindow.removeEmbeddedDisplayContent(this);
            }
+6 −19
Original line number Diff line number Diff line
@@ -20,12 +20,8 @@ import static android.app.ActivityTaskManager.RESIZE_MODE_SYSTEM_SCREEN_ROTATION
import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_LANDSCAPE_ONLY;
import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PORTRAIT_ONLY;
import static android.content.pm.ActivityInfo.RESIZE_MODE_FORCE_RESIZABLE_PRESERVE_ORIENTATION;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
import static android.content.res.Configuration.EMPTY;
import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
import static android.view.SurfaceControl.METADATA_TASK_ID;

import static com.android.server.EventLogTags.WM_TASK_REMOVED;
@@ -139,26 +135,17 @@ class Task extends WindowContainer<AppWindowToken> implements ConfigurationConta
        mResizeMode = resizeMode;
        mSupportsPictureInPicture = supportsPictureInPicture;
        mTaskRecord = taskRecord;
        mTaskDescription = taskDescription;

        // Tasks have no set orientation value (including SCREEN_ORIENTATION_UNSPECIFIED).
        setOrientation(SCREEN_ORIENTATION_UNSET);
        if (mTaskRecord != null) {
            // This can be null when we call createTaskInStack in WindowTestUtils. Remove this after
            // unification.
            mTaskRecord.registerConfigurationChangeListener(this);
        }
        } else {
            setBounds(getResolvedOverrideBounds());
        mTaskDescription = taskDescription;

        // Tasks have no set orientation value (including SCREEN_ORIENTATION_UNSPECIFIED) not unless
        // set through the override configuration.
        int orientation = SCREEN_ORIENTATION_UNSET;
        switch (getResolvedOverrideConfiguration().orientation) {
            case ORIENTATION_PORTRAIT:
                orientation = SCREEN_ORIENTATION_PORTRAIT;
                break;
            case ORIENTATION_LANDSCAPE:
                orientation = SCREEN_ORIENTATION_LANDSCAPE;
                break;
        }
        setOrientation(orientation);
        }
    }

    @Override
+2 −2
Original line number Diff line number Diff line
@@ -836,7 +836,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
     */
    boolean inSizeCompatMode() {
        return (mAttrs.privateFlags & PRIVATE_FLAG_COMPATIBLE_WINDOW) != 0
                || (mAppToken != null && mAppToken.inSizeCompatMode()
                || (mAppToken != null && mAppToken.hasSizeCompatBounds()
                        // Exclude starting window because it is not displayed by the application.
                        && mAttrs.type != TYPE_APPLICATION_STARTING);
    }
@@ -2320,7 +2320,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
            }
            // The offset of compatibility bounds is applied to surface of {@link #AppWindowToken}
            // and frame, so it is unnecessary to translate twice in surface based coordinates.
            final int surfaceOffsetX = mAppToken.inSizeCompatMode()
            final int surfaceOffsetX = mAppToken.hasSizeCompatBounds()
                    ? mAppToken.getBounds().left : 0;
            mTmpRect.offset(surfaceOffsetX - mWindowFrames.mFrame.left, -mWindowFrames.mFrame.top);
            region.set(mTmpRect);
+3 −3
Original line number Diff line number Diff line
@@ -221,7 +221,7 @@ public class AppWindowTokenTests extends WindowTestsBase {
        containerBounds.set(0, 0, 600, 800);
        mToken.onConfigurationChanged(newParentConfig);

        assertTrue(mToken.inSizeCompatMode());
        assertTrue(mToken.hasSizeCompatBounds());
        assertEquals(containerAppBounds, mToken.getBounds());
        assertEquals((float) containerAppBounds.width() / fixedBounds.width(),
                mToken.getSizeCompatScale(), 0.0001f /* delta */);
@@ -231,7 +231,7 @@ public class AppWindowTokenTests extends WindowTestsBase {
        containerBounds.set(containerAppBounds);
        mToken.onConfigurationChanged(newParentConfig);

        assertTrue(mToken.inSizeCompatMode());
        assertTrue(mToken.hasSizeCompatBounds());
        // Don't scale up, so the bounds keep the same as the fixed width.
        assertEquals(fixedBounds.width(), mToken.getBounds().width());
        // Assert the position is horizontal center.
@@ -243,7 +243,7 @@ public class AppWindowTokenTests extends WindowTestsBase {
        containerBounds.set(0, 0, 1200, 2000);
        mToken.onConfigurationChanged(newParentConfig);
        // Assert don't use fixed bounds because the region is enough.
        assertFalse(mToken.inSizeCompatMode());
        assertFalse(mToken.hasSizeCompatBounds());
    }

    @Test