diff options
-rw-r--r-- | core/java/android/widget/Editor.java | 4 | ||||
-rw-r--r-- | core/tests/coretests/src/android/widget/TextViewContextMenuTest.java | 41 |
2 files changed, 44 insertions, 1 deletions
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index 8b6ead7d37c5..d28c953fe0bd 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -3285,9 +3285,11 @@ public class Editor { .setEnabled(mTextView.canShare()) .setIcon(a.getDrawable(6)) .setOnMenuItemClickListener(mOnContextMenuItemClickListener); + final String selected = mTextView.getSelectedText(); menu.add(CONTEXT_MENU_GROUP_MISC, TextView.ID_AUTOFILL, menuItemOrderAutofill, android.R.string.autofill) - .setEnabled(mTextView.canRequestAutofill()) + .setEnabled(mTextView.canRequestAutofill() + && (selected == null || selected.isEmpty())) .setOnMenuItemClickListener(mOnContextMenuItemClickListener); mPreserveSelection = true; diff --git a/core/tests/coretests/src/android/widget/TextViewContextMenuTest.java b/core/tests/coretests/src/android/widget/TextViewContextMenuTest.java index 12f8c9c1efc9..f9da832ba7de 100644 --- a/core/tests/coretests/src/android/widget/TextViewContextMenuTest.java +++ b/core/tests/coretests/src/android/widget/TextViewContextMenuTest.java @@ -240,4 +240,45 @@ public class TextViewContextMenuTest { verify(mockNoIconMenu, times(0)).setIcon(any()); verify(mockNoIconMenu2, times(0)).setIcon(any()); } + + @UiThreadTest + @Test + public void testAutofillMenuItemEnabledWhenNoTextSelected() { + ContextMenu menu = mock(ContextMenu.class); + MenuItem mockMenuItem = newMockMenuItem(); + when(menu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mockMenuItem); + MenuItem mockAutofillMenuItem = newMockMenuItem(); + when(menu.add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt())) + .thenReturn(mockAutofillMenuItem); + + EditText et = mActivity.findViewById(R.id.editText); + et.setText("Test"); + + Editor editor = et.getEditorForTesting(); + editor.onCreateContextMenu(menu); + + verify(menu).add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt()); + verify(mockAutofillMenuItem).setEnabled(true); + } + + @UiThreadTest + @Test + public void testAutofillMenuItemNotEnabledWhenTextSelected() { + ContextMenu menu = mock(ContextMenu.class); + MenuItem mockMenuItem = newMockMenuItem(); + when(menu.add(anyInt(), anyInt(), anyInt(), anyInt())).thenReturn(mockMenuItem); + MenuItem mockAutofillMenuItem = newMockMenuItem(); + when(menu.add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt())) + .thenReturn(mockAutofillMenuItem); + + EditText et = mActivity.findViewById(R.id.editText); + et.setText("Test"); + et.selectAll(); + Editor editor = et.getEditorForTesting(); + editor.onCreateContextMenu(menu); + + verify(menu).add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt()); + verify(mockAutofillMenuItem).setEnabled(false); + } + } |