Loading services/tests/wmtests/src/com/android/server/wm/InputMethodMenuControllerTest.java +41 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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()); } Loading Loading
services/tests/wmtests/src/com/android/server/wm/InputMethodMenuControllerTest.java +41 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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()); } Loading