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

Commit b578d9ce authored by Merissa Mitchell's avatar Merissa Mitchell Committed by Android (Google) Code Review
Browse files

Merge "[PiP on CD] Adjust dismiss target and PiP menu sizes" into main

parents d72315e1 d9d26387
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -26,11 +26,14 @@ import android.graphics.Insets;
import android.graphics.Point;
import android.graphics.Rect;
import android.util.Size;
import android.view.Display;
import android.view.Surface;
import android.view.WindowManager;

import androidx.annotation.NonNull;

import com.android.wm.shell.R;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayLayout;
import com.android.wm.shell.dagger.WMSingleton;

@@ -48,13 +51,15 @@ public class PipDisplayLayoutState {
    private Context mContext;
    private int mDisplayId;
    @NonNull private DisplayLayout mDisplayLayout;
    @NonNull private final DisplayController mDisplayController;
    private Point mScreenEdgeInsets = null;
    private Insets mNavigationBarsInsets = Insets.NONE;

    @Inject
    public PipDisplayLayoutState(Context context) {
    public PipDisplayLayoutState(Context context, @NonNull DisplayController displayController) {
        mContext = context;
        mDisplayLayout = new DisplayLayout();
        mDisplayController = displayController;
        reloadResources();
    }

@@ -138,6 +143,13 @@ public class PipDisplayLayoutState {
        mDisplayId = displayId;
    }

    /** Returns the context associated with the current display. */
    public Context getCurrentUiContext() {
        Display display = mDisplayController.getDisplay(mDisplayId);
        return mContext.createWindowContext(display,
                WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL, /* options= */null);
    }

    /** Set the navigationBars side and widthOrHeight. */
    public void setNavigationBarsInsets(Insets insets) {
        mNavigationBarsInsets = insets;
+3 −2
Original line number Diff line number Diff line
@@ -196,7 +196,8 @@ public class PhonePipMenuController implements PipMenuController,
        if (mPipMenuView != null) {
            detachPipMenuView();
        }
        mPipMenuView = new PipMenuView(mContext, this, mMainExecutor, mMainHandler,
        final Context uiContext = mPipDisplayLayoutState.getCurrentUiContext();
        mPipMenuView = new PipMenuView(uiContext, this, mMainExecutor, mMainHandler,
                mPipUiEventLogger);
        mPipMenuView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
            @Override
@@ -229,7 +230,7 @@ public class PhonePipMenuController implements PipMenuController,
        });

        mSystemWindows.addView(mPipMenuView,
                getPipMenuLayoutParams(mContext, MENU_WINDOW_TITLE, 0 /* width */, 0 /* height */),
                getPipMenuLayoutParams(uiContext, MENU_WINDOW_TITLE, 0 /* width */, 0 /* height */),
                mPipDisplayLayoutState.getDisplayId(), SHELL_ROOT_LAYER_PIP);
        setShellRootAccessibilityWindow();

+6 −5
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import android.content.res.Resources;
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.Display;
import android.view.MotionEvent;
import android.view.SurfaceControl;
import android.view.View;
@@ -87,7 +86,7 @@ public class PipDismissTargetHandler implements ViewTreeObserver.OnPreDrawListen
    private SurfaceControl mTaskLeash;
    private boolean mHasDismissTargetSurface;

    private final Context mContext;
    private Context mContext;
    private final PipMotionHelper mMotionHelper;
    private final PipUiEventLogger mPipUiEventLogger;
    private WindowManager mWindowManager;
@@ -331,8 +330,10 @@ public class PipDismissTargetHandler implements ViewTreeObserver.OnPreDrawListen
            return;
        }
        mWindowManagerDisplayId = pipDisplayId;
        Display display = mDisplayController.getDisplay(mWindowManagerDisplayId);
        Context uiContext = mContext.createWindowContext(display, WINDOW_TYPE, null);
        mWindowManager = uiContext.getSystemService(WindowManager.class);
        mContext = mPipDisplayLayoutState.getCurrentUiContext();
        mWindowManager = mContext.getSystemService(WindowManager.class);
        // TODO(b/414864788): Utilize display-id change callback for updating UI
        // If the displayId has changed, reset the UI for the current display
        init();
    }
}
+3 −1
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.view.DisplayInfo;

import com.android.wm.shell.R;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayLayout;

import org.junit.Assert;
@@ -73,6 +74,7 @@ public class PhoneSizeSpecSourceTest extends ShellTestCase {
    private static Map<Float, Size> sSquareDisplayExpectedMinSizes;

    @Mock private Context mContext;
    @Mock private DisplayController mDisplayController;
    @Mock private Resources mResources;

    private PipDisplayLayoutState mPipDisplayLayoutState;
@@ -179,7 +181,7 @@ public class PhoneSizeSpecSourceTest extends ShellTestCase {
        // this is done to avoid unnecessary mocking while allowing for custom display dimensions
        DisplayLayout displayLayout = new DisplayLayout(displayInfo, getContext().getResources(),
                false, false);
        mPipDisplayLayoutState = new PipDisplayLayoutState(mContext);
        mPipDisplayLayoutState = new PipDisplayLayoutState(mContext, mDisplayController);
        mPipDisplayLayoutState.setDisplayLayout(displayLayout);

        mSizeSpecSource = new PhoneSizeSpecSource(mContext, mPipDisplayLayoutState);
+4 −1
Original line number Diff line number Diff line
@@ -31,11 +31,13 @@ import androidx.test.filters.SmallTest;

import com.android.wm.shell.R;
import com.android.wm.shell.ShellTestCase;
import com.android.wm.shell.common.DisplayController;
import com.android.wm.shell.common.DisplayLayout;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;

/**
 * Unit tests against {@link PipBoundsAlgorithm}, including but not limited to:
@@ -62,12 +64,13 @@ public class PipBoundsAlgorithmTest extends ShellTestCase {
    private PipBoundsState mPipBoundsState;
    private SizeSpecSource mSizeSpecSource;
    private PipDisplayLayoutState mPipDisplayLayoutState;
    @Mock private DisplayController mDisplayController;


    @Before
    public void setUp() throws Exception {
        initializeMockResources();
        mPipDisplayLayoutState = new PipDisplayLayoutState(mContext);
        mPipDisplayLayoutState = new PipDisplayLayoutState(mContext, mDisplayController);

        mSizeSpecSource = new PhoneSizeSpecSource(mContext, mPipDisplayLayoutState);
        mPipBoundsState = new PipBoundsState(mContext, mSizeSpecSource, mPipDisplayLayoutState);
Loading