diff options
author | Taran Singh <tarandeep@google.com> | 2020-04-27 17:08:05 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-04-27 17:08:05 +0000 |
commit | 88191952ece34be76fdcf1255e70c5b88a6b8098 (patch) | |
tree | 365b074068eab626d016e5fe79c9bd035510b8d6 | |
parent | 2133dc6e7361289f355fae60c403d4f3f49a53d9 (diff) | |
parent | 8321a2a48dd63124dd1e418c9d730ef9bab0d62a (diff) |
Merge "Add test for ImeInsetsSourceConsumer" into rvc-dev
-rw-r--r-- | core/java/android/view/InsetsController.java | 3 | ||||
-rw-r--r-- | core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java | 35 |
2 files changed, 32 insertions, 6 deletions
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index 43c7bede38c2..f135328c44fe 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -1002,7 +1002,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } } - private void applyAnimation(@InsetsType final int types, boolean show, boolean fromIme) { + @VisibleForTesting + public void applyAnimation(@InsetsType final int types, boolean show, boolean fromIme) { if (types == 0) { // nothing to animate. return; diff --git a/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java b/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java index 54fd00d22706..5c9e3397c6a5 100644 --- a/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java +++ b/core/tests/coretests/src/android/view/ImeInsetsSourceConsumerTest.java @@ -23,13 +23,16 @@ import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + import android.content.Context; import android.graphics.Insets; import android.graphics.Point; import android.graphics.Rect; import android.os.Bundle; import android.platform.test.annotations.Presubmit; -import android.view.SurfaceControl.Transaction; import android.view.WindowManager.BadTokenException; import android.view.WindowManager.LayoutParams; import android.view.inputmethod.EditorInfo; @@ -42,6 +45,8 @@ import androidx.test.platform.app.InstrumentationRegistry; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.mockito.Spy; import java.util.ArrayList; @@ -58,7 +63,7 @@ public class ImeInsetsSourceConsumerTest { Context mContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); ImeInsetsSourceConsumer mImeConsumer; - InsetsController mController; + @Spy InsetsController mController; SurfaceControl mLeash; @Before @@ -73,7 +78,7 @@ public class ImeInsetsSourceConsumerTest { } catch (BadTokenException e) { // activity isn't running, we will ignore BadTokenException. } - mController = new InsetsController(viewRootImpl); + mController = Mockito.spy(new InsetsController(viewRootImpl)); final Rect rect = new Rect(5, 5, 5, 5); mController.calculateInsets( false, @@ -81,8 +86,7 @@ public class ImeInsetsSourceConsumerTest { new DisplayCutout( Insets.of(10, 10, 10, 10), rect, rect, rect, rect), SOFT_INPUT_ADJUST_RESIZE, 0); - mImeConsumer = new ImeInsetsSourceConsumer( - new InsetsState(), Transaction::new, mController); + mImeConsumer = (ImeInsetsSourceConsumer) mController.getSourceConsumer(ITYPE_IME); }); } @@ -106,6 +110,27 @@ public class ImeInsetsSourceConsumerTest { } @Test + public void testImeRequestedVisibleAwaitingControl() { + // Set null control and then request show. + mController.onControlsChanged(new InsetsSourceControl[] { null }); + + InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> { + // Request IME visible before control is available. + mImeConsumer.onWindowFocusGained(); + mImeConsumer.applyImeVisibility(true /* setVisible */); + + // set control and verify visibility is applied. + InsetsSourceControl control = new InsetsSourceControl(ITYPE_IME, mLeash, new Point()); + mController.onControlsChanged(new InsetsSourceControl[] { control }); + // IME show animation should be triggered when control becomes available. + verify(mController).applyAnimation( + eq(WindowInsets.Type.ime()), eq(true) /* show */, eq(true) /* fromIme */); + verify(mController, never()).applyAnimation( + eq(WindowInsets.Type.ime()), eq(false) /* show */, eq(true) /* fromIme */); + }); + } + + @Test public void testAreEditorsSimilar() { EditorInfo info1 = new EditorInfo(); info1.privateImeOptions = "dummy"; |