Loading services/core/java/com/android/server/inputmethod/InputMethodMenuController.java +0 −1 Original line number Diff line number Diff line Loading @@ -221,7 +221,6 @@ public class InputMethodMenuController { */ @VisibleForTesting public Context getSettingsContext(int displayId) { // TODO(b/178462039): Cover the case when IME is moved to another ImeContainer. if (mSettingsContext == null || mSettingsContext.getDisplayId() != displayId) { final Context systemUiContext = ActivityThread.currentActivityThread() .createSystemUiContext(displayId); Loading services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java +7 −3 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { doReturn(policyProvider).when(mWm).getDisplayAreaPolicyProvider(); // Display: 1920x1200 (landscape). First and second display are both 860x1200 (portrait). mDisplay = (DualDisplayContent) new DualDisplayContent.Builder(mAtm, 1920, 1200).build(); mDisplay = new DualDisplayContent.Builder(mAtm, 1920, 1200).build(); mFirstRoot = mDisplay.mFirstRoot; mSecondRoot = mDisplay.mSecondRoot; mFirstTda = mDisplay.getTaskDisplayArea(FEATURE_FIRST_TASK_CONTAINER); Loading Loading @@ -395,7 +395,7 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { } /** Display with two {@link DisplayAreaGroup}. Each of them take half of the screen. */ private static class DualDisplayContent extends TestDisplayContent { static class DualDisplayContent extends TestDisplayContent { final DisplayAreaGroup mFirstRoot; final DisplayAreaGroup mSecondRoot; final Rect mLastDisplayBounds; Loading Loading @@ -476,11 +476,15 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { TestDisplayContent createInternal(Display display) { return new DualDisplayContent(mService.mRootWindowContainer, display); } DualDisplayContent build() { return (DualDisplayContent) super.build(); } } } /** Policy to create a dual {@link DisplayAreaGroup} policy in test. */ private static class DualDisplayTestPolicyProvider implements DisplayAreaPolicy.Provider { static class DualDisplayTestPolicyProvider implements DisplayAreaPolicy.Provider { @Override public DisplayAreaPolicy instantiate(WindowManagerService wmService, DisplayContent content, Loading services/tests/wmtests/src/com/android/server/wm/InputMethodMenuControllerTest.java +25 −2 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.server.inputmethod.InputMethodMenuController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; // TODO(b/157888351): Move the test to inputmethod package once we find the way to test the // scenario there. Loading @@ -59,10 +60,15 @@ import org.junit.runner.RunWith; public class InputMethodMenuControllerTest extends WindowTestsBase { private InputMethodMenuController mController; private TestDisplayContent mSecondaryDisplay; private DualDisplayAreaGroupPolicyTest.DualDisplayContent mSecondaryDisplay; @Before public void setUp() throws Exception { // Let the Display to be created with the DualDisplay policy. final DisplayAreaPolicy.Provider policyProvider = new DualDisplayAreaGroupPolicyTest.DualDisplayTestPolicyProvider(); Mockito.doReturn(policyProvider).when(mWm).getDisplayAreaPolicyProvider(); mController = new InputMethodMenuController(mock(InputMethodManagerService.class)); // Mock addWindowTokenWithOptions to create a test window token. Loading @@ -80,7 +86,8 @@ public class InputMethodMenuControllerTest extends WindowTestsBase { }).when(wms).attachWindowContextToDisplayArea(any(), eq(TYPE_INPUT_METHOD_DIALOG), anyInt(), any()); mSecondaryDisplay = new TestDisplayContent.Builder(mAtm, 1000, 1000).build(); mSecondaryDisplay = new DualDisplayAreaGroupPolicyTest.DualDisplayContent .Builder(mAtm, 1000, 1000).build(); // Mock DisplayManagerGlobal to return test display when obtaining Display instance. final int displayId = mSecondaryDisplay.getDisplayId(); Loading @@ -105,6 +112,22 @@ public class InputMethodMenuControllerTest extends WindowTestsBase { assertImeSwitchContextMetricsValidity(contextOnSecondaryDisplay, mSecondaryDisplay); } @Test public void testGetSettingsContextOnDualDisplayContent() { final Context context = mController.getSettingsContext(mSecondaryDisplay.getDisplayId()); final DisplayArea.Tokens imeContainer = mSecondaryDisplay.getImeContainer(); assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mSecondaryDisplay); mSecondaryDisplay.mFirstRoot.placeImeContainer(imeContainer); assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mSecondaryDisplay.mFirstRoot); assertImeSwitchContextMetricsValidity(context, mSecondaryDisplay); mSecondaryDisplay.mSecondRoot.placeImeContainer(imeContainer); assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mSecondaryDisplay.mSecondRoot); assertImeSwitchContextMetricsValidity(context, mSecondaryDisplay); } private void assertImeSwitchContextMetricsValidity(Context context, DisplayContent dc) { assertThat(context.getDisplayId()).isEqualTo(dc.getDisplayId()); Loading Loading
services/core/java/com/android/server/inputmethod/InputMethodMenuController.java +0 −1 Original line number Diff line number Diff line Loading @@ -221,7 +221,6 @@ public class InputMethodMenuController { */ @VisibleForTesting public Context getSettingsContext(int displayId) { // TODO(b/178462039): Cover the case when IME is moved to another ImeContainer. if (mSettingsContext == null || mSettingsContext.getDisplayId() != displayId) { final Context systemUiContext = ActivityThread.currentActivityThread() .createSystemUiContext(displayId); Loading
services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java +7 −3 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { doReturn(policyProvider).when(mWm).getDisplayAreaPolicyProvider(); // Display: 1920x1200 (landscape). First and second display are both 860x1200 (portrait). mDisplay = (DualDisplayContent) new DualDisplayContent.Builder(mAtm, 1920, 1200).build(); mDisplay = new DualDisplayContent.Builder(mAtm, 1920, 1200).build(); mFirstRoot = mDisplay.mFirstRoot; mSecondRoot = mDisplay.mSecondRoot; mFirstTda = mDisplay.getTaskDisplayArea(FEATURE_FIRST_TASK_CONTAINER); Loading Loading @@ -395,7 +395,7 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { } /** Display with two {@link DisplayAreaGroup}. Each of them take half of the screen. */ private static class DualDisplayContent extends TestDisplayContent { static class DualDisplayContent extends TestDisplayContent { final DisplayAreaGroup mFirstRoot; final DisplayAreaGroup mSecondRoot; final Rect mLastDisplayBounds; Loading Loading @@ -476,11 +476,15 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { TestDisplayContent createInternal(Display display) { return new DualDisplayContent(mService.mRootWindowContainer, display); } DualDisplayContent build() { return (DualDisplayContent) super.build(); } } } /** Policy to create a dual {@link DisplayAreaGroup} policy in test. */ private static class DualDisplayTestPolicyProvider implements DisplayAreaPolicy.Provider { static class DualDisplayTestPolicyProvider implements DisplayAreaPolicy.Provider { @Override public DisplayAreaPolicy instantiate(WindowManagerService wmService, DisplayContent content, Loading
services/tests/wmtests/src/com/android/server/wm/InputMethodMenuControllerTest.java +25 −2 Original line number Diff line number Diff line Loading @@ -47,6 +47,7 @@ import com.android.server.inputmethod.InputMethodMenuController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; // TODO(b/157888351): Move the test to inputmethod package once we find the way to test the // scenario there. Loading @@ -59,10 +60,15 @@ import org.junit.runner.RunWith; public class InputMethodMenuControllerTest extends WindowTestsBase { private InputMethodMenuController mController; private TestDisplayContent mSecondaryDisplay; private DualDisplayAreaGroupPolicyTest.DualDisplayContent mSecondaryDisplay; @Before public void setUp() throws Exception { // Let the Display to be created with the DualDisplay policy. final DisplayAreaPolicy.Provider policyProvider = new DualDisplayAreaGroupPolicyTest.DualDisplayTestPolicyProvider(); Mockito.doReturn(policyProvider).when(mWm).getDisplayAreaPolicyProvider(); mController = new InputMethodMenuController(mock(InputMethodManagerService.class)); // Mock addWindowTokenWithOptions to create a test window token. Loading @@ -80,7 +86,8 @@ public class InputMethodMenuControllerTest extends WindowTestsBase { }).when(wms).attachWindowContextToDisplayArea(any(), eq(TYPE_INPUT_METHOD_DIALOG), anyInt(), any()); mSecondaryDisplay = new TestDisplayContent.Builder(mAtm, 1000, 1000).build(); mSecondaryDisplay = new DualDisplayAreaGroupPolicyTest.DualDisplayContent .Builder(mAtm, 1000, 1000).build(); // Mock DisplayManagerGlobal to return test display when obtaining Display instance. final int displayId = mSecondaryDisplay.getDisplayId(); Loading @@ -105,6 +112,22 @@ public class InputMethodMenuControllerTest extends WindowTestsBase { assertImeSwitchContextMetricsValidity(contextOnSecondaryDisplay, mSecondaryDisplay); } @Test public void testGetSettingsContextOnDualDisplayContent() { final Context context = mController.getSettingsContext(mSecondaryDisplay.getDisplayId()); final DisplayArea.Tokens imeContainer = mSecondaryDisplay.getImeContainer(); assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mSecondaryDisplay); mSecondaryDisplay.mFirstRoot.placeImeContainer(imeContainer); assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mSecondaryDisplay.mFirstRoot); assertImeSwitchContextMetricsValidity(context, mSecondaryDisplay); mSecondaryDisplay.mSecondRoot.placeImeContainer(imeContainer); assertThat(imeContainer.getRootDisplayArea()).isEqualTo(mSecondaryDisplay.mSecondRoot); assertImeSwitchContextMetricsValidity(context, mSecondaryDisplay); } private void assertImeSwitchContextMetricsValidity(Context context, DisplayContent dc) { assertThat(context.getDisplayId()).isEqualTo(dc.getDisplayId()); Loading