Merge "Fix the empty selection issue when onCreateActionMode returns false" am: 78abed41f6

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1980526

Change-Id: I95d9fac032b7503d7f9401405bffdfcb50af3a3c
This commit is contained in:
Treehugger Robot
2022-02-11 19:25:25 +00:00
committed by Automerger Merge Worker
2 changed files with 41 additions and 5 deletions

View File

@@ -297,12 +297,12 @@ public final class SelectionActionModeHelper {
} else { } else {
mTextClassification = null; mTextClassification = null;
} }
if (mEditor.startActionModeInternal(actionMode)) {
final SelectionModifierCursorController controller = mEditor.getSelectionController(); final SelectionModifierCursorController controller = mEditor.getSelectionController();
if (controller != null if (controller != null
&& (mTextView.isTextSelectable() || mTextView.isTextEditable())) { && (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
controller.show(); controller.show();
} }
if (mEditor.startActionModeInternal(actionMode)) {
if (result != null) { if (result != null) {
switch (actionMode) { switch (actionMode) {
case Editor.TextActionMode.SELECTION: case Editor.TextActionMode.SELECTION:

View File

@@ -17,6 +17,7 @@
package android.widget; package android.widget;
import static android.widget.espresso.CustomViewActions.longPressAtRelativeCoordinates; 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.DragHandleUtils.onHandleView;
import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarContainsItem;
import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem; import static android.widget.espresso.FloatingToolbarEspressoUtils.assertFloatingToolbarDoesNotContainItem;
@@ -425,6 +426,41 @@ public class TextViewActivityTest {
assertEquals(latestItem[0], clickedItem[0]); 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 @Test
public void testSelectionRemovedWhenNonselectableTextLosesFocus() throws Throwable { public void testSelectionRemovedWhenNonselectableTextLosesFocus() throws Throwable {
final TextLinks.TextLink textLink = addLinkifiedTextToTextView(R.id.nonselectable_textview); final TextLinks.TextLink textLink = addLinkifiedTextToTextView(R.id.nonselectable_textview);