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 {
mTextClassification = null;
}
final SelectionModifierCursorController controller = mEditor.getSelectionController();
if (controller != null
&& (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
controller.show();
}
if (mEditor.startActionModeInternal(actionMode)) {
final SelectionModifierCursorController controller = mEditor.getSelectionController();
if (controller != null
&& (mTextView.isTextSelectable() || mTextView.isTextEditable())) {
controller.show();
}
if (result != null) {
switch (actionMode) {
case Editor.TextActionMode.SELECTION:

View File

@@ -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;
@@ -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);