Loading core/java/android/widget/SelectionActionModeHelper.java +5 −5 Original line number Diff line number Diff line Loading @@ -297,12 +297,12 @@ public final class SelectionActionModeHelper { } else { mTextClassification = null; } if (mEditor.startActionModeInternal(actionMode)) { final SelectionModifierCursorController controller = mEditor.getSelectionController(); if (controller != null && (mTextView.isTextSelectable() || mTextView.isTextEditable())) { controller.show(); } if (mEditor.startActionModeInternal(actionMode)) { if (result != null) { switch (actionMode) { case Editor.TextActionMode.SELECTION: Loading core/tests/coretests/src/android/widget/TextViewActivityTest.java +36 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.widget; import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates; import static android.widget.espresso.DragHandleUtils.assertNoSelectionHandles; import static android.widget.espresso.DragHandleUtils.onHandleView; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem; Loading Loading @@ -425,6 +426,41 @@ public class TextViewActivityTest { assertEquals(latestItem[0], clickedItem[0]); } @Test public void testSelectionOnCreateActionModeReturnsFalse() throws Throwable { final String text = "hello world"; mActivityRule.runOnUiThread(() -> { final TextView textView = mActivity.findViewById(R.id.textview); textView.setText(text); textView.setCustomSelectionActionModeCallback( new ActionMode.Callback() { @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } @Override public void onDestroyActionMode(ActionMode mode) { } }); }); mInstrumentation.waitForIdleSync(); onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf("d"))); mInstrumentation.waitForIdleSync(); assertNoSelectionHandles(); } @Test public void testSelectionRemovedWhenNonselectableTextLosesFocus() throws Throwable { final TextLinks.TextLink textLink = addLinkifiedTextToTextView(R.id.nonselectable_textview); Loading Loading
core/java/android/widget/SelectionActionModeHelper.java +5 −5 Original line number Diff line number Diff line Loading @@ -297,12 +297,12 @@ public final class SelectionActionModeHelper { } else { mTextClassification = null; } if (mEditor.startActionModeInternal(actionMode)) { final SelectionModifierCursorController controller = mEditor.getSelectionController(); if (controller != null && (mTextView.isTextSelectable() || mTextView.isTextEditable())) { controller.show(); } if (mEditor.startActionModeInternal(actionMode)) { if (result != null) { switch (actionMode) { case Editor.TextActionMode.SELECTION: Loading
core/tests/coretests/src/android/widget/TextViewActivityTest.java +36 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.widget; import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates; import static android.widget.espresso.DragHandleUtils.assertNoSelectionHandles; import static android.widget.espresso.DragHandleUtils.onHandleView; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem; Loading Loading @@ -425,6 +426,41 @@ public class TextViewActivityTest { assertEquals(latestItem[0], clickedItem[0]); } @Test public void testSelectionOnCreateActionModeReturnsFalse() throws Throwable { final String text = "hello world"; mActivityRule.runOnUiThread(() -> { final TextView textView = mActivity.findViewById(R.id.textview); textView.setText(text); textView.setCustomSelectionActionModeCallback( new ActionMode.Callback() { @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { return false; } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { return false; } @Override public void onDestroyActionMode(ActionMode mode) { } }); }); mInstrumentation.waitForIdleSync(); onView(withId(R.id.textview)).perform(longPressOnTextAtIndex(text.indexOf("d"))); mInstrumentation.waitForIdleSync(); assertNoSelectionHandles(); } @Test public void testSelectionRemovedWhenNonselectableTextLosesFocus() throws Throwable { final TextLinks.TextLink textLink = addLinkifiedTextToTextView(R.id.nonselectable_textview); Loading