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

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

Merge "Use the secondary display for InputMethodMenuControllerTest"

parents 45315bc3 44409a0e
Loading
Loading
Loading
Loading
+41 −3
Original line number Diff line number Diff line
@@ -18,14 +18,28 @@ package com.android.server.wm;

import static android.view.Display.DEFAULT_DISPLAY;

import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.hardware.display.DisplayManagerGlobal;
import android.os.IBinder;
import android.platform.test.annotations.Presubmit;
import android.view.Display;
import android.view.IWindowManager;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;

import com.android.server.inputmethod.InputMethodManagerService;
import com.android.server.inputmethod.InputMethodMenuController;
@@ -45,10 +59,34 @@ import org.junit.runner.RunWith;
public class InputMethodMenuControllerTest extends WindowTestsBase {

    private InputMethodMenuController mController;
    private TestDisplayContent mSecondaryDisplay;

    @Before
    public void setUp() {
    public void setUp() throws Exception {
        mController = new InputMethodMenuController(mock(InputMethodManagerService.class));

        // Mock addWindowTokenWithOptions to create a test window token.
        IWindowManager wms = WindowManagerGlobal.getWindowManagerService();
        spyOn(wms);
        doAnswer(invocation -> {
            Object[] args = invocation.getArguments();
            final IBinder token = (IBinder) args[0];
            final int windowType = (int) args[1];
            new WindowToken(mWm, token, windowType, true /* persistOnEmpty */,
                    mDefaultDisplay, true /* ownerCanManageAppTokens */, 1000 /* ownerUid */,
                    false /* roundedCornerOverlay */, true /* fromClientToken */);
            return WindowManagerGlobal.ADD_OKAY;
        }).when(wms).addWindowTokenWithOptions(any(), anyInt(), anyInt(), any(), anyString());

        mSecondaryDisplay = new TestDisplayContent.Builder(mAtm, 1000, 1000).build();

        // Mock DisplayManagerGlobal to return test display when obtaining Display instance.
        final int displayId = mSecondaryDisplay.getDisplayId();
        final Display display = mSecondaryDisplay.getDisplay();
        DisplayManagerGlobal displayManagerGlobal = DisplayManagerGlobal.getInstance();
        spyOn(displayManagerGlobal);
        doReturn(display).when(displayManagerGlobal).getCompatibleDisplay(eq(displayId),
                (Resources) any());
    }

    @Test
@@ -60,9 +98,9 @@ public class InputMethodMenuControllerTest extends WindowTestsBase {
        // Obtain the context again and check they are the same instance and match the display
        // metrics of the secondary display.
        final Context contextOnSecondaryDisplay = mController.getSettingsContext(
                mDisplayContent.getDisplayId());
                mSecondaryDisplay.getDisplayId());

        assertImeSwitchContextMetricsValidity(contextOnSecondaryDisplay, mDisplayContent);
        assertImeSwitchContextMetricsValidity(contextOnSecondaryDisplay, mSecondaryDisplay);
        assertThat(contextOnDefaultDisplay.getWindowContextToken())
                .isEqualTo(contextOnSecondaryDisplay.getWindowContextToken());
    }