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

Commit b3d7ef6d authored by Tony Huang's avatar Tony Huang
Browse files

Update split context when display size changed

Because SnapAlgorithm use many resources value and it will be
affected by density, we should update context and
mDividerSnapAlgorithm too when configuration density changed.

Fix: 250483334
Test: manaul
Test: atest SplitLayoutTests
Change-Id: I207a025503c032318ede707eed786ae83b60e658
parent 26ed84b7
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -118,6 +118,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
    private boolean mFreezeDividerWindow = false;
    private int mOrientation;
    private int mRotation;
    private int mDensity;

    private final boolean mDimNonImeSide;

@@ -290,9 +291,11 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
        final int rotation = configuration.windowConfiguration.getRotation();
        final Rect rootBounds = configuration.windowConfiguration.getBounds();
        final int orientation = configuration.orientation;
        final int density = configuration.densityDpi;

        if (mOrientation == orientation
                && mRotation == rotation
                && mDensity == density
                && mRootBounds.equals(rootBounds)) {
            return false;
        }
@@ -303,6 +306,7 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
        mTempRect.set(mRootBounds);
        mRootBounds.set(rootBounds);
        mRotation = rotation;
        mDensity = density;
        mDividerSnapAlgorithm = getSnapAlgorithm(mContext, mRootBounds, null);
        initDividerPosition(mTempRect);
        updateInvisibleRect();
+9 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.wm.shell.common.split;

import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
import static android.content.res.Configuration.ORIENTATION_PORTRAIT;

import static com.google.common.truth.Truth.assertThat;
@@ -91,6 +92,14 @@ public class SplitLayoutTests extends ShellTestCase {
        // Verify updateConfiguration returns true if the root bounds changed.
        config.windowConfiguration.setBounds(new Rect(0, 0, 2160, 1080));
        assertThat(mSplitLayout.updateConfiguration(config)).isTrue();

        // Verify updateConfiguration returns true if the orientation changed.
        config.orientation = ORIENTATION_LANDSCAPE;
        assertThat(mSplitLayout.updateConfiguration(config)).isTrue();

        // Verify updateConfiguration returns true if the density changed.
        config.densityDpi = 123;
        assertThat(mSplitLayout.updateConfiguration(config)).isTrue();
    }

    @Test