├── .bazelproject ├── .bazelrc ├── .bazelversion ├── .github ├── ISSUE_TEMPLATE.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── ci.yml ├── .gitignore ├── BUILD ├── CHANGELOG_TEMPLATE.md ├── CONTRIBUTING.md ├── Dockerfile ├── ISSUE_TEMPLATE.md ├── LICENSE ├── MODULE.bazel ├── README.md ├── WORKSPACE ├── api ├── README.md ├── atsl_1.0.2_api.txt ├── axt_1.0.0_api.txt ├── axt_1.0.2_api.txt ├── axt_1.1.0-alpha01_api.txt ├── axt_1.1.0_api.txt ├── axt_1.1.1-alpha02_api.txt ├── axt_1.2.0_api.txt ├── axt_1.2.0_beta01_api.txt ├── axt_1.3.0-beta02.txt ├── axt_1.3.0-rc01.txt ├── axt_1.3.0-rc03.txt ├── axt_1.3.0.txt ├── axt_1.3.1_alpha01.txt ├── axt_1.3.1_alpha02.txt ├── axt_1.3.1_alpha03.txt ├── axt_1.4.0-alpha04.txt ├── axt_1.4.0-alpha06.txt ├── axt_1.4.0-beta01.txt ├── axt_1.4.0-beta02.txt ├── axt_1.4.0-rc01.txt └── axt_1.4.0.txt ├── bazelci └── buildkite-pipeline.yml ├── build_extensions ├── AndroidManifest_instrumentation_test_template.xml ├── AndroidManifest_robolectric.xml ├── AndroidManifest_target_stub.xml ├── BUILD ├── android_app_instrumentation_tests.bzl ├── android_library_instrumentation_tests.bzl ├── android_library_test.bzl ├── android_multidevice_instrumentation_test.bzl ├── api_checks.bzl ├── axt_android_application_test.bzl ├── axt_android_local_test.bzl ├── axt_deps_versions.bzl ├── axt_released_versions.bzl ├── axt_stable_versions.bzl ├── axt_versions.bzl ├── create_jar.bzl ├── dackka_test.bzl ├── generate_instrumentation_tests.bzl ├── infer_java_package_name.bzl ├── jar_combiner │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── tools │ │ │ └── jarcombiner │ │ │ ├── BUILD │ │ │ ├── JarCombiner.kt │ │ │ └── Main.java │ └── javatests │ │ └── androidx │ │ └── test │ │ └── tools │ │ └── jarcombiner │ │ ├── BUILD │ │ ├── JarCombinerTest.kt │ │ └── fixtures │ │ ├── BUILD │ │ ├── Jar1Class.java │ │ ├── Jar2Class.java │ │ └── R.java ├── jar_creator │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── tools │ │ │ └── jarcreator │ │ │ ├── BUILD │ │ │ ├── JarCreator.kt │ │ │ └── Main.java │ └── javatests │ │ └── androidx │ │ └── test │ │ └── tools │ │ └── jarcreator │ │ ├── BUILD │ │ └── JarCreatorTest.kt ├── jar_validator │ ├── BUILD │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── tools │ │ │ └── jarvalidator │ │ │ ├── BUILD │ │ │ ├── JarValidator.kt │ │ │ └── Main.java │ └── javatests │ │ └── androidx │ │ └── test │ │ └── tools │ │ └── jarvalidator │ │ ├── BUILD │ │ ├── JarValidatorTest.kt │ │ └── fixtures │ │ ├── BUILD │ │ ├── matching │ │ └── Matching.java │ │ └── notmatching │ │ └── NotMatching.java ├── java_service_map.bzl ├── jetify.bzl ├── kt_android_library.bzl ├── mainDexClasses.rules ├── maven │ ├── BUILD │ ├── add_or_update_file_in_zip.bzl │ ├── axt_android_aar.bzl │ ├── axt_maven_apk.bzl │ ├── combine_jars.bzl │ ├── jarjar.bzl │ ├── kotlin_info.bzl │ ├── maven_artifact.bzl │ ├── maven_artifact.sh │ ├── maven_info.bzl │ ├── maven_registry.bzl │ ├── maven_repo.bzl │ └── reduce_jar.bzl ├── phone_devices.bzl ├── register_extension_info.bzl ├── robolectric.properties └── zip_combiner │ └── java │ └── androidx │ └── test │ └── tools │ └── zipcombiner │ ├── BUILD │ ├── Main.java │ └── ZipCombiner.kt ├── core ├── BUILD ├── CHANGELOG.md ├── LICENSE ├── java │ └── androidx │ │ └── test │ │ └── core │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── api │ │ ├── 1.4.0_public.txt │ │ ├── 1.5.0_internal.txt │ │ ├── 1.5.0_public.txt │ │ ├── 1.6.0_internal.txt │ │ ├── 1.6.0_public.txt │ │ ├── current_internal.txt │ │ └── current_public.txt │ │ ├── app │ │ ├── ActivityScenario.java │ │ ├── ApplicationProvider.java │ │ ├── DeviceCapture.kt │ │ ├── InstrumentationActivityInvoker.java │ │ └── ListFuture.java │ │ ├── content │ │ └── pm │ │ │ ├── ApplicationInfoBuilder.java │ │ │ └── PackageInfoBuilder.java │ │ ├── graphics │ │ └── BitmapStorageExt.kt │ │ ├── internal │ │ └── os │ │ │ └── HandlerExecutor.kt │ │ ├── os │ │ └── Parcelables.java │ │ ├── res │ │ ├── values-v18 │ │ │ └── styles.xml │ │ ├── values-v21 │ │ │ └── styles.xml │ │ ├── values-v28 │ │ │ └── styles.xml │ │ └── values │ │ │ └── styles.xml │ │ └── view │ │ ├── MotionEventBuilder.java │ │ ├── PointerCoordsBuilder.java │ │ ├── PointerPropertiesBuilder.java │ │ ├── ViewCapture.kt │ │ └── WindowCapture.kt └── javatests │ └── androidx │ └── test │ └── core │ ├── app │ ├── ActivityScenarioSharedTest.java │ ├── ActivityScenarioTest.java │ ├── AndroidManifest_target.xml │ ├── AndroidManifest_test.xml │ ├── ApplicationProviderTest.java │ ├── BUILD │ ├── TakeScreenShotTest.kt │ └── testing │ │ ├── ActivityWithDialog.kt │ │ ├── AndroidManifest.xml │ │ ├── AndroidManifest_empty.xml │ │ ├── AsyncRecordingActivity.java │ │ ├── BUILD │ │ ├── FinishItselfActivity.java │ │ ├── IntentActivity.java │ │ ├── RecordingActivity.java │ │ ├── RecreationRecordingActivity.java │ │ ├── RedirectingActivity.java │ │ ├── UiActivity.kt │ │ └── res │ │ └── layout │ │ └── simple_activity.xml │ ├── content │ └── pm │ │ ├── ApplicationInfoBuilderTest.java │ │ ├── BUILD │ │ └── PackageInfoBuilderTest.java │ ├── graphics │ ├── BUILD │ └── BitmapStorageTest.kt │ ├── os │ ├── BUILD │ └── ParcelablesTest.java │ └── view │ ├── BUILD │ └── MotionEventBuilderTest.java ├── espresso ├── BUILD ├── CHANGELOG.md ├── LICENSE ├── accessibility │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ └── accessibility │ │ │ ├── AccessibilityChecks.java │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ └── api │ │ │ ├── 3.4.0_public.txt │ │ │ ├── 3.5.0_internal.txt │ │ │ ├── 3.5.0_public.txt │ │ │ ├── 3.6.0_internal.txt │ │ │ ├── 3.6.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ └── javatests │ │ └── androidx │ │ └── test │ │ └── espresso │ │ └── accessibility │ │ ├── AccessibilityChecksIntegrationTest.java │ │ └── BUILD ├── contrib │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ └── contrib │ │ │ ├── AccessibilityChecks.java │ │ │ ├── ActivityResultMatchers.java │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── DrawerActions.java │ │ │ ├── DrawerMatchers.java │ │ │ ├── NavigationViewActions.java │ │ │ ├── PickerActions.java │ │ │ ├── RecyclerViewActions.java │ │ │ ├── ViewPagerActions.java │ │ │ ├── api │ │ │ ├── 3.4.0_public.txt │ │ │ ├── 3.5.0_internal.txt │ │ │ ├── 3.5.0_public.txt │ │ │ ├── 3.6.0_internal.txt │ │ │ ├── 3.6.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ │ └── res │ │ │ └── values │ │ │ └── ids.xml │ └── javatests │ │ └── androidx │ │ └── test │ │ └── espresso │ │ └── contrib │ │ ├── AccessibilityChecksIntegrationTest.java │ │ ├── ActivityResultMatchersTest.java │ │ ├── BUILD │ │ ├── DrawerActionsIntegrationTest.java │ │ ├── NavigationViewActionsIntegrationTest.java │ │ ├── RecyclerViewGridLayoutManagerTest.java │ │ ├── RecyclerViewIntegrationTest.java │ │ ├── RecyclerViewLinearLayoutManagerTest.java │ │ ├── RecyclerViewStaggeredGridLayoutManagerTest.java │ │ └── ViewPagerActionsIntegrationTest.java ├── core │ ├── BUILD │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ ├── AmbiguousViewMatcherException.java │ │ │ ├── AndroidManifest.xml │ │ │ ├── AppNotIdleException.java │ │ │ ├── BUILD │ │ │ ├── BaseLayerComponent.java │ │ │ ├── DataInteraction.java │ │ │ ├── Espresso.java │ │ │ ├── EspressoException.java │ │ │ ├── FailureHandler.java │ │ │ ├── GraphHolder.java │ │ │ ├── IdlingPolicies.java │ │ │ ├── IdlingPolicy.java │ │ │ ├── IdlingResourceTimeoutException.java │ │ │ ├── InjectEventSecurityException.java │ │ │ ├── InteractionResultsHandler.java │ │ │ ├── NoActivityResumedException.java │ │ │ ├── NoMatchingRootException.java │ │ │ ├── NoMatchingViewException.java │ │ │ ├── PerformException.java │ │ │ ├── Root.java │ │ │ ├── RootViewException.java │ │ │ ├── UiController.java │ │ │ ├── ViewAction.java │ │ │ ├── ViewAssertion.java │ │ │ ├── ViewFinder.java │ │ │ ├── ViewInteraction.java │ │ │ ├── ViewInteractionComponent.java │ │ │ ├── ViewInteractionModule.java │ │ │ ├── action │ │ │ ├── AdapterDataLoaderAction.java │ │ │ ├── AdapterViewProtocol.java │ │ │ ├── AdapterViewProtocols.java │ │ │ ├── BUILD │ │ │ ├── CaptureToBitmapAction.kt │ │ │ ├── CloseKeyboardAction.java │ │ │ ├── CoordinatesProvider.java │ │ │ ├── EditorAction.java │ │ │ ├── EspressoKey.java │ │ │ ├── GeneralClickAction.java │ │ │ ├── GeneralLocation.java │ │ │ ├── GeneralSwipeAction.java │ │ │ ├── KeyEventAction.java │ │ │ ├── KeyEventActionBase.java │ │ │ ├── MotionEvents.java │ │ │ ├── OpenLinkAction.java │ │ │ ├── PrecisionDescriber.java │ │ │ ├── Press.java │ │ │ ├── PressBackAction.java │ │ │ ├── RepeatActionUntilViewState.java │ │ │ ├── ReplaceTextAction.java │ │ │ ├── RunnableIdlingResource.kt │ │ │ ├── ScrollToAction.java │ │ │ ├── Swipe.java │ │ │ ├── Swiper.java │ │ │ ├── Tap.java │ │ │ ├── Tapper.java │ │ │ ├── TranslatedCoordinatesProvider.java │ │ │ ├── TypeTextAction.java │ │ │ └── ViewActions.java │ │ │ ├── api │ │ │ ├── 1.1.0_internal.txt │ │ │ ├── 1.1.0_public.txt │ │ │ ├── 3.4.0_public.txt │ │ │ ├── 3.5.0_internal.txt │ │ │ ├── 3.5.0_public.txt │ │ │ ├── 3.6.0_internal.txt │ │ │ ├── 3.6.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ │ ├── assertion │ │ │ ├── BUILD │ │ │ ├── LayoutAssertions.java │ │ │ ├── PositionAssertions.java │ │ │ └── ViewAssertions.java │ │ │ ├── base │ │ │ ├── ActiveRootLister.java │ │ │ ├── AssertionErrorHandler.java │ │ │ ├── AsyncTaskPoolMonitor.java │ │ │ ├── BUILD │ │ │ ├── BaseLayerModule.java │ │ │ ├── CompatAsyncTask.java │ │ │ ├── ConfigurationSynchronizationUtils.java │ │ │ ├── Default.java │ │ │ ├── DefaultFailureHandler.java │ │ │ ├── EspressoExceptionHandler.java │ │ │ ├── EventInjectionStrategy.java │ │ │ ├── EventInjector.java │ │ │ ├── IdleNotifier.java │ │ │ ├── IdlingResourceRegistry.java │ │ │ ├── IdlingUiController.java │ │ │ ├── InputManagerEventInjectionStrategy.java │ │ │ ├── Interrogator.java │ │ │ ├── InterruptableUiController.java │ │ │ ├── LooperIdlingResourceInterrogationHandler.java │ │ │ ├── MainThread.java │ │ │ ├── NoopIdleNotificationCallbackIdleNotifierProvider.java │ │ │ ├── NoopRunnableIdleNotifier.java │ │ │ ├── PerformExceptionHandler.java │ │ │ ├── PlatformTestStorageModule.java │ │ │ ├── RootViewPicker.java │ │ │ ├── RootViewPickerScope.java │ │ │ ├── RootsOracle.java │ │ │ ├── SdkAsyncTask.java │ │ │ ├── TestLooperManagerCompat.java │ │ │ ├── ThreadPoolExecutorExtractor.java │ │ │ ├── ThrowableHandler.java │ │ │ ├── UiControllerImpl.java │ │ │ ├── UiControllerModule.java │ │ │ ├── ViewFinderImpl.java │ │ │ └── ViewHierarchyExceptionHandler.java │ │ │ ├── core │ │ │ └── internal │ │ │ │ └── deps │ │ │ │ ├── dagger │ │ │ │ ├── BUILD │ │ │ │ └── package-info.java │ │ │ │ └── guava │ │ │ │ └── base │ │ │ │ ├── BUILD │ │ │ │ ├── Function.java │ │ │ │ ├── Optional.java │ │ │ │ └── Supplier.java │ │ │ ├── internal │ │ │ ├── data │ │ │ │ ├── BUILD │ │ │ │ ├── TestFlowVisualizer.java │ │ │ │ ├── model │ │ │ │ │ ├── ActionData.kt │ │ │ │ │ ├── BUILD │ │ │ │ │ ├── ScreenData.kt │ │ │ │ │ ├── TestArtifact.kt │ │ │ │ │ ├── TestFlow.kt │ │ │ │ │ ├── ViewData.kt │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── inject │ │ │ │ ├── BUILD │ │ │ │ ├── InstrumentationContext.java │ │ │ │ └── TargetContext.java │ │ │ └── package.html │ │ │ ├── matcher │ │ │ ├── BUILD │ │ │ ├── BoundedDiagnosingMatcher.java │ │ │ ├── BoundedMatcher.java │ │ │ ├── CursorMatchers.java │ │ │ ├── HasBackgroundMatcher.java │ │ │ ├── LayoutMatchers.java │ │ │ ├── PreferenceMatchers.java │ │ │ ├── RootMatchers.java │ │ │ └── ViewMatchers.java │ │ │ ├── proguard_library.cfg │ │ │ ├── release_jarjar_rules.txt │ │ │ ├── remote │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── Bindable.java │ │ │ ├── ConstructorInvocation.java │ │ │ ├── EspressoRemoteMessage.java │ │ │ ├── MethodInvocation.java │ │ │ ├── NoRemoteEspressoInstanceException.java │ │ │ ├── NoopRemoteInteraction.java │ │ │ ├── RemoteEspressoException.java │ │ │ ├── RemoteInteraction.java │ │ │ ├── RemoteInteractionRegistry.java │ │ │ ├── RemoteProtocolException.java │ │ │ ├── annotation │ │ │ │ ├── BUILD │ │ │ │ ├── RemoteMsgConstructor.java │ │ │ │ └── RemoteMsgField.java │ │ │ └── idls │ │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── espresso │ │ │ │ └── remote │ │ │ │ └── IInteractionExecutionStatus.aidl │ │ │ └── util │ │ │ ├── ActivityLifecycles.java │ │ │ ├── BUILD │ │ │ ├── EspressoOptional.java │ │ │ ├── HumanReadables.java │ │ │ ├── Iterables.kt │ │ │ ├── Iterators.java │ │ │ ├── StringJoiner.kt │ │ │ ├── Throwables.java │ │ │ ├── ToStringHelper.kt │ │ │ ├── TracingUtil.java │ │ │ ├── TreeIterables.java │ │ │ └── concurrent │ │ │ ├── BUILD │ │ │ ├── ExecutionList.java │ │ │ ├── ListenableFutureTask.java │ │ │ ├── ListeningExecutorService.java │ │ │ └── ThreadFactoryBuilder.java │ └── javatests │ │ └── androidx │ │ └── test │ │ └── espresso │ │ ├── AmbiguousViewMatcherExceptionTest.java │ │ ├── AppNotIdleExceptionTest.java │ │ ├── BUILD │ │ ├── EspressoEdgeCaseTest.java │ │ ├── EspressoTest.java │ │ ├── InteractionResultsHandlerTest.java │ │ ├── NoMatchingViewExceptionTest.java │ │ ├── OnIdleTest.java │ │ ├── StringPatternMatcher.java │ │ ├── TestTracer.java │ │ ├── ViewInteractionTest.java │ │ ├── action │ │ ├── AdapterDataIntegrationTest.java │ │ ├── AndroidManifest_key.xml │ │ ├── BUILD │ │ ├── CaptureToBitmapActionTest.kt │ │ ├── ClickActionIntegrationTest.java │ │ ├── ClickOnScaledViewIntegrationTest.java │ │ ├── EditorActionIntegrationTest.java │ │ ├── EspressoActionsWithTestFlowTest.java │ │ ├── EspressoKeyBuilderTest.java │ │ ├── EventActionIntegrationTest.java │ │ ├── GeneralLocationTest.java │ │ ├── KeyEventActionIntegrationTest.java │ │ ├── MotionEventsUnitTest.java │ │ ├── OpenLinkActionTest.java │ │ ├── PaddingActivityTest.java │ │ ├── RepeatActionUntilViewStateIntegrationTest.java │ │ ├── ReplaceTextActionIntegrationTest.java │ │ ├── ScrollToActionIntegrationTest.java │ │ ├── ScrollToActionWithListViewTest.java │ │ ├── SwipeActionIntegrationTest.java │ │ ├── TypeTextActionIntegrationTest.java │ │ ├── TypeTextActionTest.java │ │ └── WindowOrderingIntegrationTest.java │ │ ├── assertion │ │ ├── BUILD │ │ ├── LayoutAssertionsTest.java │ │ ├── PositionAssertionsTest.java │ │ ├── PositionAssertionsUnitTest.java │ │ └── ViewAssertionsTest.java │ │ ├── base │ │ ├── AssertionErrorHandlerTest.java │ │ ├── AsyncTaskPoolMonitorTest.java │ │ ├── BUILD │ │ ├── CoordinatesUtil.java │ │ ├── DefaultFailureHandlerTest.java │ │ ├── EspressoExceptionHandlerTest.java │ │ ├── EspressoIdleTest.java │ │ ├── EventInjectorTest.java │ │ ├── IdlingResourceRegistryTest.java │ │ ├── OnDemandIdlingResource.java │ │ ├── PerformExceptionHandlerTest.java │ │ ├── ThrowableHandlerTest.java │ │ ├── UiControllerImplIntegrationTest.java │ │ ├── UiControllerImplTest.java │ │ ├── ViewFinderImplTest.java │ │ └── ViewHierarchyExceptionHandlerTest.java │ │ ├── internal │ │ └── data │ │ │ ├── BUILD │ │ │ └── TestFlowVisualizerTest.java │ │ ├── matcher │ │ ├── BUILD │ │ ├── BoundedDiagnosingMatcherTest.java │ │ ├── CursorMatchersTest.java │ │ ├── HasBackgroundMatcherTest.java │ │ ├── LayoutMatchersTest.java │ │ ├── MatcherTestUtils.java │ │ ├── PreferenceMatchersTest.java │ │ ├── ViewMatchers1Test.java │ │ └── ViewMatchers2Test.java │ │ ├── remote │ │ ├── BUILD │ │ ├── ConstructorInvocationTest.java │ │ ├── MethodInvocationTest.java │ │ ├── StubRootMatcher.java │ │ ├── TestTypeRemoteMessage.java │ │ └── TestTypes.java │ │ ├── screenshot │ │ └── ViewInteractionCaptureJavaTest.java │ │ └── util │ │ ├── BUILD │ │ ├── HumanReadablesTest.java │ │ ├── TracingUtilTest.java │ │ └── TreeIterablesTest.java ├── device │ ├── BUILD │ ├── CHANGELOG.md │ └── java │ │ └── androidx │ │ └── test │ │ └── espresso │ │ └── device │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── DeviceInteraction.kt │ │ ├── EspressoDevice.kt │ │ ├── action │ │ ├── BUILD │ │ ├── BaseSingleFoldDeviceAction.kt │ │ ├── BookModeAction.kt │ │ ├── ClosedModeAction.kt │ │ ├── DeviceAction.kt │ │ ├── DeviceActions.kt │ │ ├── DisplaySizeAction.kt │ │ ├── FlatModeAction.kt │ │ ├── ScreenOrientationAction.kt │ │ └── TabletopModeAction.kt │ │ ├── api │ │ ├── 1.0.0_internal.txt │ │ ├── 1.0.0_public.txt │ │ ├── current_internal.txt │ │ └── current_public.txt │ │ ├── common │ │ ├── AccelerometerRotationUtil.kt │ │ ├── ActivityUtil.kt │ │ ├── BUILD │ │ ├── DeviceUtil.kt │ │ ├── SettingsObserver.kt │ │ ├── UiAutomationUtil.kt │ │ └── package-info.java │ │ ├── controller │ │ ├── BUILD │ │ ├── DeviceControllerOperationException.kt │ │ ├── DeviceMode.kt │ │ ├── PhysicalDeviceController.kt │ │ └── emulator │ │ │ ├── BUILD │ │ │ ├── EmulatorController.kt │ │ │ ├── EmulatorGrpcConn.kt │ │ │ ├── EmulatorGrpcConnImpl.kt │ │ │ ├── HeaderCallCredentials.kt │ │ │ └── NoCallCredentials.kt │ │ ├── dagger │ │ ├── BUILD │ │ ├── DeviceControllerModule.kt │ │ ├── DeviceHolder.kt │ │ └── DeviceLayerComponent.kt │ │ ├── filter │ │ ├── BUILD │ │ ├── RequiresDeviceMode.kt │ │ ├── RequiresDeviceModeFilter.kt │ │ ├── RequiresDisplay.kt │ │ └── RequiresDisplayFilter.kt │ │ ├── internal │ │ └── deps │ │ │ └── emulator │ │ │ ├── BUILD │ │ │ └── package-info.java │ │ ├── release_jarjar_rules.txt │ │ ├── rules │ │ ├── BUILD │ │ ├── DisplaySizeRule.kt │ │ ├── ScreenOrientationRule.kt │ │ └── SkipUnsupportedDeviceActionsRule.kt │ │ └── sizeclass │ │ ├── BUILD │ │ ├── HeightSizeClass.kt │ │ └── WidthSizeClass.kt ├── idling_resource │ ├── concurrent │ │ ├── java │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── espresso │ │ │ │ └── idling │ │ │ │ └── concurrent │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── BUILD │ │ │ │ ├── IdlingScheduledThreadPoolExecutor.java │ │ │ │ ├── IdlingThreadPoolExecutor.java │ │ │ │ └── api │ │ │ │ ├── 3.4.0_public.txt │ │ │ │ ├── 3.5.0_internal.txt │ │ │ │ ├── 3.5.0_public.txt │ │ │ │ ├── 3.6.0_internal.txt │ │ │ │ ├── 3.6.0_public.txt │ │ │ │ ├── current_internal.txt │ │ │ │ └── current_public.txt │ │ └── javatests │ │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ └── idling │ │ │ └── concurrent │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── IdlingScheduledThreadPoolExecutorTest.java │ │ │ └── IdlingThreadPoolExecutorTest.java │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── IdlingRegistry.java │ │ │ ├── IdlingResource.java │ │ │ ├── api │ │ │ ├── 3.4.0_public.txt │ │ │ ├── 3.5.0_internal.txt │ │ │ ├── 3.5.0_public.txt │ │ │ ├── 3.6.0_internal.txt │ │ │ ├── 3.6.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ │ └── idling │ │ │ └── CountingIdlingResource.java │ ├── javatests │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ ├── BUILD │ │ │ ├── IdlingRegistryTest.java │ │ │ └── idling │ │ │ ├── BUILD │ │ │ └── CountingIdlingResourceTest.java │ └── net │ │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ └── idling │ │ │ └── net │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── UriIdlingResource.java │ │ │ └── api │ │ │ ├── 3.4.0_public.txt │ │ │ ├── 3.5.0_internal.txt │ │ │ ├── 3.5.0_public.txt │ │ │ ├── 3.6.0_internal.txt │ │ │ ├── 3.6.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ └── javatests │ │ └── androidx │ │ └── test │ │ └── espresso │ │ └── idling │ │ └── net │ │ ├── BUILD │ │ └── UriIdlingResourceTest.java ├── intents │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ └── intent │ │ │ ├── ActivityResultFunction.java │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── Checks.java │ │ │ ├── Intents.java │ │ │ ├── OngoingStubbing.java │ │ │ ├── ResettingStubber.java │ │ │ ├── ResettingStubberImpl.java │ │ │ ├── ResolvedIntent.java │ │ │ ├── ResolvedIntentImpl.java │ │ │ ├── VerifiableIntent.java │ │ │ ├── VerifiableIntentImpl.java │ │ │ ├── VerificationMode.java │ │ │ ├── VerificationModes.java │ │ │ ├── api │ │ │ ├── 3.4.0_public.txt │ │ │ ├── 3.5.0_internal.txt │ │ │ ├── 3.5.0_public.txt │ │ │ ├── 3.6.0_internal.txt │ │ │ ├── 3.6.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ │ ├── matcher │ │ │ ├── BUILD │ │ │ ├── BundleMatchers.java │ │ │ ├── ComponentNameMatchers.java │ │ │ ├── IntentMatchers.java │ │ │ └── UriMatchers.java │ │ │ └── rule │ │ │ ├── BUILD │ │ │ ├── IntentsRule.kt │ │ │ └── IntentsTestRule.java │ └── javatests │ │ └── androidx │ │ └── test │ │ └── espresso │ │ └── intent │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── IntentsIntegrationTest.java │ │ ├── IntentsTest.java │ │ ├── ResettingStubberImplTest.java │ │ ├── matcher │ │ ├── BUILD │ │ ├── BundleMatchersTest.java │ │ ├── ComponentNameMatchersTest.java │ │ ├── IntentMatchersTest.java │ │ └── UriMatchersTest.java │ │ └── rule │ │ ├── BUILD │ │ └── IntentsRuleTest.java ├── remote │ ├── BUILD │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ ├── BUILD │ │ │ ├── DataInteractionRemote.java │ │ │ ├── action │ │ │ ├── AdapterDataLoaderActionRemoteMsg.java │ │ │ ├── BUILD │ │ │ ├── GeneralClickActionRemoteMessage.java │ │ │ ├── GeneralLocationRemoteMessage.java │ │ │ ├── GeneralSwipeActionRemoteMessage.java │ │ │ ├── PressRemoteMessage.java │ │ │ ├── RemoteViewActions.java │ │ │ ├── SwipeRemoteMessage.java │ │ │ ├── TapRemoteMessage.java │ │ │ ├── TranslatedCoordinatesProviderRemoteMessage.java │ │ │ └── package-info.java │ │ │ ├── assertion │ │ │ ├── BUILD │ │ │ ├── RemoteViewAssertions.java │ │ │ └── package-info.java │ │ │ ├── matcher │ │ │ ├── BUILD │ │ │ ├── RemoteHamcrestCoreMatchers13.java │ │ │ ├── RemoteRootMatchers.java │ │ │ ├── RemoteViewMatchers.java │ │ │ └── package-info.java │ │ │ ├── proto │ │ │ ├── BUILD │ │ │ ├── action │ │ │ │ ├── BUILD │ │ │ │ ├── package-info.java │ │ │ │ └── view_actions.proto │ │ │ ├── assertion │ │ │ │ ├── BUILD │ │ │ │ ├── package-info.java │ │ │ │ └── view_assertions.proto │ │ │ ├── matcher │ │ │ │ ├── BUILD │ │ │ │ ├── hamcrest_matchersv1_3.proto │ │ │ │ ├── package-info.java │ │ │ │ ├── root_matchers.proto │ │ │ │ └── view_matchers.proto │ │ │ ├── package-info.java │ │ │ └── ui_interaction.proto │ │ │ ├── remote │ │ │ ├── AndroidManifest.xml │ │ │ ├── AnyToTypeConverter.java │ │ │ ├── BUILD │ │ │ ├── BuilderReflector.java │ │ │ ├── ByteStringToParcelableConverter.java │ │ │ ├── ByteStringToTypeConverter.java │ │ │ ├── Converter.java │ │ │ ├── EspressoRemote.java │ │ │ ├── FieldDescriptor.java │ │ │ ├── GenericRemoteMessage.java │ │ │ ├── InteractionRequest.java │ │ │ ├── InteractionResponse.java │ │ │ ├── ParcelableToByteStringConverter.java │ │ │ ├── ProtoReflector.java │ │ │ ├── ProtoUtils.java │ │ │ ├── RemoteDescriptor.java │ │ │ ├── RemoteDescriptorRegistry.java │ │ │ ├── RemoteMessageDeserializer.java │ │ │ ├── RemoteMessageSerializer.java │ │ │ ├── TypeProtoConverters.java │ │ │ ├── TypeToAnyConverter.java │ │ │ ├── TypeToByteStringConverter.java │ │ │ ├── aar_jarjar_rules.txt │ │ │ ├── api │ │ │ │ ├── 3.4.0_public.txt │ │ │ │ ├── 3.5.0_internal.txt │ │ │ │ ├── 3.5.0_public.txt │ │ │ │ ├── 3.6.0_internal.txt │ │ │ │ ├── 3.6.0_public.txt │ │ │ │ ├── current_internal.txt │ │ │ │ └── current_public.txt │ │ │ └── proguard_library.cfg │ │ │ └── web │ │ │ ├── action │ │ │ ├── AtomActionRemoteMessage.java │ │ │ ├── BUILD │ │ │ ├── RemoteWebActions.java │ │ │ └── package-info.java │ │ │ ├── assertion │ │ │ ├── BUILD │ │ │ ├── ByteStringToDocumentConverter.java │ │ │ ├── CheckResultWebAssertionRemoteMessage.java │ │ │ ├── CompressorDecompressor.java │ │ │ ├── DocumentProtoConverters.java │ │ │ ├── DocumentToByteStringConverter.java │ │ │ ├── RemoteWebViewAssertions.java │ │ │ └── package-info.java │ │ │ ├── matcher │ │ │ ├── BUILD │ │ │ ├── RemoteWebMatchers.java │ │ │ └── package-info.java │ │ │ ├── model │ │ │ ├── BUILD │ │ │ ├── RemoteWebModelAtoms.java │ │ │ ├── ScriptWithArgsSimpleAtomRemoteMessage.java │ │ │ └── package-info.java │ │ │ ├── proto │ │ │ ├── BUILD │ │ │ ├── action │ │ │ │ ├── BUILD │ │ │ │ ├── package-info.java │ │ │ │ └── web_actions.proto │ │ │ ├── assertion │ │ │ │ ├── BUILD │ │ │ │ ├── package-info.java │ │ │ │ └── web_assertions.proto │ │ │ ├── matcher │ │ │ │ ├── BUILD │ │ │ │ ├── package-info.java │ │ │ │ └── remote_web_matchers.proto │ │ │ ├── model │ │ │ │ ├── BUILD │ │ │ │ ├── package-info.java │ │ │ │ └── web_model_atoms.proto │ │ │ ├── sugar │ │ │ │ ├── BUILD │ │ │ │ ├── package-info.java │ │ │ │ └── web_sugar.proto │ │ │ └── webdriver │ │ │ │ ├── BUILD │ │ │ │ ├── package-info.java │ │ │ │ └── web_webdriver_atoms.proto │ │ │ ├── sugar │ │ │ ├── BUILD │ │ │ ├── RemoteWebSugar.java │ │ │ └── package-info.java │ │ │ └── webdriver │ │ │ ├── BUILD │ │ │ ├── RemoteWebDriverAtoms.java │ │ │ └── package-info.java │ └── javatests │ │ └── androidx │ │ └── test │ │ └── espresso │ │ ├── BUILD │ │ ├── DisplayDataMatcherRemoteMsgTest.java │ │ ├── action │ │ ├── AdapterDataLoaderActionRemoteMsgTest.java │ │ ├── BUILD │ │ └── RemoteViewActionsTest.java │ │ ├── assertion │ │ ├── BUILD │ │ └── RemoteViewAssertionsTest.java │ │ ├── matcher │ │ ├── BUILD │ │ ├── RemoteHamcrestCoreMatcher13Test.java │ │ └── RemoteViewMatchersTest.java │ │ ├── proto │ │ ├── BUILD │ │ └── test_protos.proto │ │ ├── remote │ │ ├── AnyToTypeConverterTest.java │ │ ├── BUILD │ │ ├── BuilderReflectorTest.java │ │ ├── ByteStringToTypeConverterTest.java │ │ ├── EspressoRemoteTest.java │ │ ├── InteractionRequestTest.java │ │ ├── InteractionResponseTest.java │ │ ├── ProtoReflectorTest.java │ │ ├── ProtoUtilsTest.java │ │ ├── RemoteDescriptorRegistryInitializer.java │ │ ├── RemoteDescriptorRegistryTest.java │ │ ├── RemoteDescriptorTest.java │ │ ├── RemoteMessageDeserializerTest.java │ │ ├── RemoteMessageSerializerTest.java │ │ ├── TypeToAnyConverterTest.java │ │ └── TypeToByteStringConverterTest.java │ │ └── web │ │ ├── action │ │ ├── BUILD │ │ └── RemoteWebActionsTest.java │ │ ├── assertion │ │ ├── BUILD │ │ ├── ByteStringToDocumentConverterTest.java │ │ ├── DocumentToByteStringConverterTest.java │ │ ├── GZIPCompressionTest.java │ │ └── RemoteWebAssertionsTest.java │ │ ├── matcher │ │ ├── BUILD │ │ └── RemoteWebMatchersTest.java │ │ ├── model │ │ ├── BUILD │ │ ├── RemoteAtomsTest.java │ │ └── RemoteWebModelAtomsTest.java │ │ ├── sugar │ │ ├── BUILD │ │ └── RemoteWebSugarTest.java │ │ └── webdriver │ │ ├── BUILD │ │ └── RemoteWebDriverAtomsTest.java └── web │ ├── BUILD │ ├── java │ └── androidx │ │ └── test │ │ └── espresso │ │ └── web │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── action │ │ ├── AtomAction.java │ │ ├── BUILD │ │ ├── EnableJavascriptAction.java │ │ ├── EvaluationAtom.java │ │ ├── JavascriptEvaluation.java │ │ └── idls │ │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ └── web │ │ │ └── action │ │ │ └── IAtomActionResultPropagator.aidl │ │ ├── api │ │ ├── 3.4.0_public.txt │ │ ├── 3.5.0_internal.txt │ │ ├── 3.5.0_public.txt │ │ ├── 3.6.0_internal.txt │ │ ├── 3.6.0_public.txt │ │ ├── current_internal.txt │ │ └── current_public.txt │ │ ├── assertion │ │ ├── BUILD │ │ ├── TagSoupDocumentParser.java │ │ ├── WebAssertion.java │ │ └── WebViewAssertions.java │ │ ├── bridge │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── Conduit.java │ │ ├── JavaScriptBoundBridge.java │ │ ├── JavaScriptBridge.java │ │ └── package-info.java │ │ ├── matcher │ │ ├── AmbiguousElementMatcherException.java │ │ ├── BUILD │ │ └── DomMatchers.java │ │ ├── model │ │ ├── Atom.java │ │ ├── Atoms.java │ │ ├── BUILD │ │ ├── ElementReference.java │ │ ├── Evaluation.java │ │ ├── JSONAble.java │ │ ├── ModelCodec.java │ │ ├── SimpleAtom.java │ │ ├── TransformingAtom.java │ │ ├── WindowReference.java │ │ └── idls │ │ │ └── androidx │ │ │ └── test │ │ │ └── espresso │ │ │ └── web │ │ │ └── model │ │ │ └── Evaluation.aidl │ │ ├── proguard_library.cfg │ │ ├── sugar │ │ ├── BUILD │ │ └── Web.java │ │ ├── util │ │ └── concurrent │ │ │ ├── AbstractFuture.java │ │ │ ├── AsyncFunction.java │ │ │ ├── BUILD │ │ │ ├── ChainingListenableFuture.java │ │ │ ├── FutureCallback.java │ │ │ ├── FutureChain.java │ │ │ ├── Futures.java │ │ │ ├── ImmediateFuture.java │ │ │ ├── ListFuture.java │ │ │ └── package-info.java │ │ └── webdriver │ │ ├── BUILD │ │ ├── DriverAtoms.java │ │ ├── Locator.java │ │ └── WebDriverAtomScripts.java │ └── javatests │ └── androidx │ └── test │ └── espresso │ └── web │ ├── action │ ├── BUILD │ └── JavaScriptExecutionActionTest.java │ ├── assertion │ ├── BUILD │ └── WebViewAssertionsTest.java │ ├── matcher │ ├── BUILD │ └── DomMatchersTest.java │ └── model │ ├── BUILD │ ├── ModelCodecTest.java │ └── SimpleAtomTest.java ├── ext ├── junit │ ├── BUILD │ ├── CHANGELOG.md │ ├── LICENSE │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── ext │ │ │ └── junit │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── api │ │ │ ├── 1.1.3_public.txt │ │ │ ├── 1.1.4_internal.txt │ │ │ ├── 1.2.0_internal.txt │ │ │ ├── 1.2.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ │ ├── rules │ │ │ ├── ActivityScenarioRule.java │ │ │ ├── AppComponentFactoryRule.kt │ │ │ └── DeleteFilesRule.java │ │ │ └── runners │ │ │ └── AndroidJUnit4.java │ └── javatests │ │ └── androidx │ │ └── test │ │ └── ext │ │ └── junit │ │ ├── rules │ │ ├── ActivityScenarioRuleTest.java │ │ ├── ActivityScenarioRuleWithCustomIntentTest.java │ │ ├── AppComponentFactoryRuleTest.kt │ │ ├── BUILD │ │ └── DeleteFilesRuleTest.java │ │ └── runners │ │ ├── AndroidJUnit4Test.java │ │ └── BUILD └── truth │ ├── BUILD │ ├── CHANGELOG.md │ ├── LICENSE │ ├── java │ └── androidx │ │ └── test │ │ └── ext │ │ └── truth │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── api │ │ ├── 1.4.0_public.txt │ │ ├── 1.5.0_internal.txt │ │ ├── 1.5.0_public.txt │ │ ├── 1.6.0_internal.txt │ │ ├── 1.6.0_public.txt │ │ ├── current_internal.txt │ │ └── current_public.txt │ │ ├── app │ │ ├── NotificationActionSubject.java │ │ ├── NotificationSubject.java │ │ └── PendingIntentSubject.java │ │ ├── content │ │ ├── IntentCorrespondences.java │ │ └── IntentSubject.java │ │ ├── internal │ │ └── FlagUtil.java │ │ ├── location │ │ ├── LocationCorrespondences.java │ │ └── LocationSubject.java │ │ ├── os │ │ ├── BundleSubject.java │ │ ├── ParcelableSubject.java │ │ └── PersistableBundleSubject.java │ │ ├── util │ │ └── SparseBooleanArraySubject.java │ │ └── view │ │ ├── MotionEventSubject.java │ │ ├── PointerCoordsSubject.java │ │ └── PointerPropertiesSubject.java │ └── javatests │ └── androidx │ └── test │ └── ext │ └── truth │ ├── app │ ├── BUILD │ ├── NotificationActionSubjectTest.java │ └── NotificationSubjectTest.java │ ├── content │ ├── BUILD │ └── IntentSubjectTest.java │ ├── location │ ├── BUILD │ └── LocationSubjectTest.java │ ├── os │ ├── BUILD │ ├── BundleSubjectTest.java │ ├── ParcelableSubjectTest.java │ └── PersistableBundleSubjectTest.java │ └── util │ ├── BUILD │ └── SparseBooleanArraySubjectTest.java ├── gradle-tests ├── .gitignore ├── BUILD.bazel ├── build.gradle ├── espresso │ ├── .gitignore │ ├── accessibility │ │ ├── build.gradle │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── accessibility │ │ │ │ └── EspressoAccessibilityTest.kt │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── accessibility │ │ │ │ └── EspressoAccessibilityActivity.kt │ │ │ └── res │ │ │ ├── layout │ │ │ └── activity_espresso_accessibility.xml │ │ │ └── values │ │ │ └── strings.xml │ ├── build.gradle │ ├── contrib │ │ ├── build.gradle │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── contrib │ │ │ │ └── EspressoContribTest.kt │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── contrib │ │ │ │ ├── CustomAdapter.kt │ │ │ │ └── EspressoContribActivity.kt │ │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_espresso_contrib.xml │ │ │ └── text_row_item.xml │ │ │ └── values │ │ │ └── strings.xml │ ├── device │ │ ├── build.gradle │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── device │ │ │ │ └── EspressoDeviceTest.kt │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── device │ │ │ │ └── ScreenOrientationActivity.kt │ │ │ └── res │ │ │ ├── layout │ │ │ └── activity_screen_orientation.xml │ │ │ └── values │ │ │ └── strings.xml │ ├── idling_resource │ │ ├── build.gradle │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── idling_resource │ │ │ │ └── EspressoIdlingResourceTest.kt │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── idling_resource │ │ │ │ ├── EspressoIdlingResourceActivity.kt │ │ │ │ ├── MessageDelayer.kt │ │ │ │ └── SimpleIdlingResource.kt │ │ │ └── res │ │ │ └── layout │ │ │ └── activity_espresso_idling_resource.xml │ ├── src │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── EspressoTest.kt │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── androidx │ │ │ │ └── test │ │ │ │ └── gradletests │ │ │ │ └── espresso │ │ │ │ └── EspressoActivity.kt │ │ │ └── res │ │ │ └── layout │ │ │ └── activity_espresso.xml │ └── web │ │ ├── build.gradle │ │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── androidx │ │ │ └── test │ │ │ └── gradletests │ │ │ └── espresso │ │ │ └── web │ │ │ └── EspressoWebTest.kt │ │ └── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── gradletests │ │ │ └── espresso │ │ │ └── web │ │ │ └── EspressoWebActivity.kt │ │ └── res │ │ └── layout │ │ └── activity_espresso_web.xml ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── orchestrator │ ├── .gitignore │ ├── build.gradle │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── androidx │ │ │ └── test │ │ │ └── gradletests │ │ │ └── orchestrator │ │ │ └── OrchestratorTest.kt │ │ └── main │ │ └── AndroidManifest.xml ├── runner │ ├── .gitignore │ ├── build.gradle │ ├── gradle.properties │ └── src │ │ └── androidTest │ │ └── java │ │ └── androidx │ │ └── test │ │ └── gradletests │ │ └── runner │ │ └── SimpleTest.java ├── settings.gradle └── settings.gradle.template ├── kokoro ├── axt_build_artifacts.cfg ├── axt_test_artifacts.cfg ├── build_artifacts.sh ├── common.sh └── test_artifacts.sh ├── ktx ├── BUILD ├── LICENSE ├── core │ ├── BUILD │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── core │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── api │ │ │ ├── 1.4.0_public.txt │ │ │ ├── 1.5.0_internal.txt │ │ │ ├── 1.5.0_public.txt │ │ │ ├── 1.6.0_internal.txt │ │ │ ├── 1.6.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ │ └── app │ │ │ └── ActivityScenario.kt │ └── javatests │ │ └── androidx │ │ └── test │ │ └── core │ │ └── app │ │ ├── ActivityScenarioKotlinTest.kt │ │ └── BUILD └── ext │ └── junit │ ├── BUILD │ ├── java │ └── androidx │ │ └── test │ │ └── ext │ │ └── junit │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── api │ │ ├── 1.1.3_public.txt │ │ ├── 1.1.4_internal.txt │ │ ├── 1.2.0_internal.txt │ │ ├── 1.2.0_public.txt │ │ ├── current_internal.txt │ │ └── current_public.txt │ │ └── rules │ │ └── ActivityScenarioRule.kt │ └── javatests │ └── androidx │ └── test │ └── ext │ └── junit │ └── rules │ ├── ActivityScenarioRuleKotlinTest.kt │ ├── ActivityScenarioRuleWithCustomIntentKotlinTest.kt │ └── BUILD ├── opensource ├── BUILD ├── README.md ├── androidx │ └── BUILD ├── dagger │ └── BUILD ├── emulator │ └── proto │ │ ├── BUILD │ │ └── emulator_controller.proto ├── entry_point_deploy.jar ├── gflags.BUILD ├── github.BUILD ├── google-apputils.BUILD ├── mox.BUILD ├── portpicker.BUILD ├── proto │ └── BUILD ├── six.BUILD └── visibility │ └── BUILD ├── proguard_binary.cfg ├── repo.bzl ├── runner ├── LICENSE ├── android_junit_runner │ ├── BUILD │ ├── CHANGELOG.md │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── api │ │ │ ├── 1.4.0_public.txt │ │ │ ├── 1.5.0_internal.txt │ │ │ ├── 1.5.0_public.txt │ │ │ ├── 1.6.0_internal.txt │ │ │ ├── 1.6.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ │ ├── filters │ │ │ ├── AbstractFilter.java │ │ │ ├── CustomFilter.java │ │ │ ├── FlakyTest.java │ │ │ ├── LargeTest.java │ │ │ ├── MediumTest.java │ │ │ ├── RequiresDevice.java │ │ │ ├── SdkSuppress.java │ │ │ ├── SmallTest.java │ │ │ └── Suppress.java │ │ │ ├── internal │ │ │ ├── events │ │ │ │ ├── client │ │ │ │ │ ├── JUnitDescriptionParser.java │ │ │ │ │ ├── JUnitValidator.java │ │ │ │ │ ├── OrchestratedInstrumentationListener.java │ │ │ │ │ ├── TestDiscoveryEventService.java │ │ │ │ │ ├── TestDiscoveryEventServiceConnection.java │ │ │ │ │ ├── TestDiscoveryListener.java │ │ │ │ │ ├── TestEventClient.java │ │ │ │ │ ├── TestEventClientArgs.java │ │ │ │ │ ├── TestEventClientConnectListener.java │ │ │ │ │ ├── TestEventClientException.java │ │ │ │ │ ├── TestEventServiceConnection.java │ │ │ │ │ ├── TestEventServiceConnectionBase.java │ │ │ │ │ ├── TestPlatformEventService.java │ │ │ │ │ ├── TestPlatformEventServiceConnection.java │ │ │ │ │ ├── TestPlatformListener.java │ │ │ │ │ ├── TestRunEventService.java │ │ │ │ │ ├── TestRunEventServiceConnection.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ ├── runner │ │ │ │ ├── AndroidLogOnlyBuilder.java │ │ │ │ ├── AndroidRunnerBuilder.java │ │ │ │ ├── ClassPathScanner.java │ │ │ │ ├── ClassesArgTokenizer.java │ │ │ │ ├── DirectTestLoader.java │ │ │ │ ├── EmptyTestRunner.java │ │ │ │ ├── ErrorReportingRunner.java │ │ │ │ ├── NonExecutingRunner.java │ │ │ │ ├── RunnerArgs.java │ │ │ │ ├── ScanningTestLoader.java │ │ │ │ ├── TestExecutor.java │ │ │ │ ├── TestLoader.java │ │ │ │ ├── TestRequestBuilder.java │ │ │ │ ├── TestSize.java │ │ │ │ ├── coverage │ │ │ │ │ ├── InstrumentationCoverageReporter.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── filters │ │ │ │ │ ├── TestsRegExFilter.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── junit3 │ │ │ │ │ ├── AndroidJUnit3Builder.java │ │ │ │ │ ├── AndroidSuiteBuilder.java │ │ │ │ │ ├── AndroidTestResult.java │ │ │ │ │ ├── AndroidTestSuite.java │ │ │ │ │ ├── DelegatingFilterableTestSuite.java │ │ │ │ │ ├── DelegatingTestResult.java │ │ │ │ │ ├── DelegatingTestSuite.java │ │ │ │ │ ├── JUnit38ClassRunner.java │ │ │ │ │ ├── NonExecutingTestResult.java │ │ │ │ │ ├── NonExecutingTestSuite.java │ │ │ │ │ ├── NonLeakyTestSuite.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── junit4 │ │ │ │ │ ├── AndroidAnnotatedBuilder.java │ │ │ │ │ ├── AndroidJUnit4Builder.java │ │ │ │ │ ├── AndroidJUnit4ClassRunner.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── statement │ │ │ │ │ │ ├── RunAfters.java │ │ │ │ │ │ ├── RunBefores.java │ │ │ │ │ │ ├── UiThreadStatement.java │ │ │ │ │ │ └── package-info.java │ │ │ │ ├── listener │ │ │ │ │ ├── ActivityFinisherRunListener.java │ │ │ │ │ ├── CoverageListener.java │ │ │ │ │ ├── DelayInjector.java │ │ │ │ │ ├── InstrumentationResultPrinter.java │ │ │ │ │ ├── InstrumentationRunListener.java │ │ │ │ │ ├── LogRunListener.java │ │ │ │ │ ├── SuiteAssignmentPrinter.java │ │ │ │ │ ├── TraceRunListener.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ └── tracker │ │ │ │ │ ├── AnalyticsBasedUsageTracker.java │ │ │ │ │ ├── UsageTracker.java │ │ │ │ │ ├── UsageTrackerRegistry.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── package.html │ │ │ └── util │ │ │ │ ├── AndroidRunnerBuilderUtil.java │ │ │ │ ├── AndroidRunnerParams.java │ │ │ │ └── package-info.java │ │ │ ├── orchestrator │ │ │ ├── callback │ │ │ │ ├── BundleConverter.java │ │ │ │ ├── NoOpOrchestratorConnection.java │ │ │ │ ├── OrchestratorCallback.aidl │ │ │ │ └── OrchestratorV1Connection.java │ │ │ ├── junit │ │ │ │ ├── BundleJUnitUtils.java │ │ │ │ ├── ParcelableDescription.java │ │ │ │ ├── ParcelableFailure.java │ │ │ │ └── ParcelableResult.java │ │ │ └── listeners │ │ │ │ ├── OrchestrationListenerManager.java │ │ │ │ ├── OrchestrationRunListener.java │ │ │ │ └── result │ │ │ │ ├── ITestRunListener.java │ │ │ │ ├── TestIdentifier.java │ │ │ │ ├── TestResult.java │ │ │ │ └── TestRunResult.java │ │ │ ├── proguard_library.cfg │ │ │ └── runner │ │ │ ├── AndroidJUnit4.java │ │ │ ├── AndroidJUnitRunner.java │ │ │ ├── UsageTrackerFacilitator.java │ │ │ ├── intercepting │ │ │ └── SingleActivityFactory.java │ │ │ ├── permission │ │ │ ├── GrantPermissionCallable.java │ │ │ ├── PermissionRequester.java │ │ │ ├── RequestPermissionCallable.java │ │ │ ├── ShellCommand.java │ │ │ ├── UiAutomationPermissionGranter.java │ │ │ └── UiAutomationShellCommand.java │ │ │ ├── screenshot │ │ │ ├── BasicScreenCaptureProcessor.java │ │ │ ├── ScreenCapture.java │ │ │ ├── ScreenCaptureProcessor.java │ │ │ ├── Screenshot.java │ │ │ ├── TakeScreenshotCallable.java │ │ │ └── UiAutomationWrapper.java │ │ │ └── suites │ │ │ ├── AndroidClasspathSuite.java │ │ │ └── PackagePrefixClasspathSuite.java │ └── javatests │ │ └── androidx │ │ └── test │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── FailureAssumptionTest.java │ │ ├── JUnit3HogTest.java │ │ ├── JUnit4CategoryTest.java │ │ ├── JUnit4HogTest.java │ │ ├── JUnitTestSuiteTest.java │ │ ├── MyAndroidTestCase.java │ │ ├── MyEmptyTest.java │ │ ├── MyInstrumentationTestCase.java │ │ ├── MyParameterizedTest.java │ │ ├── MyTestSuiteBuilder.java │ │ ├── ParameterizedWithCommaTest.java │ │ ├── ParameterizedWithHashTest.java │ │ ├── SimpleTest.java │ │ ├── TheoriesAndTestsTogether.java │ │ ├── TimeoutTest.java │ │ ├── build_defs.bzl │ │ ├── internal │ │ ├── events │ │ │ └── client │ │ │ │ ├── BUILD │ │ │ │ ├── JUnitDescriptionParserTest.java │ │ │ │ ├── OrchestratedInstrumentationListenerTest.java │ │ │ │ ├── SampleJUnitTest.java │ │ │ │ ├── TestDiscoveryListenerTest.java │ │ │ │ ├── TestEventClientArgsTest.java │ │ │ │ ├── TestEventClientTest.java │ │ │ │ ├── TestEventServiceConnectionBaseTest.java │ │ │ │ └── TestPlatformListenerTest.java │ │ └── runner │ │ │ ├── AndroidLogOnlyBuilderTest.java │ │ │ ├── AndroidManifest.xml │ │ │ ├── AndroidRunnerBuilderTest.java │ │ │ ├── BUILD │ │ │ ├── ClassPathScannerTest.java │ │ │ ├── DirectTestLoaderTest.java │ │ │ ├── ExcludePackageNameFilterTest.java │ │ │ ├── ExternalClassNameFilterTest.java │ │ │ ├── InclusivePackageNamesFilterTest.java │ │ │ ├── RunnerArgsTest.java │ │ │ ├── ScanningTestLoaderTest.java │ │ │ ├── SdkSuppressTest.java │ │ │ ├── TestExecutorTest.java │ │ │ ├── TestRequestBuilderLocalTest.java │ │ │ ├── TestRequestBuilderTest.java │ │ │ ├── TestSizeTest.java │ │ │ ├── coverage │ │ │ ├── BUILD │ │ │ └── InstrumentationCoverageReporterTest.java │ │ │ ├── filters │ │ │ ├── BUILD │ │ │ └── TestsRegExFilterTest.java │ │ │ ├── intent │ │ │ ├── BUILD │ │ │ └── IntentMonitorImplTest.java │ │ │ ├── junit4 │ │ │ ├── AndroidAnnotatedBuilderTest.java │ │ │ ├── BUILD │ │ │ └── statement │ │ │ │ ├── BUILD │ │ │ │ ├── UiThreadStatementTest.java │ │ │ │ ├── UiThreadTestInterface.java │ │ │ │ ├── UiThreadTestOnClass.java │ │ │ │ ├── UiThreadTestOnImplementedInterface.java │ │ │ │ ├── UiThreadTestOnMethod.java │ │ │ │ └── UiThreadTestOnSuperclass.java │ │ │ ├── lifecycle │ │ │ ├── ActivityLifecycleMonitorImplTest.java │ │ │ ├── AndroidManifest.xml │ │ │ ├── ApplicationLifecycleMonitorTest.java │ │ │ └── BUILD │ │ │ └── listener │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── CoverageListenerTest.java │ │ │ ├── InstrumentationResultPrinterTest.java │ │ │ ├── ManifestListenerTest.java │ │ │ └── SuiteAssignmentPrinterTest.java │ │ ├── orchestrator │ │ ├── BUILD │ │ ├── SampleJUnitTest.java │ │ ├── callback │ │ │ ├── BUILD │ │ │ ├── BundleConverterTest.java │ │ │ └── OrchestratorV1ConnectionTest.java │ │ ├── junit │ │ │ ├── BUILD │ │ │ └── BundleJUnitUtilsTest.java │ │ └── listeners │ │ │ ├── BUILD │ │ │ └── OrchestrationListenerManagerTest.java │ │ ├── runner │ │ ├── AndroidJUnit4RoboTest.java │ │ ├── AndroidJUnitRunnerTest.java │ │ ├── BUILD │ │ ├── TraceRunListenerTest.java │ │ ├── permission │ │ │ ├── BUILD │ │ │ ├── GrantPermissionCallableTest.java │ │ │ ├── PermissionRequesterTest.java │ │ │ └── UiAutomationShellCommandTest.java │ │ └── screenshot │ │ │ ├── BUILD │ │ │ ├── BasicScreenCaptureProcessorTest.java │ │ │ ├── ScreenCaptureTest.java │ │ │ ├── ScreenshotTest.java │ │ │ └── TakeScreenshotCallableTest.java │ │ └── testing │ │ └── fixtures │ │ ├── AbstractTest.java │ │ ├── AppLifecycleListener.java │ │ ├── BUILD │ │ ├── BrokenCustomTestFilter.java │ │ ├── BrokenRunnerBuilder.java │ │ ├── CollectingRunListener.java │ │ ├── CustomRunnerBuilder.java │ │ ├── CustomTest.java │ │ ├── CustomTestFilter.java │ │ ├── CustomTestFilterTakesBundle.java │ │ ├── EmptyJUnit3Test.java │ │ ├── EmptyJUnit4Test.java │ │ ├── JUnit3FailingTestCase.java │ │ ├── JUnit3FailingTestSuite.java │ │ ├── JUnit3FailingTestSuiteWithSuite.java │ │ ├── JUnit3StyleTimeoutClass.java │ │ ├── JUnit3SuiteWithTest.java │ │ ├── JUnit3Test.java │ │ ├── JUnit4Failing.java │ │ ├── JUnit4Ignored.java │ │ ├── JUnit4ParameterizedTest.java │ │ ├── JUnit4RunTest.java │ │ ├── JUnit4Test.java │ │ ├── ManifestListener.java │ │ ├── MyApplication.java │ │ ├── NotATest.java │ │ ├── RunWithAndroidJUnit4Failing.java │ │ ├── RunWithJUnit4Failing.java │ │ ├── SampleJUnit3Test.java │ │ ├── SubClassAbstractTest.java │ │ └── SubClassJUnit4Test.java ├── android_test_orchestrator │ ├── BUILD │ ├── CHANGELOG.md │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── orchestrator │ │ │ ├── AndroidTestOrchestrator.java │ │ │ ├── BUILD │ │ │ ├── CallbackLogic.java │ │ │ ├── OrchestratorConstants.java │ │ │ ├── OrchestratorService.java │ │ │ ├── TestRunnable.java │ │ │ └── listeners │ │ │ ├── OrchestrationResult.java │ │ │ ├── OrchestrationResultPrinter.java │ │ │ ├── TextListener.java │ │ │ └── result │ │ │ ├── BUILD │ │ │ └── LICENSE │ ├── javatests │ │ └── androidx │ │ │ └── test │ │ │ └── orchestrator │ │ │ ├── AndroidTestOrchestratorTest.java │ │ │ ├── BUILD │ │ │ ├── TestCoverageTest.java │ │ │ └── TestRunnableTest.java │ └── stubapp │ │ ├── BUILD │ │ ├── proguard_binary.cfg │ │ └── src │ │ ├── AndroidManifest.xml │ │ └── androidx │ │ └── test │ │ └── orchestrator │ │ └── Orchestrator.java ├── monitor │ ├── BUILD │ ├── CHANGELOG.md │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── InstrumentationRegistry.java │ │ │ ├── annotation │ │ │ └── Beta.java │ │ │ ├── api │ │ │ ├── 1.4.0.txt │ │ │ ├── 1.5.0_internal.txt │ │ │ ├── 1.5.0_public.txt │ │ │ ├── 1.6.0_internal.txt │ │ │ ├── 1.6.0_public.txt │ │ │ ├── 1.7.0_internal.txt │ │ │ ├── 1.7.0_public.txt │ │ │ ├── current_internal.txt │ │ │ └── current_public.txt │ │ │ ├── internal │ │ │ ├── platform │ │ │ │ ├── ServiceLoaderWrapper.java │ │ │ │ ├── Supersedes.java │ │ │ │ ├── ThreadChecker.java │ │ │ │ ├── app │ │ │ │ │ ├── ActivityInvoker$$CC.java │ │ │ │ │ ├── ActivityInvoker.java │ │ │ │ │ ├── ActivityInvokerDesugar.java │ │ │ │ │ └── ActivityLifecycleTimeout.java │ │ │ │ ├── content │ │ │ │ │ └── PermissionGranter.java │ │ │ │ ├── os │ │ │ │ │ └── ControlledLooper.java │ │ │ │ ├── reflect │ │ │ │ │ ├── ReflectionException.java │ │ │ │ │ ├── ReflectiveField.java │ │ │ │ │ └── ReflectiveMethod.java │ │ │ │ └── util │ │ │ │ │ ├── InstrumentationParameterUtil.java │ │ │ │ │ ├── TestOutputEmitter.java │ │ │ │ │ └── TestOutputHandler.java │ │ │ ├── runner │ │ │ │ ├── InstrumentationConnection.java │ │ │ │ ├── hidden │ │ │ │ │ └── ExposedInstrumentationApi.java │ │ │ │ ├── intent │ │ │ │ │ └── IntentMonitorImpl.java │ │ │ │ ├── intercepting │ │ │ │ │ ├── DefaultInterceptingActivityFactory.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── lifecycle │ │ │ │ │ ├── ActivityLifecycleMonitorImpl.java │ │ │ │ │ └── ApplicationLifecycleMonitorImpl.java │ │ │ │ └── runtime │ │ │ │ │ └── ExposedInstrumentationApi.java │ │ │ └── util │ │ │ │ ├── Checks.java │ │ │ │ ├── LogUtil.java │ │ │ │ ├── ParcelableIBinder.java │ │ │ │ ├── ProcSummary.java │ │ │ │ └── ReflectionUtil.java │ │ │ ├── jarjar.txt │ │ │ ├── platform │ │ │ ├── TestFrameworkException.java │ │ │ ├── app │ │ │ │ ├── AppComponentFactoryRegistry.kt │ │ │ │ └── InstrumentationRegistry.java │ │ │ ├── concurrent │ │ │ │ └── DirectExecutor.java │ │ │ ├── device │ │ │ │ ├── DeviceController.java │ │ │ │ └── UnsupportedDeviceOperationException.java │ │ │ ├── graphics │ │ │ │ └── HardwareRendererCompat.java │ │ │ ├── io │ │ │ │ ├── FileTestStorage.java │ │ │ │ ├── PlatformTestStorage.java │ │ │ │ ├── PlatformTestStorageRegistry.java │ │ │ │ └── TestDirCalculator.kt │ │ │ ├── tracing │ │ │ │ ├── AndroidXTracer.java │ │ │ │ ├── Tracer.java │ │ │ │ └── Tracing.java │ │ │ ├── ui │ │ │ │ ├── InjectEventSecurityException.java │ │ │ │ └── UiController.java │ │ │ └── view │ │ │ │ └── inspector │ │ │ │ └── WindowInspectorCompat.java │ │ │ ├── proguard_library.cfg │ │ │ └── runner │ │ │ ├── MonitoringInstrumentation.java │ │ │ ├── intent │ │ │ ├── IntentCallback.java │ │ │ ├── IntentMonitor.java │ │ │ ├── IntentMonitorRegistry.java │ │ │ ├── IntentStubber.java │ │ │ └── IntentStubberRegistry.java │ │ │ ├── intercepting │ │ │ └── InterceptingActivityFactory.java │ │ │ └── lifecycle │ │ │ ├── ActivityLifecycleCallback.java │ │ │ ├── ActivityLifecycleMonitor.java │ │ │ ├── ActivityLifecycleMonitorRegistry.java │ │ │ ├── ApplicationLifecycleCallback.java │ │ │ ├── ApplicationLifecycleMonitor.java │ │ │ ├── ApplicationLifecycleMonitorRegistry.java │ │ │ ├── ApplicationStage.java │ │ │ └── Stage.java │ └── javatests │ │ └── androidx │ │ └── test │ │ ├── BUILD │ │ ├── InstrumentationRegistryTest.java │ │ ├── internal │ │ ├── platform │ │ │ ├── BUILD │ │ │ ├── ServiceFixture.java │ │ │ ├── ServiceFixtureImpl.java │ │ │ ├── ServiceLoaderWrapperTest.java │ │ │ ├── reflect │ │ │ │ ├── BUILD │ │ │ │ ├── ReflectiveFieldTest.java │ │ │ │ └── ReflectiveMethodTest.java │ │ │ └── util │ │ │ │ ├── BUILD │ │ │ │ └── InstrumentationParameterUtilTest.java │ │ ├── runner │ │ │ ├── BUILD │ │ │ └── InstrumentationConnectionTest.java │ │ └── util │ │ │ ├── BUILD │ │ │ └── LogUtilsTest.java │ │ ├── platform │ │ ├── app │ │ │ ├── AppComponentFactoryRegistryTest.kt │ │ │ ├── BUILD │ │ │ └── InstrumentationRegistryTest.java │ │ ├── graphics │ │ │ ├── BUILD │ │ │ ├── HardwareRendererCompatRenderingDisabledTest.java │ │ │ └── HardwareRendererCompatUnsupportedTest.java │ │ ├── io │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── FileTestStorageTest.kt │ │ │ ├── PlatformTestStorageRegistryTest.java │ │ │ └── assets │ │ │ │ └── testinput.txt │ │ ├── tracing │ │ │ ├── AndroidXTracerTest.java │ │ │ ├── BUILD │ │ │ └── TracingTest.java │ │ └── view │ │ │ └── inspector │ │ │ ├── BUILD │ │ │ ├── WindowInspectorCompatTest.kt │ │ │ └── fixtures │ │ │ ├── ActivityWithDialog.kt │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── SimpleActivity.kt │ │ │ └── res │ │ │ └── layout │ │ │ └── simple_activity.xml │ │ └── runner │ │ ├── BUILD │ │ ├── MonitoringInstrumentationTest.java │ │ └── intent │ │ ├── BUILD │ │ ├── IntentMonitorRegistryTest.java │ │ └── IntentStubberRegistryTest.java └── rules │ ├── BUILD │ ├── CHANGELOG.md │ ├── java │ └── androidx │ │ └── test │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── annotation │ │ └── UiThreadTest.java │ │ ├── api │ │ ├── 1.4.0_public.txt │ │ ├── 1.5.0_internal.txt │ │ ├── 1.5.0_public.txt │ │ ├── 1.6.0_internal.txt │ │ ├── 1.6.0_public.txt │ │ ├── current_internal.txt │ │ └── current_public.txt │ │ ├── proguard.cfg │ │ └── rule │ │ ├── ActivityTestRule.java │ │ ├── DisableOnAndroidDebug.java │ │ ├── GrantPermissionRule.java │ │ ├── PortForwardingRule.java │ │ ├── ServiceTestRule.java │ │ ├── UiThreadTestRule.java │ │ ├── logging │ │ └── AtraceLogger.java │ │ └── provider │ │ ├── DatabaseArgs.java │ │ ├── DelegatingContext.java │ │ ├── ProviderArgs.java │ │ └── ProviderTestRule.java │ └── javatests │ └── androidx │ └── test │ └── rule │ ├── ActivityTestRuleTest.java │ ├── AndroidManifest_activitytestrule.xml │ ├── AndroidManifest_servicetestrule.xml │ ├── AndroidManifest_testlibrary.xml │ ├── AndroidTimeoutUiTest.java │ ├── BUILD │ ├── DisableOnAndroidDebugTest.java │ ├── GrantPermissionRuleTest.java │ ├── PortForwardingRuleTest.java │ ├── ServiceTestRuleTest.java │ ├── UiThreadTestRuleTest.java │ ├── logging │ ├── AtraceLoggerTest.kt │ └── BUILD │ └── provider │ ├── BUILD │ └── DelegatingContextTest.java ├── services ├── AndroidManifest.xml ├── BUILD ├── CHANGELOG.md ├── LICENSE ├── events │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── services │ │ │ └── events │ │ │ ├── AnnotationInfo.java │ │ │ ├── AnnotationValue.java │ │ │ ├── BUILD │ │ │ ├── ErrorInfo.java │ │ │ ├── FailureInfo.java │ │ │ ├── ParcelableConverter.java │ │ │ ├── TestCaseInfo.aidl │ │ │ ├── TestCaseInfo.java │ │ │ ├── TestEventException.java │ │ │ ├── TestRunInfo.java │ │ │ ├── TestStatus.java │ │ │ ├── TimeStamp.java │ │ │ ├── discovery │ │ │ ├── ITestDiscoveryEvent.aidl │ │ │ ├── TestDiscoveryErrorEvent.java │ │ │ ├── TestDiscoveryEvent.aidl │ │ │ ├── TestDiscoveryEvent.java │ │ │ ├── TestDiscoveryEventFactory.java │ │ │ ├── TestDiscoveryFinishedEvent.java │ │ │ ├── TestDiscoveryStartedEvent.java │ │ │ ├── TestFoundEvent.java │ │ │ └── package-info.java │ │ │ ├── internal │ │ │ ├── StackTrimmer.java │ │ │ ├── Throwables.java │ │ │ └── package-info.java │ │ │ ├── package-info.java │ │ │ ├── platform │ │ │ ├── ITestPlatformEvent.aidl │ │ │ ├── TestCaseErrorEvent.java │ │ │ ├── TestCaseFinishedEvent.java │ │ │ ├── TestCaseStartedEvent.java │ │ │ ├── TestPlatformEvent.aidl │ │ │ ├── TestPlatformEvent.java │ │ │ ├── TestPlatformEventFactory.java │ │ │ ├── TestRunErrorEvent.java │ │ │ ├── TestRunFinishedEvent.java │ │ │ ├── TestRunStartedEvent.java │ │ │ └── package-info.java │ │ │ └── run │ │ │ ├── ITestRunEvent.aidl │ │ │ ├── TestAssumptionFailureEvent.java │ │ │ ├── TestFailureEvent.java │ │ │ ├── TestFinishedEvent.java │ │ │ ├── TestIgnoredEvent.java │ │ │ ├── TestRunEvent.aidl │ │ │ ├── TestRunEvent.java │ │ │ ├── TestRunEventFactory.java │ │ │ ├── TestRunEventWithTestCase.java │ │ │ ├── TestRunFinishedEvent.java │ │ │ ├── TestRunStartedEvent.java │ │ │ ├── TestStartedEvent.java │ │ │ └── package-info.java │ └── javatests │ │ └── androidx │ │ └── test │ │ └── services │ │ └── events │ │ ├── BUILD │ │ ├── ErrorInfoTest.java │ │ ├── FailureInfoTest.java │ │ ├── ParcelableConverterTest.java │ │ ├── TestCaseInfoTest.java │ │ ├── TestRunInfoTest.java │ │ ├── TestStatusTest.java │ │ ├── TimeStampEmulatorTest.java │ │ ├── TimeStampTest.java │ │ ├── discovery │ │ ├── BUILD │ │ ├── TestDiscoveryFinishedEventTest.java │ │ ├── TestDiscoveryStartedEventTest.java │ │ └── TestFoundEventTest.java │ │ ├── internal │ │ ├── BUILD │ │ └── StackTrimmerTest.java │ │ ├── platform │ │ ├── BUILD │ │ ├── TestCaseErrorEventTest.java │ │ ├── TestCaseFinishedEventTest.java │ │ ├── TestCaseStartedEventTest.java │ │ ├── TestRunErrorEventTest.java │ │ ├── TestRunFinishedEventTest.java │ │ └── TestRunStartedEventTest.java │ │ └── run │ │ ├── BUILD │ │ ├── TestAssumptionFailureEventTest.java │ │ ├── TestFailureEventTest.java │ │ ├── TestFinishedEventTest.java │ │ ├── TestIgnoredEventTest.java │ │ ├── TestRunFinishedEventTest.java │ │ ├── TestRunStartedEventTest.java │ │ └── TestStartedEventTest.java ├── proguard_library.cfg ├── shellexecutor │ ├── BUILD │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── services │ │ │ └── shellexecutor │ │ │ ├── BUILD │ │ │ ├── BlockingFind.java │ │ │ ├── BlockingPublish.java │ │ │ ├── ClientNotConnected.java │ │ │ ├── Command.aidl │ │ │ ├── LocalSocketProtocol.kt │ │ │ ├── LocalSocketShellMain.kt │ │ │ ├── Messages.kt │ │ │ ├── ShellCommand.java │ │ │ ├── ShellCommandClient.java │ │ │ ├── ShellCommandExecutor.java │ │ │ ├── ShellCommandExecutorServer.java │ │ │ ├── ShellCommandLocalSocketClient.kt │ │ │ ├── ShellCommandLocalSocketExecutorServer.kt │ │ │ ├── ShellExecSharedConstants.java │ │ │ ├── ShellExecutor.java │ │ │ ├── ShellExecutorFactory.java │ │ │ ├── ShellExecutorImpl.java │ │ │ ├── ShellExecutorLocalSocketImpl.kt │ │ │ ├── ShellMain.java │ │ │ └── local_socket_protocol.proto │ └── javatests │ │ └── androidx │ │ └── test │ │ └── services │ │ └── shellexecutor │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── DummyActivity.java │ │ ├── ShellCommandClientTest.java │ │ ├── ShellCommandExecutorTest.java │ │ ├── ShellCommandLocalSocketClientTest.kt │ │ ├── ShellCommandLocalSocketExecutorServerTest.kt │ │ ├── ShellCommandTest.java │ │ └── ShellExecutorTest.java ├── speakeasy │ ├── README.md │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── services │ │ │ └── speakeasy │ │ │ ├── BUILD │ │ │ ├── SpeakEasyProtocol.java │ │ │ ├── client │ │ │ ├── AppConnection.java │ │ │ ├── BUILD │ │ │ ├── Connection.java │ │ │ ├── FindResultReceiver.java │ │ │ ├── PublishResultReceiver.java │ │ │ └── ToolConnection.java │ │ │ ├── compilehelp │ │ │ └── hidden_api │ │ │ │ ├── ActivityManagerNative.java │ │ │ │ ├── BUILD │ │ │ │ ├── IActivityManager.java │ │ │ │ ├── IApplicationThread.java │ │ │ │ └── IContentProvider.java │ │ │ └── server │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── SpeakEasy.java │ │ │ ├── SpeakEasyContentProvider.java │ │ │ ├── SpeakEasyService.java │ │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ └── ic_shortcut_axt_logo.png │ │ │ ├── drawable-mdpi │ │ │ └── ic_shortcut_axt_logo.png │ │ │ ├── drawable-xhdpi │ │ │ └── ic_shortcut_axt_logo.png │ │ │ ├── drawable-xxhdpi │ │ │ └── ic_shortcut_axt_logo.png │ │ │ ├── drawable-xxxhdpi │ │ │ └── ic_shortcut_axt_logo.png │ │ │ └── values │ │ │ └── id.xml │ └── javatests │ │ └── androidx │ │ └── test │ │ └── services │ │ └── speakeasy │ │ ├── BUILD │ │ ├── SpeakEasyProtocolTest.java │ │ ├── client │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── Reverser.java │ │ ├── SpeakEasyClientTest.java │ │ ├── reverser_deamon.sh │ │ └── testapp │ │ │ ├── AndroidManifest.xml │ │ │ └── BUILD │ │ └── server │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ └── SpeakEasyTest.java └── storage │ ├── BUILD │ ├── java │ └── androidx │ │ └── test │ │ └── services │ │ └── storage │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── TestStorage.java │ │ ├── TestStorageConstants.java │ │ ├── TestStorageException.java │ │ ├── api │ │ ├── 1.4.0.txt │ │ ├── 1.4.1_internal.txt │ │ ├── 1.4.1_public.txt │ │ ├── 1.4.2_internal.txt │ │ ├── 1.5.0_internal.txt │ │ ├── 1.5.0_public.txt │ │ ├── current_internal.txt │ │ └── current_public.txt │ │ ├── file │ │ ├── BUILD │ │ ├── HostedFile.java │ │ └── PropertyFile.java │ │ ├── internal │ │ ├── TestStorageUtil.java │ │ ├── package-info.java │ │ └── package.html │ │ ├── provider │ │ ├── AbstractFileContentProvider.java │ │ ├── AndroidManifest.xml │ │ ├── AndroidManifest_opensource.xml │ │ ├── BUILD │ │ ├── ExportTestPropertiesContentProvider.java │ │ ├── InternalUseOnlyFilesContentProvider.java │ │ ├── StorageContentProviderException.java │ │ ├── TestArgsContentProvider.java │ │ ├── TestDataContentProvider.java │ │ ├── TestFileContentProvider.java │ │ └── TestOutputFilesContentProvider.java │ │ └── test_storage_service.proto │ └── javatests │ └── androidx │ └── test │ └── services │ └── storage │ ├── BUILD │ ├── TestStorageTest.java │ ├── provider │ ├── AndroidManifest.xml │ ├── AndroidManifest_opensource.xml │ ├── AndroidManifest_stub.xml │ ├── BUILD │ ├── TestArgsContentProviderTest.java │ └── TestFileContentProviderTest.java │ └── testinput.txt ├── six.BUILD ├── testapps ├── foldable_testapp │ └── java │ │ └── androidx │ │ └── test │ │ └── foldable │ │ └── app │ │ ├── AndroidManifest.xml │ │ ├── AndroidManifest_opensource.xml │ │ ├── BUILD │ │ ├── FoldableActivity.java │ │ ├── FoldableActivityWithConfigHandling.java │ │ ├── WindowLayoutInfoConsumer.java │ │ └── res │ │ ├── drawable-hdpi │ │ └── ic_launcher.png │ │ ├── drawable-ldpi │ │ └── ic_launcher.png │ │ ├── drawable-mdpi │ │ └── ic_launcher.png │ │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ │ ├── layout │ │ ├── foldable_activity.xml │ │ └── foldable_activity_with_config_handling.xml │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml ├── multidex_testapp │ └── java │ │ └── androidx │ │ └── test │ │ └── multidex │ │ └── app │ │ ├── AndroidManifest.xml │ │ ├── BUILD │ │ ├── MultiDexActivity.java │ │ ├── MultiDexApplication.java │ │ ├── main_dex_list.txt │ │ └── res │ │ └── values │ │ └── strings.xml ├── multiprocess_testapp │ ├── java │ │ └── androidx │ │ │ └── test │ │ │ └── multiprocess │ │ │ └── app │ │ │ ├── AndroidManifest.xml │ │ │ ├── BUILD │ │ │ ├── DefaultProcessActivity.java │ │ │ ├── GlobalProcessActivity.java │ │ │ ├── IdlingActivity.java │ │ │ ├── MainActivity.java │ │ │ ├── PrivateProcessActivity.java │ │ │ ├── Util.java │ │ │ ├── WebViewActivity.java │ │ │ ├── assets │ │ │ ├── web_form.html │ │ │ └── web_form_response.html │ │ │ ├── idling │ │ │ ├── MessageDelayer.java │ │ │ └── SimpleIdlingResource.java │ │ │ └── res │ │ │ ├── layout │ │ │ ├── activity_main.xml │ │ │ ├── activity_process_default.xml │ │ │ ├── activity_process_private.xml │ │ │ ├── activity_web_view.xml │ │ │ └── idling_activity.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ └── strings.xml │ └── javatests │ │ └── androidx │ │ └── test │ │ └── multiprocess │ │ └── app │ │ ├── AndroidManifest.xml │ │ ├── AndroidManifest_global.xml │ │ ├── AndroidManifest_idling.xml │ │ ├── AndroidManifest_opensource.xml │ │ ├── AndroidManifest_private.xml │ │ ├── BUILD │ │ ├── DefaultProcessActivityTest.java │ │ ├── GlobalProcessActivityTest.java │ │ ├── IdlingActivityTest.java │ │ ├── MainActivityTest.java │ │ ├── PrivateProcessActivityTest.java │ │ └── WebViewActivityTest.java ├── multiwindow_testapp │ └── java │ │ └── androidx │ │ └── test │ │ └── multiwindow │ │ └── app │ │ ├── AndroidManifest.xml │ │ ├── AndroidManifest_opensource.xml │ │ ├── BUILD │ │ ├── MultiWindowActivity.java │ │ ├── MultiWindowWithConfigChangesActivity.java │ │ └── res │ │ ├── drawable-hdpi │ │ └── ic_launcher.png │ │ ├── drawable-ldpi │ │ └── ic_launcher.png │ │ ├── drawable-mdpi │ │ └── ic_launcher.png │ │ ├── drawable-xhdpi │ │ └── ic_launcher.png │ │ ├── layout │ │ ├── multiwindow_activity.xml │ │ └── multiwindow_with_config_changes_activity.xml │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml └── ui_testapp │ ├── java │ └── androidx │ │ └── test │ │ └── ui │ │ └── app │ │ ├── ActionBarSearchActivity.java │ │ ├── ActionBarTestActivity.java │ │ ├── AndroidManifest.xml │ │ ├── AndroidManifest_opensource.xml │ │ ├── BUILD │ │ ├── ChatHeadActivity.java │ │ ├── ChatHeadService.java │ │ ├── CursorAdapterActivity.java │ │ ├── CursorAdapterListFragment.java │ │ ├── DelayedDialogActivity.java │ │ ├── DelegatingEditText.java │ │ ├── DisplayActivity.java │ │ ├── DividerItemDecoration.java │ │ ├── DrawerActivity.java │ │ ├── DuplicateViewActivity.java │ │ ├── FragmentStack.java │ │ ├── GestureActivity.java │ │ ├── IdlingUIActivity.java │ │ ├── InterceptingActivity.java │ │ ├── ItemListAdapter.java │ │ ├── KeyboardTestActivity.java │ │ ├── LargeViewActivity.java │ │ ├── LayoutIssuesActivity.java │ │ ├── LongListActivity.java │ │ ├── MainActivity.java │ │ ├── MenuActivity.java │ │ ├── NavigationViewActivity.java │ │ ├── PaddingActivity.java │ │ ├── PickActivity.java │ │ ├── PickersActivity.java │ │ ├── RecyclerViewActivity.java │ │ ├── RecyclerViewFragment.java │ │ ├── ResourcesManifest.xml │ │ ├── RuntimePermissionsActivity.java │ │ ├── ScaledViewActivity.java │ │ ├── ScreenOrientationActivity.java │ │ ├── ScreenOrientationWithoutOnConfigurationChangedActivity.java │ │ ├── ScrollActivity.java │ │ ├── SendActivity.java │ │ ├── SimpleActivity.java │ │ ├── SimplePagerAdapter.java │ │ ├── SimpleWebViewActivity.java │ │ ├── SlidingTabLayout.java │ │ ├── SlidingTabStrip.java │ │ ├── SwipeActivity.java │ │ ├── SyncActivity.java │ │ ├── ToolbarActivity.java │ │ ├── TransitionActivityItem.java │ │ ├── TransitionActivityMain.java │ │ ├── TransitionActivitySquareFrameLayout.java │ │ ├── TransitionDetailActivity.java │ │ ├── TruncatedViewHierarchyActivity.java │ │ ├── VerticalViewPager.java │ │ ├── VerticalViewPagerActivity.java │ │ ├── VeryLongListViewActivity.java │ │ ├── ViewPagerActivity.java │ │ ├── ViewWithTextAllCapsActivity.java │ │ ├── WebFormActivity.java │ │ ├── assets │ │ └── samples │ │ │ ├── bar.html │ │ │ ├── form_response.html │ │ │ ├── frames.html │ │ │ ├── js.html │ │ │ ├── navigation_1.html │ │ │ ├── navigation_2.html │ │ │ ├── navigation_3.html │ │ │ └── simple_form.html │ │ ├── provider │ │ ├── FlightsContentProvider.java │ │ ├── FlightsDatabaseContract.java │ │ └── SimpleFileContentProvider.java │ │ └── res │ │ ├── color │ │ └── tab_text_color.xml │ │ ├── drawable-hdpi │ │ ├── drawable_1.png │ │ ├── drawable_2.png │ │ ├── ic_action_calendar.png │ │ ├── ic_action_key.png │ │ ├── ic_action_lock.png │ │ ├── ic_action_save.png │ │ ├── ic_action_search.png │ │ ├── ic_action_world.png │ │ ├── ic_chat_head_blue.png │ │ ├── ic_chat_head_red.png │ │ ├── ic_drawer.png │ │ ├── ic_espresso_logo_mono.png │ │ ├── ic_launcher.png │ │ └── ic_menu.png │ │ ├── drawable-ldpi │ │ ├── ic_action_calendar.png │ │ ├── ic_action_key.png │ │ ├── ic_action_lock.png │ │ ├── ic_action_save.png │ │ ├── ic_action_search.png │ │ ├── ic_action_world.png │ │ ├── ic_chat_head_blue.png │ │ ├── ic_chat_head_red.png │ │ ├── ic_drawer.png │ │ ├── ic_launcher.png │ │ └── ic_menu.png │ │ ├── drawable-mdpi │ │ ├── ic_action_calendar.png │ │ ├── ic_action_key.png │ │ ├── ic_action_lock.png │ │ ├── ic_action_save.png │ │ ├── ic_action_search.png │ │ ├── ic_action_world.png │ │ ├── ic_chat_head_blue.png │ │ ├── ic_chat_head_red.png │ │ ├── ic_drawer.png │ │ ├── ic_espresso_logo_mono.png │ │ ├── ic_launcher.png │ │ └── ic_menu.png │ │ ├── drawable-xhdpi │ │ ├── ic_action_calendar.png │ │ ├── ic_action_key.png │ │ ├── ic_action_lock.png │ │ ├── ic_action_save.png │ │ ├── ic_action_search.png │ │ ├── ic_action_world.png │ │ ├── ic_chat_head_blue.png │ │ ├── ic_chat_head_red.png │ │ ├── ic_drawer.png │ │ ├── ic_espresso_logo_mono.png │ │ ├── ic_launcher.png │ │ └── ic_menu.png │ │ ├── drawable-xxhdpi │ │ ├── ic_espresso_logo_mono.png │ │ └── ic_menu.png │ │ ├── layout │ │ ├── actionbar_activity.xml │ │ ├── actionbar_search_activity.xml │ │ ├── activity_idling_ui.xml │ │ ├── activity_intercepting.xml │ │ ├── activity_runtime_permissions.xml │ │ ├── binderipc_activity.xml │ │ ├── chat_head_activity.xml │ │ ├── cursor_adapter_activity.xml │ │ ├── delayed_dialog_activity.xml │ │ ├── delegating_edit_text.xml │ │ ├── display_activity.xml │ │ ├── drawer_activity.xml │ │ ├── drawer_row.xml │ │ ├── duplicate_view_activity.xml │ │ ├── dynamic_web_view_activity.xml │ │ ├── fragment_stack.xml │ │ ├── gesture_activity.xml │ │ ├── keyboard_test_activity.xml │ │ ├── largeview_activity.xml │ │ ├── layout_issues_activity.xml │ │ ├── list_activity.xml │ │ ├── list_item.xml │ │ ├── list_with_dummy_entries.xml │ │ ├── long_footer.xml │ │ ├── long_header.xml │ │ ├── menu_activity.xml │ │ ├── nav_header.xml │ │ ├── navigation_view_activity.xml │ │ ├── padding_activity.xml │ │ ├── pager_activity.xml │ │ ├── pager_view.xml │ │ ├── pick_activity.xml │ │ ├── pickers_activity.xml │ │ ├── popup_window.xml │ │ ├── recyclerview_activity.xml │ │ ├── recyclerview_item.xml │ │ ├── rv_glm_fragment.xml │ │ ├── rv_llm_fragment.xml │ │ ├── rv_sglm_fragment.xml │ │ ├── scaledview_activity.xml │ │ ├── screen_orientation_activity.xml │ │ ├── screen_orientation_without_onconfigurationchanged_activity.xml │ │ ├── scroll_activity.xml │ │ ├── send_activity.xml │ │ ├── simple_activity.xml │ │ ├── swipe_activity.xml │ │ ├── sync_activity.xml │ │ ├── tab_indicator.xml │ │ ├── toolbar_activity.xml │ │ ├── transition_detail.xml │ │ ├── transition_grid.xml │ │ ├── transition_grid_item.xml │ │ ├── truncated_view_activity.xml │ │ ├── vertical_pager_activity.xml │ │ └── view_with_textallcaps_activity.xml │ │ ├── menu │ │ ├── actionbar_activity_actions.xml │ │ ├── actionbar_context_actions.xml │ │ ├── actionbar_search_actions.xml │ │ ├── contextmenu.xml │ │ ├── navigation_view_actions.xml │ │ ├── optionsmenu.xml │ │ ├── popup_menu.xml │ │ └── popupmenu.xml │ │ ├── transition │ │ └── grid_detail_transition.xml │ │ ├── values-v21 │ │ └── styles.xml │ │ └── values │ │ ├── colors.xml │ │ ├── dimen.xml │ │ ├── ids.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── javatests │ └── androidx │ └── test │ └── ui │ └── app │ ├── AccessibilityChecksTest.java │ ├── ActionBarSearchActivityTest.java │ ├── ActionBarTest.java │ ├── ActivityFinisherTest.java │ ├── ActivityResultTest.java │ ├── AdapterViewTest.java │ ├── AdvancedSynchronizationTest.java │ ├── AndroidManifest.xml │ ├── BUILD │ ├── BasicTest.java │ ├── ChatHeadActivityTest.java │ ├── CursorAdapterTest.java │ ├── CustomFailureHandlerTest.java │ ├── DrawerActionsTest.java │ ├── DuplicateViewActivityTest.java │ ├── GrantPermissionRuleIntegrationTest.java │ ├── IdlingTest.java │ ├── IntentTest.java │ ├── InterceptingActivitySampleTest.java │ ├── LayoutTest.java │ ├── LongListMatchers.java │ ├── LongListMatchersTest.java │ ├── MainActivityTest.java │ ├── MenuTest.java │ ├── MultipleWindowTest.java │ ├── PickerActionsTest.java │ ├── RootViewPickerTest.java │ ├── ScrollToTest.java │ ├── SwipeTest.java │ ├── TaskStackTest.java │ ├── ToolbarTest.java │ ├── TransitionActivityMainTest.java │ ├── TruncatedViewHierarchyActivityTest.java │ ├── VerticalSwipeTest.java │ ├── ViewWithTextAllCapsActivityTest.java │ ├── assets │ └── testfiles │ │ ├── backupFlightsDB.db │ │ └── fixtureCmdsForTest │ └── provider │ ├── FlightsContentProviderByRuleTest.java │ ├── FlightsContentProviderTest.java │ └── SimpleFileContentProviderTest.java └── tools ├── android ├── emulated_devices │ ├── BUILD.bazel │ ├── droid_razr │ │ └── BUILD.bazel │ ├── galaxy_nexus │ │ └── BUILD.bazel │ ├── galaxy_s_iii │ │ └── BUILD.bazel │ ├── galaxy_tab_10 │ │ └── BUILD.bazel │ ├── generic_go_phone │ │ └── BUILD.bazel │ ├── generic_phone │ │ └── BUILD.bazel │ ├── generic_tablet │ │ └── BUILD.bazel │ ├── generic_watch │ │ └── BUILD.bazel │ ├── high_mem_watch │ │ └── BUILD.bazel │ ├── htc_evo_4g_plus │ │ └── BUILD.bazel │ ├── lg_optimus_l3 │ │ └── BUILD.bazel │ ├── low_mem_phone │ │ └── BUILD.bazel │ ├── macro │ │ ├── emulator.bzl │ │ ├── emulator_info.bzl │ │ ├── hardware.bzl │ │ ├── image.bzl │ │ ├── image_info.bzl │ │ ├── make_device.bzl │ │ ├── props.bzl │ │ └── props_info.bzl │ ├── moto_x4 │ │ └── BUILD.bazel │ ├── nexus_10 │ │ └── BUILD.bazel │ ├── nexus_4 │ │ └── BUILD.bazel │ ├── nexus_5 │ │ └── BUILD.bazel │ ├── nexus_5x │ │ └── BUILD.bazel │ ├── nexus_6 │ │ └── BUILD.bazel │ ├── nexus_6p │ │ └── BUILD.bazel │ ├── nexus_7 │ │ └── BUILD.bazel │ ├── nexus_9 │ │ └── BUILD.bazel │ ├── nexus_one │ │ └── BUILD.bazel │ ├── nexus_s │ │ ├── BUILD.bazel │ │ └── default.properties │ ├── pixel │ │ └── BUILD.bazel │ ├── pixel_2 │ │ └── BUILD.bazel │ ├── pixel_2_xl │ │ └── BUILD.bazel │ ├── pixel_3 │ │ └── BUILD.bazel │ ├── pixel_3_xl │ │ └── BUILD.bazel │ ├── pixel_c │ │ └── BUILD.bazel │ ├── pixel_correct_dpi │ │ └── BUILD.bazel │ ├── pixel_xl │ │ └── BUILD.bazel │ ├── pixel_xl_correct_dpi │ │ └── BUILD.bazel │ ├── pixelbook │ │ └── BUILD.bazel │ ├── tv │ │ └── BUILD.bazel │ ├── wrong_dpi_nexus_10 │ │ └── BUILD.bazel │ ├── wrong_dpi_nexus_5 │ │ └── BUILD.bazel │ ├── wrong_dpi_nexus_5x │ │ └── BUILD.bazel │ ├── wrong_dpi_nexus_6 │ │ └── BUILD.bazel │ ├── wrong_dpi_nexus_6p │ │ └── BUILD.bazel │ ├── wrong_dpi_nexus_9 │ │ └── BUILD.bazel │ ├── wrong_dpi_pixel │ │ └── BUILD.bazel │ ├── wrong_dpi_pixel_c │ │ └── BUILD.bazel │ ├── wrong_dpi_pixel_xl │ │ └── BUILD.bazel │ └── xoom │ │ └── BUILD.bazel └── emulator │ ├── BUILD.bazel │ ├── common.py │ ├── common_subprocess_test.py │ ├── common_test.py │ ├── daemon │ ├── bootstrap.apk │ ├── g3_activity_controller.jar │ └── x86 │ │ ├── adbd │ │ ├── pipe_traversal │ │ └── waterfall │ ├── emulated_device.py │ ├── emulated_device_integration_test_arm.py │ ├── emulated_device_software_open_gl_integration_test.py │ ├── emulated_device_test.py │ ├── emulator_meta_data.proto │ ├── emulator_meta_data_pb2.py │ ├── fake_android_platform_util.py │ ├── reporting.py │ ├── resources.py │ ├── resources_test.py │ ├── support │ ├── adb.turbo │ ├── cache.img.tar.gz │ ├── default_sdcard.256.img.tar.gz │ └── waterfall │ │ ├── forward_bin │ │ ├── ports_bin │ │ └── waterfall_bin │ ├── unified_launcher.py │ ├── unified_launcher_test.py │ ├── xres.py │ ├── xserver.py │ └── xserver_test.py ├── device_broker ├── java │ └── com │ │ └── google │ │ └── android │ │ └── apps │ │ └── common │ │ └── testing │ │ ├── broker │ │ ├── AaptDumpPackageLineProcessor.java │ │ ├── AaptUtil.java │ │ ├── AbstractRegexpLineProcessor.java │ │ ├── ActivityAction.java │ │ ├── AdbController.java │ │ ├── AdbDevicesLineProcessor.java │ │ ├── AdbInstrumentationListProcessor.java │ │ ├── AndroidPropertyProcessor.java │ │ ├── BUILD.bazel │ │ ├── BadIdeaRuntimeException.java │ │ ├── BrokeredDevice.java │ │ ├── BrokeredDeviceExportedPropertyRecorder.java │ │ ├── DataStagingDeviceBrokerDecorator.java │ │ ├── DeviceBroker.java │ │ ├── DeviceBrokerAnnotations.java │ │ ├── DeviceBrokerDecorator.java │ │ ├── DeviceBrokerFactory.java │ │ ├── DeviceBrokerModule.java │ │ ├── DeviceBrokerOptions.java │ │ ├── DeviceBrokerType.java │ │ ├── DirectorySearcher.java │ │ ├── EnumConverters.java │ │ ├── Environment.java │ │ ├── EnvironmentModule.java │ │ ├── ExecReporter.java │ │ ├── ExecReporterModule.java │ │ ├── ExecutedTest.java │ │ ├── FixtureScriptExecutingDeviceBrokerDecorator.java │ │ ├── HostTestSize.java │ │ ├── Instrumentation.java │ │ ├── InstrumentationExecutingDeviceBrokerDecorator.java │ │ ├── InstrumentationRepository.java │ │ ├── InstrumentationTestRunnerProcessor.java │ │ ├── LocalAdbServerDeviceBroker.java │ │ ├── LocalBrokerModule.java │ │ ├── LogcatFilter.java │ │ ├── LogcatFilterConverter.java │ │ ├── LogcatStreamer.java │ │ ├── NetworkType.java │ │ ├── NoOpExecReporter.java │ │ ├── OpenGlDriver.java │ │ ├── PortManager.java │ │ ├── PortManagerModule.java │ │ ├── ProxyConfiguringDeviceBrokerDecorator.java │ │ ├── ProxyConfiguringModule.java │ │ ├── ResourceProvider.java │ │ ├── SharedEnvironment.java │ │ ├── ShellVariableProcessor.java │ │ ├── SimpleLineListProcessor.java │ │ ├── StreamWritingProcessor.java │ │ ├── SubprocessCommunicator.java │ │ ├── TestInfoRepository.java │ │ ├── WrappedBrokerModule.java │ │ ├── WrappedEmulatedDeviceBroker.java │ │ ├── dexdump_annotations │ │ ├── executor.sh │ │ └── shell │ │ │ ├── AbnormalTerminationException.java │ │ │ ├── BUILD.bazel │ │ │ ├── BadExitStatusException.java │ │ │ ├── Command.java │ │ │ ├── CommandException.java │ │ │ ├── CommandResult.java │ │ │ ├── Consumers.java │ │ │ ├── ExecFailedException.java │ │ │ ├── FutureCommandResult.java │ │ │ ├── InputStreamSink.java │ │ │ ├── JavaSubprocessFactory.java │ │ │ ├── Killable.java │ │ │ ├── KillableObserver.java │ │ │ ├── LogUtil.java │ │ │ ├── ProcessKillable.java │ │ │ ├── ShellUtils.java │ │ │ ├── SimpleKillableObserver.java │ │ │ ├── Subprocess.java │ │ │ ├── SubprocessBuilder.java │ │ │ ├── TerminationStatus.java │ │ │ └── TimeoutKillableObserver.java │ │ ├── suite │ │ ├── AndroidDeviceTestSuite.java │ │ ├── AndroidGoogleTest.java │ │ ├── AndroidTestHarness.java │ │ ├── BUILD.bazel │ │ ├── NoopAndroidTestHarness.java │ │ ├── SuiteCreationFailureException.java │ │ ├── TestRecorderProperties.java │ │ ├── TestSuiteWrapper.java │ │ ├── dex │ │ │ ├── BUILD.bazel │ │ │ ├── DexClassData.java │ │ │ ├── DexDumpIterator.java │ │ │ └── DumpUtils.java │ │ └── filter │ │ │ ├── AnnotationNameFilter.java │ │ │ ├── AnnotationPredicates.java │ │ │ ├── ApiLevelFilter.java │ │ │ ├── BUILD.bazel │ │ │ ├── DeviceTypeFilter.java │ │ │ ├── Filters.java │ │ │ ├── FlagParsingFilter.java │ │ │ ├── SizeFilter.java │ │ │ ├── SizeFilterConverter.java │ │ │ ├── SuppressFilter.java │ │ │ ├── TestFilterSpecConverter.java │ │ │ └── TestNameFilter.java │ │ └── testrunner │ │ └── testsuitepbutil │ │ ├── BUILD.bazel │ │ └── TestSuitePbUtil.java └── proto │ ├── BUILD.bazel │ └── test_info.proto └── release ├── androidx_import_generator.py ├── cherrypick_to_release_branch.sh ├── create_release_branch.sh ├── java └── androidx │ └── test │ └── tools │ └── releaseupdater │ ├── BUILD │ ├── Main.kt │ └── ReleaseUpdater.kt ├── javatests └── androidx │ └── test │ └── tools │ └── releaseupdater │ ├── BUILD │ └── ReleaseUpdaterTest.kt └── validate_and_propagate_versions.sh /.bazelproject: -------------------------------------------------------------------------------- 1 | directories: 2 | # Add the directories you want added as source here 3 | # By default, we've added your entire workspace ('.') 4 | . 5 | 6 | targets: 7 | # Add targets that reach the source code that you want to resolve here 8 | # By default, we've added all targets in your workspace 9 | //core/... 10 | //espresso/... 11 | //ext/... 12 | //ktx/... 13 | //runner/... 14 | 15 | 16 | additional_languages: 17 | # Uncomment any additional languages you want supported 18 | kotlin 19 | 20 | 21 | # Please uncomment an android-SDK platform. Available SDKs are: 22 | android_sdk_platform: android-34 23 | -------------------------------------------------------------------------------- /.bazelrc: -------------------------------------------------------------------------------- 1 | # Include debug info in the compiled jars 2 | build --javacopt=-g 3 | build --host_javacopt=-g 4 | 5 | build --experimental_google_legacy_api 6 | build --enable_platform_specific_config 7 | build:linux --sandbox_tmpfs_path=/tmp 8 | test --enable_platform_specific_config 9 | test:linux --sandbox_tmpfs_path=/tmp 10 | -------------------------------------------------------------------------------- /.bazelversion: -------------------------------------------------------------------------------- 1 | 7.5.0 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Description 2 | 3 | ### Steps to Reproduce 4 | 5 | ### Expected Results 6 | 7 | ### Actual Results 8 | 9 | ### AndroidX Test and Android OS Versions 10 | 11 | ### Link to a public git repo demonstrating the problem: 12 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Overview 2 | 3 | ### Proposed Changes 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Bazel 2 | bazel-* 3 | MODULE.bazel.lock 4 | 5 | # Android Studio 6 | .aswb 7 | 8 | # Intellij IDEA 9 | .idea 10 | .gradle 11 | .ijwb 12 | -------------------------------------------------------------------------------- /CHANGELOG_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **Bug Fixes** 2 | 3 | **New Features** 4 | 5 | **Breaking Changes** 6 | 7 | **API Changes** 8 | 9 | **Breaking API Changes** 10 | 11 | **Known Issues** 12 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # start from docker image with bazel installed 2 | FROM l.gcr.io/google/bazel:3.5.0 3 | 4 | ENV ANDROID_HOME /android-sdk 5 | ENV PATH ${ANDROID_HOME}/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools/bin:/bin:$PATH 6 | 7 | RUN \ 8 | # TODO: investigate why /usr/local/lib/libc++.so not compatible with aapt 9 | rm -f /usr/local/lib/libc++.so && \ 10 | # install extra utilities needed 11 | apt-get -q update && \ 12 | apt-get -q -y install maven \ 13 | unzip \ 14 | zip \ 15 | wget && \ 16 | 17 | # download and extract sdk while suppressing the progress bar output 18 | wget -nv https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip && \ 19 | unzip -q commandlinetools-linux-6609375_latest.zip -d $ANDROID_HOME && \ 20 | yes | sdkmanager --install 'build-tools;30.0.2' 'platforms;android-31' --sdk_root=$ANDROID_HOME | grep -v = || true 21 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | /* Remove this comment 2 | Please make sure that your issue is related to the AXT documentation page. Do not use this issue tracker to report bugs on 3 | Espresso or any other of the AXT components (see https://android.github.io/android-test/support/index.html for that). 4 | */ 5 | -------------------------------------------------------------------------------- /WORKSPACE: -------------------------------------------------------------------------------- 1 | # Define project setup not yet supported in MODULE.bzlmod 2 | 3 | 4 | # Load Android Sdk 5 | 6 | android_sdk_repository( 7 | name = "androidsdk", 8 | api_level = 35, 9 | build_tools_version = "35.0.0", 10 | ) 11 | 12 | register_toolchains("//:kotlin_toolchain") 13 | -------------------------------------------------------------------------------- /api/README.md: -------------------------------------------------------------------------------- 1 | Deprecated! 2 | 3 | Previous repository for api definitions for androidx.test. 4 | API definitions have been moved to per-library directories. 5 | 6 | -------------------------------------------------------------------------------- /bazelci/buildkite-pipeline.yml: -------------------------------------------------------------------------------- 1 | # Buildkite CI configuration file 2 | --- 3 | platforms: 4 | ubuntu1804: 5 | build_targets: 6 | - "//..." 7 | build_flags: 8 | - "--build_tag_filters=robolectric" # Build only robolectric tests for now 9 | test_flags: 10 | - "--local_test_jobs=8" # Run at most 8 tests in parallel 11 | - "--test_tag_filters=robolectric" # Run only robolectric tests for now 12 | test_targets: 13 | - "//..." 14 | -------------------------------------------------------------------------------- /build_extensions/BUILD: -------------------------------------------------------------------------------- 1 | load("@bazel_skylib//:bzl_library.bzl", "bzl_library") 2 | 3 | licenses(["notice"]) 4 | 5 | package(default_visibility = [ 6 | "//visibility:public", 7 | ]) 8 | 9 | exports_files([ 10 | "AndroidManifest_target_stub.xml", 11 | "AndroidManifest_instrumentation_test_template.xml", 12 | "AndroidManifest_robolectric.xml", 13 | "robolectric.properties", 14 | "mainDexClasses.rules", 15 | "axt_released_versions.bzl", 16 | "axt_versions.bzl", 17 | ]) 18 | -------------------------------------------------------------------------------- /build_extensions/android_multidevice_instrumentation_test.bzl: -------------------------------------------------------------------------------- 1 | """Utility for running single test on multiple emulator targets.""" 2 | 3 | def android_multidevice_instrumentation_test(name, target_devices, **kwargs): 4 | """Generates a android_instrumentation_test rule for each given device. 5 | 6 | Args: 7 | name: Name prefix to use for the rules. The name of the generated rules will follow: 8 | name + target_device[-6:] eg name-15_x86 9 | target_devices: array of device targets 10 | **kwargs: arguments to pass to generated android_test rules 11 | """ 12 | for device in target_devices: 13 | native.android_instrumentation_test( 14 | name = name + "-" + device[-6:], 15 | target_device = device, 16 | **kwargs 17 | ) 18 | -------------------------------------------------------------------------------- /build_extensions/api_checks.bzl: -------------------------------------------------------------------------------- 1 | """A macro for generating androidx.test api definitions and checks.""" 2 | 3 | # TODO: implement me 4 | 5 | def api_checks( 6 | name, 7 | runtime_dep, 8 | src_jar, 9 | testonly = 1): 10 | """Generates api definitions and checks for a macro. 11 | 12 | This macro will generate two api definition files, one for public api, one for internal RestrictTo(Scope.LIBRARY_GROUP) apis, 13 | and generate diff checks to compare them against api/current-public.txt and api/current-internal.txt respectively. 14 | 15 | Args: 16 | name: name of rule 17 | runtime_dep: runtime java dependency of the srcs 18 | src_jar: contains the source to generate api for 19 | testonly: the testonly restriction. Default 1 20 | """ 21 | -------------------------------------------------------------------------------- /build_extensions/axt_android_application_test.bzl: -------------------------------------------------------------------------------- 1 | def axt_android_application_test(**kwargs): 2 | """Placeholder for future instrumentation test support.""" 3 | -------------------------------------------------------------------------------- /build_extensions/axt_deps_versions.bzl: -------------------------------------------------------------------------------- 1 | """Defines versions of androidx.test dependencies.""" 2 | 3 | # These must match versions specified in MODULE.bazel 4 | # Unfortunately MODULE.bazel files do not support load 5 | # so there is no known way to share these constants 6 | 7 | # Maven dependency versions 8 | ANDROIDX_ANNOTATION_VERSION = "1.7.0" 9 | KOTLIN_VERSION = "1.9.21" 10 | KOTLIN_LANG_VERSION = "1.9" 11 | GRPC_VERSION = "1.71.0" 12 | -------------------------------------------------------------------------------- /build_extensions/axt_released_versions.bzl: -------------------------------------------------------------------------------- 1 | """Defines current released AXT versions. 2 | """ 3 | 4 | RUNNER_VERSION = "1.7.0-alpha03" 5 | RULES_VERSION = "1.7.0-alpha03" 6 | MONITOR_VERSION = "1.8.0-alpha03" 7 | ESPRESSO_VERSION = "3.7.0-alpha03" 8 | CORE_VERSION = "1.7.0-alpha03" 9 | ESPRESSO_DEVICE_VERSION = "1.1.0-alpha03" 10 | ANDROIDX_JUNIT_VERSION = "1.3.0-alpha03" 11 | ANDROIDX_TRUTH_VERSION = "1.7.0-alpha03" 12 | ORCHESTRATOR_VERSION = "1.6.0-alpha04" 13 | SERVICES_VERSION = "1.6.0-alpha04" 14 | -------------------------------------------------------------------------------- /build_extensions/axt_stable_versions.bzl: -------------------------------------------------------------------------------- 1 | """Defines currently released stable AXT versions.""" 2 | 3 | # currently only used for documentation purposes 4 | 5 | RUNNER_VERSION = "1.6.1" 6 | RULES_VERSION = "1.6.1" 7 | MONITOR_VERSION = "1.7.1" 8 | ESPRESSO_VERSION = "3.6.1" 9 | CORE_VERSION = "1.6.1" 10 | ESPRESSO_DEVICE_VERSION = "1.0.1" 11 | ANDROIDX_JUNIT_VERSION = "1.2.1" 12 | ANDROIDX_TRUTH_VERSION = "1.6.0" 13 | ANNOTATION_VERSION = "1.0.1" 14 | ORCHESTRATOR_VERSION = "1.5.0" 15 | SERVICES_VERSION = "1.5.0" 16 | -------------------------------------------------------------------------------- /build_extensions/axt_versions.bzl: -------------------------------------------------------------------------------- 1 | """Defines next to be released AXT versions. 2 | 3 | Use tools/release/validate_and_propagate_versions.sh to propagate these versions to 4 | //:axt_m2_repository and gradle-tests/settings.gradle 5 | """ 6 | 7 | RUNNER_VERSION = "1.7.0-alpha04" 8 | RULES_VERSION = "1.7.0-alpha04" 9 | MONITOR_VERSION = "1.8.0-alpha04" 10 | ESPRESSO_VERSION = "3.7.0-alpha04" 11 | CORE_VERSION = "1.7.0-alpha04" 12 | ESPRESSO_DEVICE_VERSION = "1.1.0-alpha04" 13 | ANDROIDX_JUNIT_VERSION = "1.3.0-alpha04" 14 | ANDROIDX_TRUTH_VERSION = "1.7.0-alpha04" 15 | ORCHESTRATOR_VERSION = "1.6.0-alpha05" 16 | SERVICES_VERSION = "1.6.0-alpha05" 17 | 18 | # Full maven artifact strings for apks. 19 | SERVICES_APK_ARTIFACT = "androidx.test.services:test-services:%s" % SERVICES_VERSION 20 | ORCHESTRATOR_ARTIFACT = "androidx.test:orchestrator:%s" % ORCHESTRATOR_VERSION 21 | -------------------------------------------------------------------------------- /build_extensions/dackka_test.bzl: -------------------------------------------------------------------------------- 1 | # Simple wrapper macro that generates rules to create a dackka zip and a build_test to verify it 2 | 3 | def dackka_test(name, **kwargs): 4 | """Placeholder for ref doc using dackka and a test to verify success 5 | 6 | Currently unsupported in bazel 7 | """ 8 | return 9 | -------------------------------------------------------------------------------- /build_extensions/jar_combiner/java/androidx/test/tools/jarcombiner/BUILD: -------------------------------------------------------------------------------- 1 | load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library") 2 | 3 | package( 4 | default_visibility = [ 5 | "//:__subpackages__", 6 | ], 7 | ) 8 | 9 | kt_jvm_library( 10 | name = "jarcombiner_lib", 11 | srcs = glob([ 12 | "*.kt", 13 | ]), 14 | ) 15 | 16 | java_binary( 17 | name = "jarcombiner", 18 | srcs = ["Main.java"], 19 | main_class = "androidx.test.tools.jarcombiner.Main", 20 | deps = [ 21 | ":jarcombiner_lib", 22 | ], 23 | ) 24 | -------------------------------------------------------------------------------- /build_extensions/jar_combiner/javatests/androidx/test/tools/jarcombiner/BUILD: -------------------------------------------------------------------------------- 1 | load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_test") 2 | 3 | kt_jvm_test( 4 | name = "JarCombinerTest", 5 | srcs = ["JarCombinerTest.kt"], 6 | data = [ 7 | "//build_extensions/jar_combiner/javatests/androidx/test/tools/jarcombiner/fixtures:libjar1.jar", 8 | "//build_extensions/jar_combiner/javatests/androidx/test/tools/jarcombiner/fixtures:libjar2.jar", 9 | "//build_extensions/jar_combiner/javatests/androidx/test/tools/jarcombiner/fixtures:libjar_with_r.jar", 10 | ], 11 | deps = [ 12 | "//build_extensions/jar_combiner/java/androidx/test/tools/jarcombiner:jarcombiner_lib", 13 | "//build_extensions/jar_validator/java/androidx/test/tools/jarvalidator:jarvalidator_lib", 14 | "@maven//:com_google_truth_truth", 15 | "@maven//:junit_junit", 16 | ], 17 | ) 18 | -------------------------------------------------------------------------------- /build_extensions/jar_combiner/javatests/androidx/test/tools/jarcombiner/fixtures/BUILD: -------------------------------------------------------------------------------- 1 | load("@rules_java//java:defs.bzl", "java_library") 2 | 3 | java_library( 4 | name = "jar1", 5 | srcs = ["Jar1Class.java"], 6 | visibility = [ 7 | "//build_extensions/jar_combiner/javatests:__subpackages__", 8 | ], 9 | ) 10 | 11 | java_library( 12 | name = "jar2", 13 | srcs = [ 14 | "Jar2Class.java", 15 | ], 16 | visibility = [ 17 | "//build_extensions/jar_combiner/javatests:__subpackages__", 18 | ], 19 | ) 20 | 21 | java_library( 22 | name = "jar_with_r", 23 | srcs = [ 24 | "Jar1Class.java", 25 | "R.java", 26 | ], 27 | visibility = [ 28 | "//build_extensions/jar_combiner/javatests:__subpackages__", 29 | ], 30 | ) 31 | -------------------------------------------------------------------------------- /build_extensions/jar_combiner/javatests/androidx/test/tools/jarcombiner/fixtures/Jar1Class.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package androidx.test.tools.jarcombiner.fixtures; 17 | 18 | public class Jar1Class { 19 | private Jar1Class() {} 20 | } 21 | -------------------------------------------------------------------------------- /build_extensions/jar_combiner/javatests/androidx/test/tools/jarcombiner/fixtures/Jar2Class.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package androidx.test.tools.jarcombiner.fixtures; 17 | 18 | public class Jar2Class { 19 | private Jar2Class() {} 20 | } 21 | -------------------------------------------------------------------------------- /build_extensions/jar_combiner/javatests/androidx/test/tools/jarcombiner/fixtures/R.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2023 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package androidx.test.tools.jarcombiner.fixtures; 17 | 18 | public class R { 19 | 20 | private R() {} 21 | 22 | public static class Inner {} 23 | } 24 | -------------------------------------------------------------------------------- /build_extensions/jar_creator/java/androidx/test/tools/jarcreator/BUILD: -------------------------------------------------------------------------------- 1 | load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library") 2 | 3 | package( 4 | default_visibility = [ 5 | "//:__subpackages__", 6 | ], 7 | ) 8 | 9 | kt_jvm_library( 10 | name = "jarcreator_lib", 11 | srcs = glob([ 12 | "*.kt", 13 | ]), 14 | ) 15 | 16 | java_binary( 17 | name = "jarcreator", 18 | srcs = ["Main.java"], 19 | main_class = "androidx.test.tools.jarcreator.Main", 20 | deps = [ 21 | ":jarcreator_lib", 22 | ], 23 | ) 24 | -------------------------------------------------------------------------------- /build_extensions/jar_creator/javatests/androidx/test/tools/jarcreator/BUILD: -------------------------------------------------------------------------------- 1 | load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_test") 2 | 3 | kt_jvm_test( 4 | name = "JarCreatorTest", 5 | srcs = ["JarCreatorTest.kt"], 6 | deps = [ 7 | "//build_extensions/jar_creator/java/androidx/test/tools/jarcreator:jarcreator_lib", 8 | "@maven//:com_google_truth_truth", 9 | "@maven//:junit_junit", 10 | ], 11 | ) 12 | -------------------------------------------------------------------------------- /build_extensions/jar_validator/BUILD: -------------------------------------------------------------------------------- 1 | alias( 2 | name = "jar_validator", 3 | actual = "//build_extensions/jar_validator/java/androidx/test/tools/jarvalidator", 4 | visibility = ["//build_extensions:__subpackages__"], 5 | ) 6 | -------------------------------------------------------------------------------- /build_extensions/jar_validator/java/androidx/test/tools/jarvalidator/BUILD: -------------------------------------------------------------------------------- 1 | load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library") 2 | 3 | kt_jvm_library( 4 | name = "jarvalidator_lib", 5 | srcs = glob([ 6 | "*.kt", 7 | ]), 8 | visibility = [ 9 | "//:__subpackages__", 10 | ], 11 | ) 12 | 13 | java_binary( 14 | name = "jarvalidator", 15 | srcs = ["Main.java"], 16 | main_class = "androidx.test.tools.jarvalidator.Main", 17 | visibility = [ 18 | "//:__subpackages__", 19 | ], 20 | deps = [ 21 | ":jarvalidator_lib", 22 | ], 23 | ) 24 | -------------------------------------------------------------------------------- /build_extensions/jar_validator/java/androidx/test/tools/jarvalidator/Main.java: -------------------------------------------------------------------------------- 1 | package androidx.test.tools.jarvalidator; 2 | 3 | public class Main { 4 | private Main() {} 5 | 6 | public static void main(String[] args) { 7 | if (!JarValidatorKt.validateJar(args)) { 8 | System.exit(1); 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /build_extensions/jar_validator/javatests/androidx/test/tools/jarvalidator/BUILD: -------------------------------------------------------------------------------- 1 | load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_test") 2 | 3 | kt_jvm_test( 4 | name = "JarValidatorTest", 5 | srcs = ["JarValidatorTest.kt"], 6 | data = [ 7 | "//build_extensions/jar_validator/javatests/androidx/test/tools/jarvalidator/fixtures:libmatching.jar", 8 | "//build_extensions/jar_validator/javatests/androidx/test/tools/jarvalidator/fixtures:libnotmatching.jar", 9 | ], 10 | deps = [ 11 | "//build_extensions/jar_validator/java/androidx/test/tools/jarvalidator:jarvalidator_lib", 12 | "@maven//:com_google_truth_truth", 13 | "@maven//:junit_junit", 14 | ], 15 | ) 16 | -------------------------------------------------------------------------------- /build_extensions/jar_validator/javatests/androidx/test/tools/jarvalidator/fixtures/BUILD: -------------------------------------------------------------------------------- 1 | load("@rules_java//java:defs.bzl", "java_library") 2 | 3 | java_library( 4 | name = "matching", 5 | srcs = ["matching/Matching.java"], 6 | visibility = [ 7 | "//build_extensions/jar_validator/javatests:__subpackages__", 8 | ], 9 | ) 10 | 11 | java_library( 12 | name = "notmatching", 13 | srcs = [ 14 | "matching/Matching.java", 15 | "notmatching/NotMatching.java", 16 | ], 17 | visibility = [ 18 | "//build_extensions/jar_validator/javatests:__subpackages__", 19 | ], 20 | ) 21 | -------------------------------------------------------------------------------- /build_extensions/jar_validator/javatests/androidx/test/tools/jarvalidator/fixtures/matching/Matching.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2023 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package androidx.test.tools.jarvalidator.fixtures.matching; 17 | 18 | public class Matching {} 19 | -------------------------------------------------------------------------------- /build_extensions/jar_validator/javatests/androidx/test/tools/jarvalidator/fixtures/notmatching/NotMatching.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2023 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package androidx.test.tools.jarvalidator.fixtures.notmatching; 17 | 18 | public class NotMatching {} 19 | -------------------------------------------------------------------------------- /build_extensions/jetify.bzl: -------------------------------------------------------------------------------- 1 | load("@build_bazel_rules_android//android:rules.bzl", "android_binary", "android_library") 2 | 3 | def jetify_android_library(jetify_sources = False, **kwargs): 4 | # ignore, not supported in bazel 5 | android_library(**kwargs) 6 | 7 | def jetify_android_binary(jetify_sources = False, **kwargs): 8 | # ignore, not supported in bazel 9 | android_binary(**kwargs) 10 | -------------------------------------------------------------------------------- /build_extensions/kt_android_library.bzl: -------------------------------------------------------------------------------- 1 | """Wrapper for android_library for bazel. 2 | """ 3 | 4 | load("@io_bazel_rules_kotlin//kotlin:android.bzl", io_kt_android_library = "kt_android_library") 5 | 6 | def kt_android_library(testonly = 1, **kwargs): 7 | # explicitly set testonly to 1 because io_kt_android_library doesn't seem to respect package(default_testonly = 1) 8 | io_kt_android_library(testonly = testonly, **kwargs) 9 | -------------------------------------------------------------------------------- /build_extensions/mainDexClasses.rules: -------------------------------------------------------------------------------- 1 | -keep public class * extends android.app.Instrumentation { 2 | (); 3 | } 4 | -keep public class * extends android.app.Application { 5 | (); 6 | void attachBaseContext(android.content.Context); 7 | } 8 | -keep public class * extends android.app.backup.BackupAgent { 9 | (); 10 | } 11 | # We need to keep all annotation classes because proguard does not trace annotation attribute 12 | # it just filter the annotation attributes according to annotation classes it already kept. 13 | -keep public class * extends java.lang.annotation.Annotation { 14 | *; 15 | } 16 | # Keep old fashion tests in the main dex or they'll be silently ignored by InstrumentationTestRunner 17 | -keep public class * extends android.test.InstrumentationTestCase { 18 | (); 19 | } 20 | 21 | -------------------------------------------------------------------------------- /build_extensions/maven/BUILD: -------------------------------------------------------------------------------- 1 | licenses(["notice"]) 2 | 3 | package(default_visibility = [ 4 | "//visibility:public", 5 | ]) 6 | 7 | # Used to generate a maven artifact. 8 | sh_binary( 9 | name = "maven_artifact_sh", 10 | srcs = ["maven_artifact.sh"], 11 | ) 12 | 13 | java_binary( 14 | name = "jarjar_bin", 15 | main_class = "org.pantsbuild.jarjar.Main", 16 | runtime_deps = ["@maven//:org_pantsbuild_jarjar"], 17 | ) 18 | -------------------------------------------------------------------------------- /build_extensions/maven/combine_jars.bzl: -------------------------------------------------------------------------------- 1 | """Combines multiple jars into one jar.""" 2 | 3 | def combine_jars(ctx, input_jars_deps, output): 4 | """Combine several jars into a single jar. 5 | 6 | Bazel wrapper for build_extensions/jar_combiner. 7 | 8 | Args: 9 | ctx: the rule context 10 | input_jars_deps: depset of input jars 11 | output: the output file path to use 12 | """ 13 | if not input_jars_deps: 14 | fail("must provide at least one input_jar") 15 | if not output: 16 | fail("must provide output file") 17 | 18 | args = ctx.actions.args() 19 | args.add(output) 20 | args.add_all(input_jars_deps) 21 | 22 | ctx.actions.run( 23 | executable = ctx.executable._combine_jars_java, 24 | inputs = input_jars_deps, 25 | arguments = [args], 26 | outputs = [output], 27 | ) 28 | -------------------------------------------------------------------------------- /build_extensions/maven/kotlin_info.bzl: -------------------------------------------------------------------------------- 1 | """Utility for determing if given target is a kotlin target""" 2 | 3 | load("@io_bazel_rules_kotlin//kotlin/internal:defs.bzl", "KtJvmInfo") 4 | 5 | def is_kotlin(target): 6 | return KtJvmInfo in target 7 | -------------------------------------------------------------------------------- /build_extensions/register_extension_info.bzl: -------------------------------------------------------------------------------- 1 | def register_extension_info(extension, label_regex_for_dep = None): 2 | """Stub definition for unsupported in bazel register_extension_info feature.""" 3 | -------------------------------------------------------------------------------- /build_extensions/robolectric.properties: -------------------------------------------------------------------------------- 1 | # Use SDK 34 by default 2 | sdk=34 3 | # make Robolectric match the emulator used 4 | qualifiers=w480dp-h800dp 5 | -------------------------------------------------------------------------------- /build_extensions/zip_combiner/java/androidx/test/tools/zipcombiner/BUILD: -------------------------------------------------------------------------------- 1 | load("@io_bazel_rules_kotlin//kotlin:jvm.bzl", "kt_jvm_library") 2 | 3 | package( 4 | default_visibility = [ 5 | "//:__subpackages__", 6 | ], 7 | ) 8 | 9 | kt_jvm_library( 10 | name = "zipcombiner_lib", 11 | srcs = glob([ 12 | "*.kt", 13 | ]), 14 | ) 15 | 16 | java_binary( 17 | name = "zipcombiner", 18 | srcs = ["Main.java"], 19 | main_class = "androidx.test.tools.zipcombiner.Main", 20 | deps = [ 21 | ":zipcombiner_lib", 22 | ], 23 | ) 24 | -------------------------------------------------------------------------------- /core/BUILD: -------------------------------------------------------------------------------- 1 | # Publicly visible androidx.test.core API library 2 | 3 | package( 4 | default_applicable_licenses = ["//:license"], 5 | default_testonly = 1, 6 | ) 7 | 8 | licenses(["notice"]) 9 | 10 | alias( 11 | name = "core", 12 | actual = "//core/java/androidx/test/core", 13 | visibility = ["//visibility:public"], 14 | ) 15 | 16 | # The manifest entries for ActivityScenario's bootstrap activities. 17 | # Add this to to your application under test to avoid a separate test process getting launched 18 | # for the bootstrap activities 19 | alias( 20 | name = "manifest", 21 | actual = "//core/java/androidx/test/core:manifest", 22 | visibility = ["//visibility:public"], 23 | ) 24 | -------------------------------------------------------------------------------- /core/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### Core Core-ktx {version} {:#core-{version}} 2 | 3 | {{date}} 4 | 5 | `androidx.test:core:{version}` and `androidx.test:core-ktx:{version}` are released. 6 | 7 | **Bug Fixes** 8 | 9 | **New Features** 10 | 11 | **Breaking Changes** 12 | 13 | **API Changes** 14 | 15 | **Breaking API Changes** 16 | 17 | **Known Issues** 18 | -------------------------------------------------------------------------------- /core/java/androidx/test/core/api/1.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.core.app { 3 | 4 | public final class DeviceCapture { 5 | method @RequiresApi(android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.test.annotation.ExperimentalTestApi public static android.graphics.Bitmap takeScreenshotNoSync() throws java.lang.RuntimeException; 6 | } 7 | 8 | } 9 | 10 | -------------------------------------------------------------------------------- /core/javatests/androidx/test/core/app/testing/AndroidManifest_empty.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /core/javatests/androidx/test/core/app/testing/IntentActivity.java: -------------------------------------------------------------------------------- 1 | package androidx.test.core.app.testing; 2 | 3 | import android.app.Activity; 4 | 5 | public class IntentActivity extends Activity {} 6 | -------------------------------------------------------------------------------- /core/javatests/androidx/test/core/graphics/BUILD: -------------------------------------------------------------------------------- 1 | # Description: Tests for androidx.test.core 2 | 3 | load("//build_extensions:android_library_test.bzl", "axt_android_library_test") 4 | 5 | package( 6 | default_applicable_licenses = ["//:license"], 7 | default_testonly = 1, 8 | ) 9 | 10 | licenses(["notice"]) 11 | 12 | axt_android_library_test( 13 | name = "BitmapStorageTest_android", 14 | srcs = 15 | ["BitmapStorageTest.kt"], 16 | deps = [ 17 | "//core", 18 | "//ext/junit", 19 | "//runner/monitor", 20 | "@maven//:junit_junit", 21 | ], 22 | ) 23 | -------------------------------------------------------------------------------- /espresso/BUILD: -------------------------------------------------------------------------------- 1 | load("@rules_license//rules:license.bzl", "license") 2 | 3 | package( 4 | default_applicable_licenses = ["//espresso:license"], 5 | default_testonly = 1, 6 | ) 7 | 8 | license( 9 | name = "license", 10 | package_name = "espresso", 11 | ) 12 | 13 | licenses(["notice"]) 14 | 15 | exports_files([ 16 | "proguard_binary.cfg", 17 | "LICENSE", 18 | ]) 19 | -------------------------------------------------------------------------------- /espresso/accessibility/java/androidx/test/espresso/accessibility/api/3.4.0_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.espresso.accessibility { 3 | 4 | public final class AccessibilityChecks { 5 | method public static androidx.test.espresso.ViewAssertion! accessibilityAssertion(); 6 | method public static void disable(); 7 | method public static AccessibilityValidator enable(); 8 | } 9 | 10 | } 11 | 12 | -------------------------------------------------------------------------------- /espresso/accessibility/java/androidx/test/espresso/accessibility/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/accessibility/java/androidx/test/espresso/accessibility/api/3.5.0_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.espresso.accessibility { 3 | 4 | public final class AccessibilityChecks { 5 | method public static androidx.test.espresso.ViewAssertion! accessibilityAssertion(); 6 | method public static void disable(); 7 | method public static com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator! enable(); 8 | } 9 | 10 | } 11 | 12 | -------------------------------------------------------------------------------- /espresso/accessibility/java/androidx/test/espresso/accessibility/api/3.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/accessibility/java/androidx/test/espresso/accessibility/api/3.6.0_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.espresso.accessibility { 3 | 4 | public final class AccessibilityChecks { 5 | method public static androidx.test.espresso.ViewAssertion! accessibilityAssertion(); 6 | method public static void disable(); 7 | method public static com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator! enable(); 8 | } 9 | 10 | } 11 | 12 | -------------------------------------------------------------------------------- /espresso/accessibility/java/androidx/test/espresso/accessibility/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/accessibility/java/androidx/test/espresso/accessibility/api/current_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.espresso.accessibility { 3 | 4 | public final class AccessibilityChecks { 5 | method public static androidx.test.espresso.ViewAssertion! accessibilityAssertion(); 6 | method public static void disable(); 7 | method public static com.google.android.apps.common.testing.accessibility.framework.integrations.espresso.AccessibilityValidator! enable(); 8 | } 9 | 10 | } 11 | 12 | -------------------------------------------------------------------------------- /espresso/contrib/java/androidx/test/espresso/contrib/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/contrib/java/androidx/test/espresso/contrib/api/3.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/contrib/java/androidx/test/espresso/contrib/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/contrib/java/androidx/test/espresso/contrib/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /espresso/core/BUILD: -------------------------------------------------------------------------------- 1 | # Alias for androidx.test.espresso.core API library 2 | 3 | package( 4 | default_applicable_licenses = ["//espresso:license"], 5 | default_testonly = 1, 6 | ) 7 | 8 | licenses(["notice"]) 9 | 10 | alias( 11 | name = "core", 12 | actual = "//espresso/core/java/androidx/test/espresso", 13 | visibility = ["//visibility:public"], 14 | ) 15 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/api/1.1.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/api/1.1.0_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.annotation { 3 | 4 | @RequiresOptIn @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.CLASS) @java.lang.annotation.Target({java.lang.annotation.ElementType.ANNOTATION_TYPE, java.lang.annotation.ElementType.CONSTRUCTOR, java.lang.annotation.ElementType.FIELD, java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE}) public @interface ExperimentalTestApi { 5 | } 6 | 7 | } 8 | 9 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/core/internal/deps/dagger/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Internal package that will contain shaded dagger classes for external release 3 | 4 | load("@rules_java//java:defs.bzl", "java_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//:license"], 10 | default_testonly = 1, 11 | default_visibility = ["//espresso/core/java/androidx/test/espresso:__pkg__"], 12 | ) 13 | 14 | java_library( 15 | name = "dagger", 16 | srcs = glob(["*java"]), 17 | deps = [ 18 | "//opensource/androidx:annotation", 19 | ], 20 | ) 21 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/core/internal/deps/guava/base/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Redefinition of repackaged guava classes that were mistakenly exposed in public EspressoOptional API 3 | 4 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//:license"], 10 | default_testonly = 1, 11 | default_visibility = ["//espresso/core/java/androidx/test/espresso:espresso_pkg"], 12 | ) 13 | 14 | android_library( 15 | name = "base", 16 | srcs = glob(["*java"]), 17 | deps = [ 18 | "//opensource/androidx:annotation", 19 | "//runner/monitor", 20 | ], 21 | ) 22 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/internal/data/BUILD: -------------------------------------------------------------------------------- 1 | # This package loads and stores test output artifact metadata for easier debugging of Espresso tests 2 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 3 | 4 | licenses(["notice"]) 5 | 6 | package( 7 | default_applicable_licenses = ["//espresso:license"], 8 | default_testonly = 1, 9 | default_visibility = ["//espresso/core/java/androidx/test/espresso:espresso_pkg"], 10 | ) 11 | 12 | android_library( 13 | name = "data", 14 | srcs = glob([ 15 | "*.java", 16 | ]), 17 | deps = [ 18 | "//espresso/core/java/androidx/test/espresso/action", 19 | "//espresso/core/java/androidx/test/espresso/internal/data/model", 20 | "//opensource/androidx:annotation", 21 | "//runner/monitor", 22 | ], 23 | ) 24 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/internal/data/model/BUILD: -------------------------------------------------------------------------------- 1 | # This package loads and stores test output artifact metadata for easier debugging of Espresso tests 2 | load("//build_extensions:kt_android_library.bzl", "kt_android_library") 3 | 4 | licenses(["notice"]) 5 | 6 | package( 7 | default_applicable_licenses = ["//espresso:license"], 8 | default_testonly = 1, 9 | default_visibility = ["//espresso/core/java/androidx/test/espresso:espresso_pkg"], 10 | ) 11 | 12 | kt_android_library( 13 | name = "model", 14 | srcs = glob([ 15 | "*.kt", 16 | "*.java", 17 | ]), 18 | deps = [ 19 | "//espresso/core/java/androidx/test/espresso:framework", 20 | "//opensource/androidx:annotation", 21 | "@maven//:org_hamcrest_hamcrest_core", 22 | ], 23 | ) 24 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/internal/inject/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Exposes test infrastructure as a dagger module. 3 | 4 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 5 | 6 | package( 7 | default_applicable_licenses = ["//espresso:license"], 8 | default_testonly = 1, 9 | ) 10 | 11 | licenses(["notice"]) 12 | 13 | android_library( 14 | name = "inject", 15 | srcs = glob(["*java"]), 16 | visibility = [ 17 | "//:__subpackages__", 18 | ], 19 | deps = [ 20 | "//opensource/androidx:annotation", 21 | "@maven//:javax_inject_javax_inject", 22 | ], 23 | ) 24 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/internal/package.html: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | {@hide} 20 | 21 | 22 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/proguard_library.cfg: -------------------------------------------------------------------------------- 1 | # Common proguard flags for all the espresso libraries. 2 | 3 | # ignore 'cannot find java.beans and mockito integration' warnings 4 | -dontwarn org.hamcrest.** 5 | 6 | # ignore 'can't find referenced class sun.misc.Unsafe' from guava 7 | -dontwarn androidx.test.espresso.core.deps.guava.** 8 | 9 | # ignore 'can't find referenced class javax.lang.model.element.Modifier' 10 | -dontwarn com.squareup.javawriter.JavaWriter 11 | 12 | # ignore 'can't find referenced class sun.misc.Unsafe, libcore.io.Memory' from protobuf 13 | -dontwarn androidx.test.espresso.core.deps.protobuf.** 14 | 15 | # ignore 'can't find referenced method android.app.Instrumentation' from android.jar 16 | -dontwarn androidx.test.runner.MonitoringInstrumentation 17 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/release_jarjar_rules.txt: -------------------------------------------------------------------------------- 1 | rule dagger.** androidx.test.espresso.core.internal.deps.dagger.@1 2 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/remote/annotation/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Annotations for espresso remote. 3 | 4 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//espresso:license"], 10 | default_testonly = 1, 11 | default_visibility = [ 12 | "//espresso/core/java/androidx/test/espresso:espresso_pkg", 13 | ], 14 | ) 15 | 16 | REMOTE_MSG_ANNOTATIONS = [ 17 | "RemoteMsgField.java", 18 | "RemoteMsgConstructor.java", 19 | ] 20 | 21 | android_library( 22 | name = "remote_msg_annotations", 23 | srcs = REMOTE_MSG_ANNOTATIONS, 24 | visibility = ["//visibility:public"], 25 | ) 26 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/util/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Utility classes 3 | 4 | load("//build_extensions:kt_android_library.bzl", "kt_android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//espresso:license"], 10 | default_testonly = 1, 11 | default_visibility = ["//visibility:public"], 12 | ) 13 | 14 | kt_android_library( 15 | name = "util", 16 | srcs = glob([ 17 | "*.java", 18 | "*.kt", 19 | ]), 20 | deps = [ 21 | "//espresso/core/java/androidx/test/espresso/core/internal/deps/guava/base", 22 | "//opensource/androidx:annotation", 23 | "//runner/android_junit_runner", 24 | "@maven//:org_hamcrest_hamcrest_core", 25 | "@maven_listenablefuture//:com_google_guava_listenablefuture", 26 | ], 27 | ) 28 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/util/ToStringHelper.kt: -------------------------------------------------------------------------------- 1 | package androidx.test.espresso.util 2 | 3 | import androidx.annotation.RestrictTo 4 | 5 | /** 6 | * Simplified version of guava's ToStringHelper. 7 | * 8 | * Used to help pretty prints an object and a set of its members. 9 | * 10 | * @hide 11 | */ 12 | @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) 13 | class ToStringHelper constructor(obj: Object) { 14 | 15 | private val clazzName = obj::class.simpleName 16 | private val nameValuePairs = mutableMapOf() 17 | 18 | fun add(name: String, obj: Object?): ToStringHelper { 19 | nameValuePairs[name] = obj?.toString() ?: "null" 20 | return this 21 | } 22 | 23 | override fun toString(): String { 24 | val s = nameValuePairs.map { (k, v) -> "$k=$v" }.joinToString(", ") 25 | return "$clazzName{$s}" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /espresso/core/java/androidx/test/espresso/util/concurrent/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Utility classes 3 | 4 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//:license"], 10 | default_testonly = 1, 11 | default_visibility = ["//espresso:__subpackages__"], 12 | ) 13 | 14 | android_library( 15 | name = "concurrent", 16 | srcs = glob([ 17 | "*.java", 18 | "*.kt", 19 | ]), 20 | deps = [ 21 | "//opensource/androidx:annotation", 22 | "//runner/monitor", 23 | "@maven_listenablefuture//:com_google_guava_listenablefuture", 24 | ], 25 | ) 26 | -------------------------------------------------------------------------------- /espresso/core/javatests/androidx/test/espresso/StringPatternMatcher.java: -------------------------------------------------------------------------------- 1 | package androidx.test.espresso; 2 | 3 | import org.hamcrest.core.SubstringMatcher; 4 | 5 | /** Simulates the MatchesPattern available in Hamcrest 2. */ 6 | class StringPatternMatcher extends SubstringMatcher { 7 | 8 | public StringPatternMatcher(String substringRegexPattern) { 9 | super(/* relationship= */ "matching", /* ignoringCase= */ false, substringRegexPattern); 10 | } 11 | 12 | @Override 13 | protected boolean evalSubstringOf(String s) { 14 | return s.matches(substring); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /espresso/device/BUILD: -------------------------------------------------------------------------------- 1 | # Alias for androidx.test.espresso.device API library 2 | 3 | package( 4 | default_applicable_licenses = ["//espresso:license"], 5 | default_testonly = 1, 6 | ) 7 | 8 | licenses(["notice"]) 9 | 10 | alias( 11 | name = "device", 12 | actual = "//espresso/device/java/androidx/test/espresso/device", 13 | visibility = ["//visibility:public"], 14 | ) 15 | -------------------------------------------------------------------------------- /espresso/device/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### Espresso Device {version} {:#espresso-device-{version}} 2 | 3 | {{date}} 4 | 5 | `androidx.test.espresso:espresso-device:{version}` is released. 6 | 7 | **Bug Fixes** 8 | 9 | **New Features** 10 | 11 | **Breaking Changes** 12 | 13 | **API Changes** 14 | 15 | **Breaking API Changes** 16 | 17 | **Known Issues** 18 | -------------------------------------------------------------------------------- /espresso/device/java/androidx/test/espresso/device/api/1.0.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/device/java/androidx/test/espresso/device/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/device/java/androidx/test/espresso/device/common/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Espresso Device shared utils 3 | 4 | load("//build_extensions:kt_android_library.bzl", "kt_android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//espresso:license"], 10 | default_testonly = 1, 11 | default_visibility = [ 12 | "//espresso/device/java/androidx/test/espresso/device:device_pkg", 13 | ], 14 | ) 15 | 16 | kt_android_library( 17 | name = "common", 18 | srcs = glob([ 19 | "*.kt", 20 | "*.java", 21 | ]), 22 | deps = [ 23 | "//opensource/androidx:annotation", 24 | "//runner/monitor", 25 | ], 26 | ) 27 | -------------------------------------------------------------------------------- /espresso/device/java/androidx/test/espresso/device/internal/deps/emulator/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Internal package for jarjar-ed shaded classes 3 | 4 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//espresso:license"], 10 | default_testonly = 1, 11 | default_visibility = [ 12 | "//espresso/device/java/androidx/test/espresso/device:device_pkg", 13 | ], 14 | ) 15 | 16 | android_library( 17 | name = "emulator", 18 | srcs = glob(["*.java"]), 19 | deps = ["//opensource/androidx:annotation"], 20 | ) 21 | -------------------------------------------------------------------------------- /espresso/device/java/androidx/test/espresso/device/release_jarjar_rules.txt: -------------------------------------------------------------------------------- 1 | rule dagger.** androidx.test.espresso.device.internal.deps.dagger.@1 2 | rule com.google.protobuf.** androidx.test.espresso.device.internal.deps.protobuf.@1 3 | rule com.android.emulator.control.** androidx.test.espresso.device.internal.deps.emulator.@1 4 | rule io.grpc.protobuf.** androidx.test.espresso.device.internal.deps.grpc.protobuf.@1 -------------------------------------------------------------------------------- /espresso/device/java/androidx/test/espresso/device/sizeclass/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Size classes 3 | 4 | load("//build_extensions:kt_android_library.bzl", "kt_android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//espresso:license"], 10 | default_testonly = 1, 11 | default_visibility = [ 12 | "//espresso/device/java/androidx/test/espresso/device:device_pkg", 13 | ], 14 | ) 15 | 16 | kt_android_library( 17 | name = "sizeclass", 18 | srcs = glob(["*.kt"]), 19 | deps = [ 20 | "//runner/monitor", 21 | "@maven//:androidx_window_window_core", 22 | ], 23 | ) 24 | -------------------------------------------------------------------------------- /espresso/idling_resource/concurrent/java/androidx/test/espresso/idling/concurrent/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/concurrent/java/androidx/test/espresso/idling/concurrent/api/3.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/concurrent/java/androidx/test/espresso/idling/concurrent/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/java/androidx/test/espresso/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/java/androidx/test/espresso/api/3.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/java/androidx/test/espresso/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/javatests/androidx/test/espresso/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Tests for espresso idling resources 3 | 4 | load( 5 | "//build_extensions:android_library_test.bzl", 6 | "axt_android_library_test", 7 | ) 8 | 9 | package( 10 | default_applicable_licenses = ["//espresso:license"], 11 | default_testonly = 1, 12 | ) 13 | 14 | licenses(["notice"]) 15 | 16 | axt_android_library_test( 17 | name = "IdlingRegistryTest", 18 | srcs = ["IdlingRegistryTest.java"], 19 | deps = [ 20 | "//core", 21 | "//espresso/idling_resource/java/androidx/test/espresso:idling_resource_internal", 22 | "//ext/junit", 23 | "//runner/android_junit_runner", 24 | "@maven//:junit_junit", 25 | "@maven//:org_mockito_mockito_core", 26 | ], 27 | ) 28 | -------------------------------------------------------------------------------- /espresso/idling_resource/javatests/androidx/test/espresso/idling/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Tests for espresso idling resources 3 | 4 | load( 5 | "//build_extensions:android_library_test.bzl", 6 | "axt_android_library_test", 7 | ) 8 | 9 | package( 10 | default_applicable_licenses = ["//espresso:license"], 11 | default_testonly = 1, 12 | ) 13 | 14 | licenses(["notice"]) 15 | 16 | axt_android_library_test( 17 | name = "CountingIdlingResourceTest", 18 | srcs = ["CountingIdlingResourceTest.java"], 19 | deps = [ 20 | "//core", 21 | "//espresso/idling_resource/java/androidx/test/espresso:idling_resource_internal", 22 | "//ext/junit", 23 | "//runner/android_junit_runner", 24 | "@maven//:junit_junit", 25 | "@maven//:org_mockito_mockito_core", 26 | ], 27 | ) 28 | -------------------------------------------------------------------------------- /espresso/idling_resource/net/java/androidx/test/espresso/idling/net/api/3.4.0_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.espresso.idling.net { 3 | 4 | public class UriIdlingResource implements androidx.test.espresso.IdlingResource { 5 | ctor public UriIdlingResource(String!, long); 6 | method public void beginLoad(String!); 7 | method public void endLoad(String!); 8 | method public String! getName(); 9 | method public void ignoreUri(java.util.regex.Pattern!); 10 | method public boolean isIdleNow(); 11 | method public void registerIdleTransitionCallback(androidx.test.espresso.IdlingResource.ResourceCallback!); 12 | } 13 | 14 | public static interface UriIdlingResource.HandlerIntf { 15 | method public void postDelayed(Runnable!, long); 16 | method public void removeCallbacks(Runnable!); 17 | } 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /espresso/idling_resource/net/java/androidx/test/espresso/idling/net/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/net/java/androidx/test/espresso/idling/net/api/3.5.0_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.espresso.idling.net { 3 | 4 | public class UriIdlingResource implements androidx.test.espresso.IdlingResource { 5 | ctor public UriIdlingResource(String!, long); 6 | method public void beginLoad(String!); 7 | method public void endLoad(String!); 8 | method public String! getName(); 9 | method public void ignoreUri(java.util.regex.Pattern!); 10 | method public boolean isIdleNow(); 11 | method public void registerIdleTransitionCallback(androidx.test.espresso.IdlingResource.ResourceCallback!); 12 | } 13 | 14 | public static interface UriIdlingResource.HandlerIntf { 15 | method public void postDelayed(Runnable!, long); 16 | method public void removeCallbacks(Runnable!); 17 | } 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /espresso/idling_resource/net/java/androidx/test/espresso/idling/net/api/3.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/net/java/androidx/test/espresso/idling/net/api/3.6.0_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.espresso.idling.net { 3 | 4 | public class UriIdlingResource implements androidx.test.espresso.IdlingResource { 5 | ctor public UriIdlingResource(String!, long); 6 | method public void beginLoad(String!); 7 | method public void endLoad(String!); 8 | method public String! getName(); 9 | method public void ignoreUri(java.util.regex.Pattern!); 10 | method public boolean isIdleNow(); 11 | method public void registerIdleTransitionCallback(androidx.test.espresso.IdlingResource.ResourceCallback!); 12 | } 13 | 14 | public static interface UriIdlingResource.HandlerIntf { 15 | method public void postDelayed(Runnable!, long); 16 | method public void removeCallbacks(Runnable!); 17 | } 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /espresso/idling_resource/net/java/androidx/test/espresso/idling/net/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/idling_resource/net/java/androidx/test/espresso/idling/net/api/current_public.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | package androidx.test.espresso.idling.net { 3 | 4 | public class UriIdlingResource implements androidx.test.espresso.IdlingResource { 5 | ctor public UriIdlingResource(String!, long); 6 | method public void beginLoad(String!); 7 | method public void endLoad(String!); 8 | method public String! getName(); 9 | method public void ignoreUri(java.util.regex.Pattern!); 10 | method public boolean isIdleNow(); 11 | method public void registerIdleTransitionCallback(androidx.test.espresso.IdlingResource.ResourceCallback!); 12 | } 13 | 14 | public static interface UriIdlingResource.HandlerIntf { 15 | method public void postDelayed(Runnable!, long); 16 | method public void removeCallbacks(Runnable!); 17 | } 18 | 19 | } 20 | 21 | -------------------------------------------------------------------------------- /espresso/intents/java/androidx/test/espresso/intent/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/intents/java/androidx/test/espresso/intent/api/3.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/intents/java/androidx/test/espresso/intent/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/intents/java/androidx/test/espresso/intent/rule/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # JUnit4 Rules for Intents 3 | 4 | load("//build_extensions:kt_android_library.bzl", "kt_android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//espresso:license"], 10 | default_testonly = 1, 11 | default_visibility = ["//visibility:public"], 12 | ) 13 | 14 | kt_android_library( 15 | name = "rule", 16 | srcs = glob( 17 | [ 18 | "*.java", 19 | "*.kt", 20 | ], 21 | ), 22 | deps = [ 23 | "//espresso/intents/java/androidx/test/espresso/intent:intents", 24 | "//runner/rules", 25 | "@maven//:junit_junit", 26 | ], 27 | ) 28 | -------------------------------------------------------------------------------- /espresso/intents/java/androidx/test/espresso/intent/rule/IntentsRule.kt: -------------------------------------------------------------------------------- 1 | package androidx.test.espresso.intent.rule 2 | 3 | import androidx.test.espresso.intent.Intents 4 | import org.junit.rules.ExternalResource 5 | 6 | /** 7 | * Rule for performing set up and tear down of Espresso-Intents API. 8 | * 9 | * Usage: `@Rule public IntentsRule intentsRule = new IntentsRule()` 10 | * 11 | * Then in a test method: `Intents.intended(IntentMatchers.hasComponent("com.example.FooActivity"))` 12 | */ 13 | class IntentsRule : ExternalResource() { 14 | 15 | override fun before() = Intents.init() 16 | 17 | override fun after() = Intents.release() 18 | } 19 | -------------------------------------------------------------------------------- /espresso/remote/BUILD: -------------------------------------------------------------------------------- 1 | # Alias for androidx.test.espresso.remote API library 2 | 3 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 4 | 5 | package( 6 | default_applicable_licenses = ["//espresso:license"], 7 | default_testonly = 1, 8 | ) 9 | 10 | licenses(["notice"]) 11 | 12 | android_library( 13 | name = "remote", 14 | visibility = ["//visibility:public"], 15 | exports = [ 16 | "//espresso/remote/java/androidx/test/espresso/remote", 17 | "//espresso/remote/java/androidx/test/espresso/web/proto/assertion:web_assertions_proto_android_pb3", 18 | ], 19 | ) 20 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/action/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** @hide */ 18 | @RestrictTo(Scope.LIBRARY) 19 | package androidx.test.espresso.action; 20 | 21 | import androidx.annotation.RestrictTo; 22 | import androidx.annotation.RestrictTo.Scope; 23 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/matcher/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** @hide */ 18 | @RestrictTo(Scope.LIBRARY) 19 | package androidx.test.espresso.matcher; 20 | 21 | import androidx.annotation.RestrictTo; 22 | import androidx.annotation.RestrictTo.Scope; 23 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/proto/assertion/view_assertions.proto: -------------------------------------------------------------------------------- 1 | // LINT: LEGACY_NAMES 2 | syntax = "proto3"; 3 | 4 | package google.test.remote.ui.action; 5 | 6 | import "google/protobuf/any.proto"; 7 | 8 | option java_package = "androidx.test.espresso.proto.assertion"; 9 | 10 | message MatchesViewAssertionProto { 11 | string id = 1; 12 | google.protobuf.Any viewMatcher = 2; 13 | } 14 | 15 | message DoesNotExistViewAssertionProto { 16 | string id = 1; 17 | } 18 | 19 | message SelectedDescendantsMatchViewAssertionProto { 20 | string id = 1; 21 | google.protobuf.Any selector = 2; 22 | google.protobuf.Any matcher = 3; 23 | } 24 | 25 | message NoOverlapsViewAssertionProto { 26 | string id = 1; 27 | google.protobuf.Any selector = 2; 28 | } 29 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/proto/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2021 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** @hide */ 18 | @RestrictTo(Scope.LIBRARY) 19 | package androidx.test.espresso.proto; 20 | 21 | import androidx.annotation.RestrictTo; 22 | import androidx.annotation.RestrictTo.Scope; 23 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/proto/ui_interaction.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package google.test.remote.ui; 4 | 5 | import "google/protobuf/any.proto"; 6 | 7 | option java_package = "androidx.test.espresso.proto"; 8 | 9 | message InteractionRequestProto { 10 | google.protobuf.Any view_matcher = 1; 11 | oneof action_or_assertion { 12 | google.protobuf.Any view_action = 2; 13 | google.protobuf.Any view_assertion = 3; 14 | } 15 | google.protobuf.Any root_matcher = 4; 16 | } 17 | 18 | message Error { 19 | int32 code = 1; 20 | string description = 2; 21 | Error nested_error = 3; 22 | } 23 | 24 | message InteractionResultProto { 25 | bool ok = 1; 26 | google.protobuf.Any payload = 2; 27 | Error error_msg = 3; 28 | } -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/remote/aar_jarjar_rules.txt: -------------------------------------------------------------------------------- 1 | rule com.google.protobuf.** androidx.test.espresso.remote.internal.deps.protobuf.@1 2 | 3 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/remote/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/remote/api/3.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/remote/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/remote/proguard_library.cfg: -------------------------------------------------------------------------------- 1 | # Common proguard flags for all the espresso libraries. 2 | 3 | # ignore 'can't find referenced class sun.misc.Unsafe' from guava 4 | -dontwarn androidx.test.espresso.remote.deps.guava.** 5 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/web/proto/action/web_actions.proto: -------------------------------------------------------------------------------- 1 | // LINT: LEGACY_NAMES 2 | syntax = "proto3"; 3 | 4 | package google.test.remote.web.action; 5 | 6 | import "google/protobuf/any.proto"; 7 | 8 | option java_package = "androidx.test.espresso.web.proto.action"; 9 | 10 | message AtomActionProto { 11 | string id = 1; 12 | 13 | google.protobuf.Any atom = 2; 14 | google.protobuf.Any window = 3; 15 | google.protobuf.Any element = 4; 16 | } 17 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/web/proto/model/web_model_atoms.proto: -------------------------------------------------------------------------------- 1 | // LINT: LEGACY_NAMES 2 | syntax = "proto3"; 3 | 4 | package google.test.remote.web.model; 5 | 6 | import "google/protobuf/any.proto"; 7 | 8 | option java_package = "androidx.test.espresso.web.proto.model"; 9 | 10 | message CastOrDieAtomProto { 11 | string id = 1; 12 | bytes clazz = 2; 13 | } 14 | 15 | message ElementReferenceProto { 16 | string id = 1; 17 | bytes opaque = 2; 18 | } 19 | 20 | message WindowReferenceProto { 21 | string id = 1; 22 | bytes opaque = 2; 23 | } 24 | 25 | message ScriptWithArgsSimpleAtomProto { 26 | string id = 1; 27 | string script = 2; 28 | repeated bytes args = 3; 29 | } 30 | 31 | message TransformingAtomProto { 32 | string id = 1; 33 | google.protobuf.Any parent = 2; 34 | google.protobuf.Any transformer = 3; 35 | } 36 | -------------------------------------------------------------------------------- /espresso/remote/java/androidx/test/espresso/web/proto/sugar/web_sugar.proto: -------------------------------------------------------------------------------- 1 | // LINT: LEGACY_NAMES 2 | syntax = "proto3"; 3 | 4 | package google.test.remote.web.sugar; 5 | 6 | option java_package = "androidx.test.espresso.web.proto.sugar"; 7 | 8 | message ExceptionPropagatorProto { 9 | string id = 1; 10 | bytes error = 2; 11 | } 12 | -------------------------------------------------------------------------------- /espresso/remote/javatests/androidx/test/espresso/proto/BUILD: -------------------------------------------------------------------------------- 1 | # Protocol buffer definitions for any proto transformers. Only used in tests! 2 | 3 | load("@com_google_protobuf//bazel:java_lite_proto_library.bzl", "java_lite_proto_library") 4 | load("@com_google_protobuf//bazel:proto_library.bzl", "proto_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//espresso:license"], 10 | default_testonly = 1, 11 | default_visibility = ["//opensource/visibility:testing_pkg"], 12 | ) 13 | 14 | proto_library( 15 | name = "test_protos", 16 | srcs = ["test_protos.proto"], 17 | deps = [ 18 | "@com_google_protobuf//:any_proto", 19 | ], 20 | ) 21 | 22 | java_lite_proto_library( 23 | name = "test_protos_android_pb3", 24 | deps = [ 25 | ":test_protos", 26 | ], 27 | ) 28 | -------------------------------------------------------------------------------- /espresso/web/BUILD: -------------------------------------------------------------------------------- 1 | # Alias for androidx.test.espresso.web API library 2 | 3 | package( 4 | default_applicable_licenses = ["//espresso:license"], 5 | default_testonly = 1, 6 | ) 7 | 8 | licenses(["notice"]) 9 | 10 | alias( 11 | name = "web", 12 | actual = "//espresso/web/java/androidx/test/espresso/web:espresso_web_aar_lib", 13 | visibility = ["//visibility:public"], 14 | ) 15 | -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/api/3.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/api/3.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/bridge/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/model/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Encoder/Decoders for WebView / JSON. 3 | # Atom interface for wrapping javascripts. 4 | 5 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 6 | 7 | package( 8 | default_applicable_licenses = ["//espresso:license"], 9 | default_testonly = 1, 10 | default_visibility = ["//visibility:public"], 11 | ) 12 | 13 | licenses(["notice"]) 14 | 15 | android_library( 16 | name = "model", 17 | srcs = glob( 18 | ["*.java"], 19 | ), 20 | custom_package = "androidx.test.espresso.web.model", 21 | idl_import_root = "idls", 22 | idl_parcelables = glob(["idls/**"]), 23 | deps = [ 24 | "//espresso/core/java/androidx/test/espresso/remote/annotation:remote_msg_annotations", 25 | "//opensource/androidx:annotation", 26 | "//runner/monitor", 27 | ], 28 | ) 29 | -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/model/idls/androidx/test/espresso/web/model/Evaluation.aidl: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2017 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package androidx.test.espresso.web.model; 18 | 19 | parcelable Evaluation; -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/proguard_library.cfg: -------------------------------------------------------------------------------- 1 | # Common proguard flags for all the espresso libraries. 2 | 3 | # ignore 'cannot find java.beans and mockito integration' warnings 4 | -dontwarn org.hamcrest.** 5 | 6 | # ignore 'can't find referenced class sun.misc.Unsafe' from guava 7 | -dontwarn androidx.test.espresso.web.deps.guava.** -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/util/concurrent/BUILD: -------------------------------------------------------------------------------- 1 | # Description: 2 | # Espresso Web Actions 3 | 4 | load("@build_bazel_rules_android//android:rules.bzl", "android_library") 5 | 6 | licenses(["notice"]) 7 | 8 | package( 9 | default_applicable_licenses = ["//:license"], 10 | default_testonly = 1, 11 | default_visibility = ["//espresso/web:__subpackages__"], 12 | ) 13 | 14 | android_library( 15 | name = "concurrent", 16 | srcs = glob( 17 | ["*.java"], 18 | ), 19 | deps = [ 20 | "//opensource/androidx:annotation", 21 | "//runner/monitor", 22 | "@maven//:androidx_concurrent_concurrent_futures", 23 | "@maven//:org_jetbrains_kotlin_kotlin_stdlib", 24 | "@maven_listenablefuture//:com_google_guava_listenablefuture", 25 | ], 26 | ) 27 | -------------------------------------------------------------------------------- /espresso/web/java/androidx/test/espresso/web/util/concurrent/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /** @hide */ 18 | @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) 19 | package androidx.test.espresso.web.util.concurrent; 20 | 21 | import androidx.annotation.RestrictTo; 22 | -------------------------------------------------------------------------------- /espresso/web/javatests/androidx/test/espresso/web/matcher/BUILD: -------------------------------------------------------------------------------- 1 | # Description: Tests for espresso web 2 | 3 | load( 4 | "//build_extensions:android_library_test.bzl", 5 | "axt_android_library_test", 6 | ) 7 | 8 | package( 9 | default_applicable_licenses = ["//espresso:license"], 10 | default_testonly = 1, 11 | ) 12 | 13 | licenses(["notice"]) 14 | 15 | axt_android_library_test( 16 | name = "DomMatchersTest", 17 | srcs = ["DomMatchersTest.java"], 18 | deps = [ 19 | "//core", 20 | "//espresso/core", 21 | "//espresso/web", 22 | "//ext/junit", 23 | "//runner/android_junit_runner", 24 | "//testapps/ui_testapp/java/androidx/test/ui/app:lib_exported", 25 | "@maven//:junit_junit", 26 | "@maven//:org_hamcrest_hamcrest_core", 27 | "@maven//:org_hamcrest_hamcrest_library", 28 | ], 29 | ) 30 | -------------------------------------------------------------------------------- /ext/junit/BUILD: -------------------------------------------------------------------------------- 1 | # Publicly visible junit extensions for Android 2 | 3 | package( 4 | default_applicable_licenses = ["//:license"], 5 | default_testonly = 1, 6 | ) 7 | 8 | licenses(["notice"]) 9 | 10 | alias( 11 | name = "junit", 12 | actual = "//ext/junit/java/androidx/test/ext/junit", 13 | visibility = ["//visibility:public"], 14 | ) 15 | -------------------------------------------------------------------------------- /ext/junit/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### ext.junit {version} {:#ext.junit-{version}} 2 | 3 | {{date}} 4 | 5 | `androidx.test.ext:junit:{version}` and `androidx.test.ext:junit-ktx:{version}` 6 | are released. 7 | 8 | **Bug Fixes** 9 | 10 | **New Features** 11 | 12 | **Breaking Changes** 13 | 14 | **API Changes** 15 | 16 | **Breaking API Changes** 17 | 18 | **Known Issues** 19 | -------------------------------------------------------------------------------- /ext/junit/java/androidx/test/ext/junit/api/1.1.4_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /ext/junit/java/androidx/test/ext/junit/api/1.2.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /ext/junit/java/androidx/test/ext/junit/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /ext/truth/BUILD: -------------------------------------------------------------------------------- 1 | # Publicly visible truth extensions for Android 2 | 3 | load("@rules_java//java:defs.bzl", "java_library") 4 | 5 | package( 6 | default_applicable_licenses = ["//:license"], 7 | default_testonly = 1, 8 | ) 9 | 10 | licenses(["notice"]) 11 | 12 | # This needs to be a java_library instead of an alias, so java_* based rules can reference it 13 | java_library( 14 | name = "truth", 15 | visibility = ["//visibility:public"], 16 | exports = ["//ext/truth/java/androidx/test/ext/truth"], 17 | ) 18 | -------------------------------------------------------------------------------- /ext/truth/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### ext.truth {version} {:#ext.truth-{version}} 2 | 3 | {{date}} 4 | 5 | `androidx.test.ext:truth:{version}` is released. 6 | 7 | **Bug Fixes** 8 | 9 | **New Features** 10 | 11 | **Breaking Changes** 12 | 13 | **API Changes** 14 | 15 | **Breaking API Changes** 16 | 17 | **Known Issues** 18 | -------------------------------------------------------------------------------- /ext/truth/java/androidx/test/ext/truth/api/1.5.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /ext/truth/java/androidx/test/ext/truth/api/1.6.0_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /ext/truth/java/androidx/test/ext/truth/api/current_internal.txt: -------------------------------------------------------------------------------- 1 | // Signature format: 3.0 2 | -------------------------------------------------------------------------------- /gradle-tests/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .gradle 3 | build 4 | local.properties 5 | -------------------------------------------------------------------------------- /gradle-tests/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | plugins { 3 | id 'com.android.library' version '8.9.0' apply false 4 | id 'org.jetbrains.kotlin.android' version '2.1.0' apply false 5 | } 6 | tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) { 7 | kotlinOptions { 8 | jvmTarget = "17" 9 | } 10 | } 11 | 12 | ext { 13 | minSdk = 21 14 | targetSdk = 34 15 | compileSdk = 34 16 | emulatorApi = 33 17 | } 18 | -------------------------------------------------------------------------------- /gradle-tests/espresso/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea 5 | .DS_Store 6 | /build 7 | /captures 8 | .externalNativeBuild 9 | .cxx 10 | local.properties 11 | -------------------------------------------------------------------------------- /gradle-tests/espresso/accessibility/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /gradle-tests/espresso/accessibility/src/main/java/androidx/test/gradletests/espresso/accessibility/EspressoAccessibilityActivity.kt: -------------------------------------------------------------------------------- 1 | package androidx.test.gradletests.espresso.accessibility 2 | 3 | import android.app.Activity 4 | import android.content.Intent 5 | import android.net.Uri 6 | import android.os.Bundle 7 | import android.view.View 8 | 9 | class EspressoAccessibilityActivity : Activity(), View.OnClickListener { 10 | 11 | override fun onCreate(savedInstanceState: Bundle?) { 12 | super.onCreate(savedInstanceState) 13 | setContentView(R.layout.activity_espresso_accessibility) 14 | } 15 | 16 | override fun onClick(view: View) { 17 | val intent = Intent(Intent.ACTION_VIEW) 18 | intent.setData(Uri.parse("http://developer.android.com")) 19 | startActivity(intent) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /gradle-tests/espresso/accessibility/src/main/res/layout/activity_espresso_accessibility.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 |