Loading core/tests/coretests/AndroidManifest.xml +0 −9 Original line number Diff line number Diff line Loading @@ -1660,15 +1660,6 @@ </intent-filter> </activity> <activity android:name="android.widget.TextViewContextMenuActivity" android:screenOrientation="locked" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" /> </intent-filter> </activity> <activity android:name="android.animation.AnimatorSetActivity" android:screenOrientation="locked" android:exported="true"> Loading core/tests/coretests/src/android/widget/TextViewContextMenuActivity.javadeleted 100644 → 0 +0 −30 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.widget; import android.app.Activity; import android.os.Bundle; import com.android.frameworks.coretests.R; public class TextViewContextMenuActivity extends Activity { @Override public void onCreate(Bundle savedBundleInstance) { super.onCreate(savedBundleInstance); setContentView(R.layout.textview_contextmenu); } } core/tests/coretests/src/android/widget/TextViewContextMenuTest.java +30 −43 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.widget; import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; Loading @@ -31,9 +33,9 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.PendingIntent; import android.app.RemoteAction; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; Loading @@ -42,15 +44,9 @@ import android.view.ContextMenu; import android.view.MenuItem; import android.view.textclassifier.TextClassification; import androidx.test.annotation.UiThreadTest; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.MediumTest; import androidx.test.rule.ActivityTestRule; import com.android.frameworks.coretests.R; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; Loading @@ -59,17 +55,12 @@ import org.mockito.ArgumentCaptor; * TextViewTest tests {@link TextView}. */ @RunWith(AndroidJUnit4.class) @MediumTest public class TextViewContextMenuTest { private static final String INTENT_ACTION_MOCK_ACTION_TEXT_CLASSIFICATION = "android.text.coretest.textclassifiation"; private static final String ACTION_TITLE = "ACTION_TITLE"; private static final String ACTION_DESCRIPTION = "ACTION_DESCRIPTION"; @Rule public final ActivityTestRule<TextViewContextMenuActivity> mActivityRule = new ActivityTestRule<>(TextViewContextMenuActivity.class); // Setup MenuItem mock with chaining. private MenuItem newMockMenuItem() { MenuItem mockItem = mock(MenuItem.class); Loading @@ -83,43 +74,39 @@ public class TextViewContextMenuTest { return mockItem; } private RemoteAction createRemoteAction() { private RemoteAction createRemoteAction(Context context) { Intent intent = new Intent(INTENT_ACTION_MOCK_ACTION_TEXT_CLASSIFICATION) .setPackage(mActivity.getPackageName()); PendingIntent pIntent = PendingIntent.getBroadcast(mActivity, 0, intent, .setPackage(context.getPackageName()); PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_MUTABLE); return new RemoteAction( Icon.createWithResource(mActivity, android.R.drawable.btn_star), Icon.createWithResource(context, android.R.drawable.btn_star), ACTION_TITLE, ACTION_DESCRIPTION, pIntent); } private Activity mActivity; private SelectionActionModeHelper mMockHelper; private Editor.AssistantCallbackHelper mCallbackHelper; @Before public void setUp() { mActivity = mActivityRule.getActivity(); EditText et = mActivity.findViewById(R.id.editText); mMockHelper = mock(SelectionActionModeHelper.class); mCallbackHelper = et.getEditorForTesting().new AssistantCallbackHelper(mMockHelper); } @UiThreadTest @Test public void testNoMenuInteraction_noTextClassification() { when(mMockHelper.getTextClassification()).thenReturn(null); ContextMenu menu = mock(ContextMenu.class); mCallbackHelper.updateAssistMenuItems(menu, null); EditText et = new EditText(getInstrumentation().getContext()); Editor.AssistantCallbackHelper cbh = et.getEditorForTesting().new AssistantCallbackHelper(mMockHelper); cbh.updateAssistMenuItems(menu, null); verifyNoMoreInteractions(menu); } @UiThreadTest @Test public void testAddMenuForTextClassification() { // Setup RemoteAction action = createRemoteAction(); Context context = getInstrumentation().getContext(); RemoteAction action = createRemoteAction(context); TextClassification classification = new TextClassification.Builder() .addAction(action).build(); when(mMockHelper.getTextClassification()).thenReturn(classification); Loading @@ -129,7 +116,10 @@ public class TextViewContextMenuTest { when(menu.add(anyInt(), anyInt(), anyInt(), any())).thenReturn(mockMenuItem); // Execute mCallbackHelper.updateAssistMenuItems(menu, null); EditText et = new EditText(context); Editor.AssistantCallbackHelper cbh = et.getEditorForTesting().new AssistantCallbackHelper(mMockHelper); cbh.updateAssistMenuItems(menu, null); // Verify ArgumentCaptor<Integer> idCaptor = ArgumentCaptor.forClass(Integer.class); Loading @@ -142,14 +132,14 @@ public class TextViewContextMenuTest { verify(mockMenuItem, times(1)).setContentDescription(eq(ACTION_DESCRIPTION)); } @UiThreadTest @Test public void testAddMenuForLegacyTextClassification() { // Setup Context context = getInstrumentation().getContext(); Intent intent = new Intent(INTENT_ACTION_MOCK_ACTION_TEXT_CLASSIFICATION) .setPackage(mActivity.getPackageName()); .setPackage(context.getPackageName()); TextClassification classification = new TextClassification.Builder() .setIcon(mActivity.getResources().getDrawable(android.R.drawable.star_on)) .setIcon(context.getResources().getDrawable(android.R.drawable.star_on)) .setLabel(ACTION_TITLE) .setIntent(intent) .build(); Loading @@ -160,7 +150,10 @@ public class TextViewContextMenuTest { when(menu.add(anyInt(), anyInt(), anyInt(), any())).thenReturn(mockMenuItem); // Execute mCallbackHelper.updateAssistMenuItems(menu, null); EditText et = new EditText(context); Editor.AssistantCallbackHelper cbh = et.getEditorForTesting().new AssistantCallbackHelper(mMockHelper); cbh.updateAssistMenuItems(menu, null); // Verify ArgumentCaptor<Integer> idCaptor = ArgumentCaptor.forClass(Integer.class); Loading @@ -172,7 +165,6 @@ public class TextViewContextMenuTest { assertThat(titleCaptor.getValue().toString()).isEqualTo(ACTION_TITLE); } @UiThreadTest @Test public void testAdjustIconSpaces() { GradientDrawable gd = new GradientDrawable(); Loading @@ -195,9 +187,8 @@ public class TextViewContextMenuTest { when(menu.getItem(1)).thenReturn(mockNoIconMenu); when(menu.getItem(2)).thenReturn(mockNoIconMenu2); // Execute the test method EditText et = mActivity.findViewById(R.id.editText); EditText et = new EditText(getInstrumentation().getContext()); Editor editor = et.getEditorForTesting(); editor.adjustIconSpacing(menu); Loading @@ -217,7 +208,6 @@ public class TextViewContextMenuTest { assertThat(paddingDrawable2).isSameInstanceAs(paddingDrawable); } @UiThreadTest @Test public void testAdjustIconSpacesNoIconCase() { // Setup mocks Loading @@ -234,7 +224,7 @@ public class TextViewContextMenuTest { when(menu.getItem(1)).thenReturn(mockNoIconMenu2); // Execute the test method EditText et = mActivity.findViewById(R.id.editText); EditText et = new EditText(getInstrumentation().getContext()); Editor editor = et.getEditorForTesting(); editor.adjustIconSpacing(menu); Loading @@ -243,7 +233,6 @@ public class TextViewContextMenuTest { verify(mockNoIconMenu2, times(0)).setIcon(any()); } @UiThreadTest @Test public void testAutofillMenuItemEnabledWhenNoTextSelected() { ContextMenu menu = mock(ContextMenu.class); Loading @@ -253,18 +242,17 @@ public class TextViewContextMenuTest { when(menu.add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt())) .thenReturn(mockAutofillMenuItem); EditText et = spy(mActivity.findViewById(R.id.editText)); EditText et = spy(new EditText(getInstrumentation().getContext())); doReturn(true).when(et).canRequestAutofill(); doReturn(null).when(et).getSelectedText(); Editor editor = et.getEditorForTesting(); editor.onCreateContextMenu(menu); Editor editor = new Editor(et); editor.setTextContextMenuItems(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); Loading @@ -274,7 +262,7 @@ public class TextViewContextMenuTest { when(menu.add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt())) .thenReturn(mockAutofillMenuItem); EditText et = spy(mActivity.findViewById(R.id.editText)); EditText et = spy(new EditText(getInstrumentation().getContext())); doReturn(true).when(et).canRequestAutofill(); doReturn("test").when(et).getSelectedText(); Editor editor = new Editor(et); Loading @@ -283,5 +271,4 @@ public class TextViewContextMenuTest { verify(menu).add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt()); verify(mockAutofillMenuItem).setEnabled(false); } } Loading
core/tests/coretests/AndroidManifest.xml +0 −9 Original line number Diff line number Diff line Loading @@ -1660,15 +1660,6 @@ </intent-filter> </activity> <activity android:name="android.widget.TextViewContextMenuActivity" android:screenOrientation="locked" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" /> </intent-filter> </activity> <activity android:name="android.animation.AnimatorSetActivity" android:screenOrientation="locked" android:exported="true"> Loading
core/tests/coretests/src/android/widget/TextViewContextMenuActivity.javadeleted 100644 → 0 +0 −30 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.widget; import android.app.Activity; import android.os.Bundle; import com.android.frameworks.coretests.R; public class TextViewContextMenuActivity extends Activity { @Override public void onCreate(Bundle savedBundleInstance) { super.onCreate(savedBundleInstance); setContentView(R.layout.textview_contextmenu); } }
core/tests/coretests/src/android/widget/TextViewContextMenuTest.java +30 −43 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.widget; import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; Loading @@ -31,9 +33,9 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import android.app.Activity; import android.app.PendingIntent; import android.app.RemoteAction; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; Loading @@ -42,15 +44,9 @@ import android.view.ContextMenu; import android.view.MenuItem; import android.view.textclassifier.TextClassification; import androidx.test.annotation.UiThreadTest; import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.MediumTest; import androidx.test.rule.ActivityTestRule; import com.android.frameworks.coretests.R; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; Loading @@ -59,17 +55,12 @@ import org.mockito.ArgumentCaptor; * TextViewTest tests {@link TextView}. */ @RunWith(AndroidJUnit4.class) @MediumTest public class TextViewContextMenuTest { private static final String INTENT_ACTION_MOCK_ACTION_TEXT_CLASSIFICATION = "android.text.coretest.textclassifiation"; private static final String ACTION_TITLE = "ACTION_TITLE"; private static final String ACTION_DESCRIPTION = "ACTION_DESCRIPTION"; @Rule public final ActivityTestRule<TextViewContextMenuActivity> mActivityRule = new ActivityTestRule<>(TextViewContextMenuActivity.class); // Setup MenuItem mock with chaining. private MenuItem newMockMenuItem() { MenuItem mockItem = mock(MenuItem.class); Loading @@ -83,43 +74,39 @@ public class TextViewContextMenuTest { return mockItem; } private RemoteAction createRemoteAction() { private RemoteAction createRemoteAction(Context context) { Intent intent = new Intent(INTENT_ACTION_MOCK_ACTION_TEXT_CLASSIFICATION) .setPackage(mActivity.getPackageName()); PendingIntent pIntent = PendingIntent.getBroadcast(mActivity, 0, intent, .setPackage(context.getPackageName()); PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_MUTABLE); return new RemoteAction( Icon.createWithResource(mActivity, android.R.drawable.btn_star), Icon.createWithResource(context, android.R.drawable.btn_star), ACTION_TITLE, ACTION_DESCRIPTION, pIntent); } private Activity mActivity; private SelectionActionModeHelper mMockHelper; private Editor.AssistantCallbackHelper mCallbackHelper; @Before public void setUp() { mActivity = mActivityRule.getActivity(); EditText et = mActivity.findViewById(R.id.editText); mMockHelper = mock(SelectionActionModeHelper.class); mCallbackHelper = et.getEditorForTesting().new AssistantCallbackHelper(mMockHelper); } @UiThreadTest @Test public void testNoMenuInteraction_noTextClassification() { when(mMockHelper.getTextClassification()).thenReturn(null); ContextMenu menu = mock(ContextMenu.class); mCallbackHelper.updateAssistMenuItems(menu, null); EditText et = new EditText(getInstrumentation().getContext()); Editor.AssistantCallbackHelper cbh = et.getEditorForTesting().new AssistantCallbackHelper(mMockHelper); cbh.updateAssistMenuItems(menu, null); verifyNoMoreInteractions(menu); } @UiThreadTest @Test public void testAddMenuForTextClassification() { // Setup RemoteAction action = createRemoteAction(); Context context = getInstrumentation().getContext(); RemoteAction action = createRemoteAction(context); TextClassification classification = new TextClassification.Builder() .addAction(action).build(); when(mMockHelper.getTextClassification()).thenReturn(classification); Loading @@ -129,7 +116,10 @@ public class TextViewContextMenuTest { when(menu.add(anyInt(), anyInt(), anyInt(), any())).thenReturn(mockMenuItem); // Execute mCallbackHelper.updateAssistMenuItems(menu, null); EditText et = new EditText(context); Editor.AssistantCallbackHelper cbh = et.getEditorForTesting().new AssistantCallbackHelper(mMockHelper); cbh.updateAssistMenuItems(menu, null); // Verify ArgumentCaptor<Integer> idCaptor = ArgumentCaptor.forClass(Integer.class); Loading @@ -142,14 +132,14 @@ public class TextViewContextMenuTest { verify(mockMenuItem, times(1)).setContentDescription(eq(ACTION_DESCRIPTION)); } @UiThreadTest @Test public void testAddMenuForLegacyTextClassification() { // Setup Context context = getInstrumentation().getContext(); Intent intent = new Intent(INTENT_ACTION_MOCK_ACTION_TEXT_CLASSIFICATION) .setPackage(mActivity.getPackageName()); .setPackage(context.getPackageName()); TextClassification classification = new TextClassification.Builder() .setIcon(mActivity.getResources().getDrawable(android.R.drawable.star_on)) .setIcon(context.getResources().getDrawable(android.R.drawable.star_on)) .setLabel(ACTION_TITLE) .setIntent(intent) .build(); Loading @@ -160,7 +150,10 @@ public class TextViewContextMenuTest { when(menu.add(anyInt(), anyInt(), anyInt(), any())).thenReturn(mockMenuItem); // Execute mCallbackHelper.updateAssistMenuItems(menu, null); EditText et = new EditText(context); Editor.AssistantCallbackHelper cbh = et.getEditorForTesting().new AssistantCallbackHelper(mMockHelper); cbh.updateAssistMenuItems(menu, null); // Verify ArgumentCaptor<Integer> idCaptor = ArgumentCaptor.forClass(Integer.class); Loading @@ -172,7 +165,6 @@ public class TextViewContextMenuTest { assertThat(titleCaptor.getValue().toString()).isEqualTo(ACTION_TITLE); } @UiThreadTest @Test public void testAdjustIconSpaces() { GradientDrawable gd = new GradientDrawable(); Loading @@ -195,9 +187,8 @@ public class TextViewContextMenuTest { when(menu.getItem(1)).thenReturn(mockNoIconMenu); when(menu.getItem(2)).thenReturn(mockNoIconMenu2); // Execute the test method EditText et = mActivity.findViewById(R.id.editText); EditText et = new EditText(getInstrumentation().getContext()); Editor editor = et.getEditorForTesting(); editor.adjustIconSpacing(menu); Loading @@ -217,7 +208,6 @@ public class TextViewContextMenuTest { assertThat(paddingDrawable2).isSameInstanceAs(paddingDrawable); } @UiThreadTest @Test public void testAdjustIconSpacesNoIconCase() { // Setup mocks Loading @@ -234,7 +224,7 @@ public class TextViewContextMenuTest { when(menu.getItem(1)).thenReturn(mockNoIconMenu2); // Execute the test method EditText et = mActivity.findViewById(R.id.editText); EditText et = new EditText(getInstrumentation().getContext()); Editor editor = et.getEditorForTesting(); editor.adjustIconSpacing(menu); Loading @@ -243,7 +233,6 @@ public class TextViewContextMenuTest { verify(mockNoIconMenu2, times(0)).setIcon(any()); } @UiThreadTest @Test public void testAutofillMenuItemEnabledWhenNoTextSelected() { ContextMenu menu = mock(ContextMenu.class); Loading @@ -253,18 +242,17 @@ public class TextViewContextMenuTest { when(menu.add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt())) .thenReturn(mockAutofillMenuItem); EditText et = spy(mActivity.findViewById(R.id.editText)); EditText et = spy(new EditText(getInstrumentation().getContext())); doReturn(true).when(et).canRequestAutofill(); doReturn(null).when(et).getSelectedText(); Editor editor = et.getEditorForTesting(); editor.onCreateContextMenu(menu); Editor editor = new Editor(et); editor.setTextContextMenuItems(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); Loading @@ -274,7 +262,7 @@ public class TextViewContextMenuTest { when(menu.add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt())) .thenReturn(mockAutofillMenuItem); EditText et = spy(mActivity.findViewById(R.id.editText)); EditText et = spy(new EditText(getInstrumentation().getContext())); doReturn(true).when(et).canRequestAutofill(); doReturn("test").when(et).getSelectedText(); Editor editor = new Editor(et); Loading @@ -283,5 +271,4 @@ public class TextViewContextMenuTest { verify(menu).add(anyInt(), eq(TextView.ID_AUTOFILL), anyInt(), anyInt()); verify(mockAutofillMenuItem).setEnabled(false); } }