appium-espresso-driver 1.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/LICENSE +201 -0
- package/README.md +864 -0
- package/build/index.js +48 -0
- package/build/lib/commands/execute.js +67 -0
- package/build/lib/commands/general.js +337 -0
- package/build/lib/commands/idling-resources.js +31 -0
- package/build/lib/commands/index.js +26 -0
- package/build/lib/commands/services.js +27 -0
- package/build/lib/desired-caps.js +65 -0
- package/build/lib/driver.js +475 -0
- package/build/lib/espresso-runner.js +381 -0
- package/build/lib/logger.js +18 -0
- package/build/lib/server-builder.js +213 -0
- package/build/lib/server.js +39 -0
- package/build/lib/utils.js +85 -0
- package/espresso-server/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk +0 -0
- package/espresso-server/app/build/outputs/apk/androidTest/debug/output-metadata.json +18 -0
- package/espresso-server/app/build.gradle.kts +153 -0
- package/espresso-server/app/proguard-rules.pro +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/EspressoServerRunnerTest.kt +93 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/AppDriver.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/ComposeDriver.kt +73 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/DriverContext.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/drivers/EspressoDriver.kt +70 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/AcceptAlert.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Back.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Clear.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Click.kt +27 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/CreateSession.kt +58 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DeleteSession.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DismissAlert.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/DrawerActionHandler.kt +45 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementEquals.kt +19 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementScreenshot.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ElementValue.kt +85 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindActive.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindElement.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/FindElements.kt +43 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetAlertText.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetAttribute.kt +101 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetClipboard.kt +65 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetDeviceInfo.kt +44 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetDisplayed.kt +28 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetEnabled.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetLocation.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetLocationInView.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetName.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetOrientation.kt +44 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetRect.kt +38 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetRotation.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSelected.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSession.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSessions.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSettings.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetSize.kt +32 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetToastVisibility.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetWindowRect.kt +43 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/GetWindowSize.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/HideKeyboard.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Keys.kt +82 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ListIdlingResources.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileBackdoor.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileClickAction.kt +49 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileSwipe.kt +71 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MobileViewFlash.kt +50 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MoveTo.kt +50 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MultiTouchAction.kt +50 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NavigateTo.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NoSessionCommandHandler.kt +4 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NotYetImplemented.kt +28 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/OpenNotifications.kt +28 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformAction.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformAutofillDismissal.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PerformEditorAction.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PointerEventHandler.kt +281 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/PressKeyCode.kt +90 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/RegisterIdlingResources.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ReleaseActions.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/RequestHandler.kt +43 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ScreenshotHandler.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/ScrollToPage.kt +60 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetClipboard.kt +64 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetDate.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetOrientation.kt +61 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetRotation.kt +46 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/SetTime.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Source.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StartActivity.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StartService.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Status.kt +26 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/StopService.kt +37 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Text.kt +28 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/TouchAction.kt +49 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/Uiautomator.kt +68 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UiautomatorPageSource.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UnregisterIdlingResources.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/UpdateSettings.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/WebAtoms.kt +69 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/AppiumException.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/DuplicateRouteException.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/ElementNotVisibleException.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidArgumentException.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidElementStateException.kt +41 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/InvalidSelectorException.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/MoveTargetOutOfBoundsException.kt +39 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoAlertOpenException.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoSuchDriverException.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NoSuchElementException.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/NotYetImplementedException.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/ScreenCaptureException.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/SessionNotCreatedException.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/StaleElementException.kt +30 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/exceptions/XPathLookupException.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AccessibilityServiceState.kt +15 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ActivityHelpers.kt +125 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ActivityOptionsHelpers.kt +60 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AlertHelpers.kt +170 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AndroidLogger.kt +45 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AssertHelpers.kt +17 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/AutofillHelpers.kt +44 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/BackdoorUtils.java +49 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ClipboardHelper.kt +51 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ComposeNodeFinder.kt +59 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/DeviceInfoHelper.kt +148 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/EspressoViewsCache.kt +57 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/GsonParserHelpers.kt +72 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/IMEHelpers.kt +88 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/IntentHelpers.kt +336 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/InteractionHelper.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/InvocationOperation.java +80 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/LocaleHelpers.kt +46 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/Logger.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/NotificationListener.kt +87 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/Rect.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ReflectionUtils.kt +64 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ScreenshotsHelper.kt +59 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/StringHelpers.kt +42 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ThreadHelpers.kt +15 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/UiAutomationWrapper.kt +48 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/ViewFinder.kt +316 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/XMLHelpers.kt +56 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/extensions/Semaphore.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/ArrayUtils.java +110 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/ClassUtils.java +180 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/MethodUtils.java +155 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/reflection/Validate.java +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/BaseW3CActionAdapter.kt +71 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/DummyW3CActionAdapter.kt +133 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/W3CActionAdapter.kt +71 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/AndroidKeyEvent.kt +271 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/AndroidMotionEvent.kt +90 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/EspressoW3CActionAdapter.kt +147 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/Helpers.kt +71 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/MotionEventBuilder.kt +153 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/MultiTouchState.kt +132 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/adapter/espresso/TouchState.kt +7 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/caps/CapsUtils.kt +96 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/BaseDispatchResult.kt +14 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/DispatchPointerMoveResult.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/KeyDispatch.kt +151 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/PointerDispatch.kt +286 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/W3CKeyEvent.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyCodeMapper.kt +169 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyLocationMapper.kt +50 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/KeyNormalizer.kt +84 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/dispatcher/constants/NormalizedKeys.kt +60 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/ActionObject.kt +138 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/ActionSequence.kt +112 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Actions.kt +89 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/InputSource.kt +173 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Origin.kt +24 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/OriginDeserializer.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/models/Tick.kt +62 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/ActionsProcessor.kt +93 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/KeyProcessor.kt +57 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/PauseProcessor.kt +59 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/PointerProcessor.kt +115 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/processor/ProcessorHelpers.kt +35 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/ActiveInputSources.kt +62 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/InputState.kt +6 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/InputStateTable.kt +95 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/KeyInputState.kt +82 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/helpers/w3c/state/PointerInputState.kt +45 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/RouteDefinition.kt +67 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/RouteMap.kt +51 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/Router.kt +250 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/Server.kt +109 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/response/AppiumResponse.kt +61 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/http/response/BaseResponse.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/AlertParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/AppiumParams.kt +55 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/BackdoorMethodArg.kt +3 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ClipboardDataType.kt +18 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/DrawerActionParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/EditorActionParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Element.kt +169 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/GetClipboardParams.kt +27 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/GlobalSession.kt +64 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/HamcrestMatcher.kt +144 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/IdlingResourcesParams.kt +66 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/KeyEventParams.kt +23 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/LocaleParams.kt +34 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Location.kt +19 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Locator.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MatcherJson.kt +37 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileBackdoorMethod.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileBackdoorParams.kt +20 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileClickActionParams.kt +81 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MobileSwipeParams.kt +106 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MotionEventParams.kt +37 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MoveToParams.kt +26 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/MultiTouchActionsParams.kt +5 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/NavigateToParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/OrientationParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/OrientationType.kt +6 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Rect.kt +24 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/RotationParams.kt +38 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ScrollToPageParams.kt +36 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SessionParams.kt +23 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetClipboardParams.kt +29 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetDateParams.kt +23 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SetTimeParams.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SettingsParams.kt +19 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Size.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/SourceDocument.kt +286 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StartActivityParams.kt +9 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StartServiceParams.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/StopServiceParams.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/Strategy.kt +49 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TextValueParams.kt +6 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ToastLookupParams.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TouchAction.kt +178 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/TouchActionsParams.kt +5 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/UiautomatorParams.kt +123 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewAttributesEnum.kt +51 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewElement.kt +204 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewFlashParams.kt +9 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/ViewText.kt +12 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/WindowRect.kt +24 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/WindowSize.kt +22 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/AbstractSetting.kt +23 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/DriverSetting.kt +40 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/settings/SettingType.kt +21 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtom.kt +26 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomDeserializer.kt +99 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomsMethods.kt +4 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/web/WebAtomsParams.kt +9 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/OrientationChange.kt +47 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ScrollTo.kt +48 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/UiControllerPerformer.kt +67 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/UiControllerRunnable.kt +25 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ViewGetter.kt +79 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewaction/ViewTextGetter.kt +31 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/RegexpTextMatcher.kt +38 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/WithView.kt +33 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/viewmatcher/WithXPath.kt +55 -0
- package/espresso-server/app/src/main/AndroidManifest.xml +7 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/Helpers.kt +20 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/backdoor-methods.json +51 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/key-actions.json +15 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/assets/multi-touch-actions.json +28 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/GsonParserHelpersTest.kt +41 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/IntentCreationTests.kt +115 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/InvocationOperationTest.java +97 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/KReflectionUtilsTest.kt +108 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/XpathQueryParserTests.kt +42 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ActionSequenceTest.kt +220 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ActionsTest.kt +76 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/CapsUtilsTest.kt +76 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/Helpers.kt +7 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/InputSourceTest.kt +153 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/InputStateTableTest.kt +72 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/KeyDispatchTest.kt +133 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/KeyInputStateTest.kt +74 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/PointerDispatchTest.kt +370 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/ProcessorTest.kt +320 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/TickTest.kt +265 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/adapter/AndroidKeyEventTest.kt +114 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/helpers/w3c/adapter/HelpersTest.kt +31 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/http/RouteDefinitionTest.kt +74 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/HamcrestMatcherTest.kt +112 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MatcherJsonTest.kt +20 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileBackdoorMethodTest.java +110 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileClickTest.kt +46 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/MobileSwipeTest.kt +68 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/TouchActionTest.kt +56 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/web/WebAtomTest.kt +68 -0
- package/espresso-server/app/src/test/java/io/appium/espressoserver/test/model/web/WebAtomsTest.kt +96 -0
- package/espresso-server/build.gradle.kts +33 -0
- package/espresso-server/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/espresso-server/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/espresso-server/gradle.properties +26 -0
- package/espresso-server/gradlew +185 -0
- package/espresso-server/gradlew.bat +89 -0
- package/espresso-server/lint.xml +4 -0
- package/espresso-server/settings.gradle.kts +1 -0
- package/index.js +29 -0
- package/lib/commands/execute.js +72 -0
- package/lib/commands/general.js +321 -0
- package/lib/commands/idling-resources.js +52 -0
- package/lib/commands/index.js +16 -0
- package/lib/commands/services.js +50 -0
- package/lib/desired-caps.js +55 -0
- package/lib/driver.js +566 -0
- package/lib/espresso-runner.js +340 -0
- package/lib/logger.js +6 -0
- package/lib/server-builder.js +194 -0
- package/lib/server.js +18 -0
- package/lib/utils.js +74 -0
- package/package.json +105 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.handlers
|
|
2
|
+
|
|
3
|
+
import android.view.animation.AlphaAnimation
|
|
4
|
+
import android.view.animation.Animation
|
|
5
|
+
import androidx.test.platform.app.InstrumentationRegistry
|
|
6
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
7
|
+
import io.appium.espressoserver.lib.model.EspressoElement
|
|
8
|
+
import io.appium.espressoserver.lib.model.ViewFlashParams
|
|
9
|
+
import java.util.concurrent.CountDownLatch
|
|
10
|
+
import java.util.concurrent.TimeUnit
|
|
11
|
+
|
|
12
|
+
class MobileViewFlash : RequestHandler<ViewFlashParams, Void?> {
|
|
13
|
+
|
|
14
|
+
@Throws(AppiumException::class)
|
|
15
|
+
override fun handleInternal(params: ViewFlashParams): Void? {
|
|
16
|
+
|
|
17
|
+
val duration = params.durationMillis
|
|
18
|
+
val repeatCount = params.repeatCount
|
|
19
|
+
|
|
20
|
+
val view = EspressoElement.getViewById(params.elementId)
|
|
21
|
+
val latch = CountDownLatch(1)
|
|
22
|
+
InstrumentationRegistry.getInstrumentation().runOnMainSync {
|
|
23
|
+
val animation = AlphaAnimation(1f, 0f)
|
|
24
|
+
animation.repeatMode = Animation.REVERSE
|
|
25
|
+
animation.duration = duration.toLong()
|
|
26
|
+
animation.repeatCount = repeatCount
|
|
27
|
+
animation.setAnimationListener(object : Animation.AnimationListener {
|
|
28
|
+
override fun onAnimationStart(animation: Animation) {
|
|
29
|
+
// Unused
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
override fun onAnimationEnd(animation: Animation) {
|
|
33
|
+
latch.countDown()
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
override fun onAnimationRepeat(animation: Animation) {
|
|
37
|
+
// Unused
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
view.startAnimation(animation)
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
latch.await(1, TimeUnit.MINUTES)
|
|
44
|
+
} catch (e: InterruptedException) {
|
|
45
|
+
throw AppiumException(e)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return null
|
|
49
|
+
}
|
|
50
|
+
}
|
package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/MoveTo.kt
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import androidx.test.espresso.PerformException
|
|
20
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
21
|
+
import io.appium.espressoserver.lib.model.EspressoElement
|
|
22
|
+
import io.appium.espressoserver.lib.model.MoveToParams
|
|
23
|
+
import io.appium.espressoserver.lib.viewaction.ScrollTo
|
|
24
|
+
|
|
25
|
+
import androidx.test.espresso.action.ViewActions.scrollTo
|
|
26
|
+
import io.appium.espressoserver.lib.handlers.exceptions.InvalidArgumentException
|
|
27
|
+
|
|
28
|
+
class MoveTo : RequestHandler<MoveToParams, Void?> {
|
|
29
|
+
|
|
30
|
+
@Throws(AppiumException::class)
|
|
31
|
+
override fun handleInternal(params: MoveToParams): Void? {
|
|
32
|
+
// Get a reference to the view and call onData. This will automatically scroll to the view.
|
|
33
|
+
params.elementToMoveTo ?: throw InvalidArgumentException("Must provide element to move to")
|
|
34
|
+
val viewInteraction = EspressoElement.getViewInteractionById(params.elementToMoveTo)
|
|
35
|
+
|
|
36
|
+
try {
|
|
37
|
+
// Try performing espresso's scrollTo, which will only work if
|
|
38
|
+
// 1. View is descendant of scrollView
|
|
39
|
+
// 2. View is visible
|
|
40
|
+
viewInteraction.perform(scrollTo())
|
|
41
|
+
} catch (pe: PerformException) {
|
|
42
|
+
// If it doesn't meet the above conditions, use our built-in scrollTo
|
|
43
|
+
viewInteraction.perform(ScrollTo())
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return null
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import androidx.test.espresso.UiController
|
|
20
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
21
|
+
import io.appium.espressoserver.lib.helpers.w3c.adapter.espresso.EspressoW3CActionAdapter
|
|
22
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.Actions
|
|
23
|
+
import io.appium.espressoserver.lib.model.MultiTouchActionsParams
|
|
24
|
+
import io.appium.espressoserver.lib.model.toW3CInputSources
|
|
25
|
+
import io.appium.espressoserver.lib.viewaction.UiControllerPerformer
|
|
26
|
+
import io.appium.espressoserver.lib.viewaction.UiControllerRunnable
|
|
27
|
+
|
|
28
|
+
class MultiTouchAction : RequestHandler<MultiTouchActionsParams, Void?> {
|
|
29
|
+
|
|
30
|
+
@Throws(AppiumException::class)
|
|
31
|
+
override fun handleInternal(params: MultiTouchActionsParams): Void? {
|
|
32
|
+
val runnable = object : UiControllerRunnable<Void?> {
|
|
33
|
+
override fun run(uiController: UiController): Void? {
|
|
34
|
+
val inputSources = toW3CInputSources(params.actions)
|
|
35
|
+
val actions = Actions.ActionsBuilder()
|
|
36
|
+
.withAdapter(EspressoW3CActionAdapter(uiController))
|
|
37
|
+
.withActions(inputSources)
|
|
38
|
+
.build()
|
|
39
|
+
|
|
40
|
+
actions.perform(params.sessionId!!)
|
|
41
|
+
actions.release(params.sessionId!!)
|
|
42
|
+
|
|
43
|
+
return null
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
UiControllerPerformer(runnable).run()
|
|
48
|
+
return null
|
|
49
|
+
}
|
|
50
|
+
}
|
package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/handlers/NavigateTo.kt
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import androidx.test.espresso.EspressoException
|
|
20
|
+
import androidx.test.espresso.contrib.NavigationViewActions
|
|
21
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
22
|
+
import io.appium.espressoserver.lib.model.EspressoElement
|
|
23
|
+
import io.appium.espressoserver.lib.model.NavigateToParams
|
|
24
|
+
|
|
25
|
+
class NavigateTo : RequestHandler<NavigateToParams, Void?> {
|
|
26
|
+
|
|
27
|
+
@Throws(AppiumException::class)
|
|
28
|
+
override fun handleInternal(params: NavigateToParams): Void? {
|
|
29
|
+
val viewInteraction = EspressoElement.getViewInteractionById(params.elementId)
|
|
30
|
+
val menuItemId = params.menuItemId
|
|
31
|
+
try {
|
|
32
|
+
viewInteraction.perform(NavigationViewActions.navigateTo(menuItemId))
|
|
33
|
+
} catch (e: Exception) {
|
|
34
|
+
if (e is EspressoException) {
|
|
35
|
+
throw AppiumException(String.format("Could not navigate to menu item %s. Reason: %s", menuItemId, e))
|
|
36
|
+
}
|
|
37
|
+
throw e
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return null
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
20
|
+
import io.appium.espressoserver.lib.handlers.exceptions.NotYetImplementedException
|
|
21
|
+
import io.appium.espressoserver.lib.model.AppiumParams
|
|
22
|
+
|
|
23
|
+
class NotYetImplemented : RequestHandler<AppiumParams, Void?>, NoSessionCommandHandler {
|
|
24
|
+
@Throws(AppiumException::class)
|
|
25
|
+
override fun handleInternal(params: AppiumParams): Void? {
|
|
26
|
+
throw NotYetImplementedException()
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import io.appium.espressoserver.lib.helpers.InteractionHelper.getUiDevice
|
|
20
|
+
import io.appium.espressoserver.lib.model.AppiumParams
|
|
21
|
+
|
|
22
|
+
class OpenNotifications : RequestHandler<AppiumParams, Void?> {
|
|
23
|
+
override fun handleInternal(params: AppiumParams): Void? {
|
|
24
|
+
getUiDevice().openNotification()
|
|
25
|
+
return null
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import androidx.test.espresso.UiController
|
|
20
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
21
|
+
import io.appium.espressoserver.lib.helpers.w3c.adapter.espresso.EspressoW3CActionAdapter
|
|
22
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.Actions
|
|
23
|
+
import io.appium.espressoserver.lib.viewaction.UiControllerPerformer
|
|
24
|
+
import io.appium.espressoserver.lib.viewaction.UiControllerRunnable
|
|
25
|
+
|
|
26
|
+
class PerformAction : RequestHandler<Actions, Void?> {
|
|
27
|
+
|
|
28
|
+
@Throws(AppiumException::class)
|
|
29
|
+
override fun handleInternal(params: Actions): Void? {
|
|
30
|
+
|
|
31
|
+
val runnable = object: UiControllerRunnable<Void?> {
|
|
32
|
+
override fun run(uiController: UiController): Void? {
|
|
33
|
+
params.adapter = EspressoW3CActionAdapter(uiController)
|
|
34
|
+
params.perform(params.sessionId!!)
|
|
35
|
+
return null
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
UiControllerPerformer(runnable).run()
|
|
40
|
+
return null
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
20
|
+
import io.appium.espressoserver.lib.helpers.DisableAutofillAction
|
|
21
|
+
import io.appium.espressoserver.lib.model.AppiumParams
|
|
22
|
+
import io.appium.espressoserver.lib.model.EspressoElement
|
|
23
|
+
|
|
24
|
+
class PerformAutofillDismissal : RequestHandler<AppiumParams, Void?> {
|
|
25
|
+
|
|
26
|
+
@Throws(AppiumException::class)
|
|
27
|
+
override fun handleInternal(params: AppiumParams): Void? {
|
|
28
|
+
EspressoElement.getViewInteractionById(params.elementId).perform(DisableAutofillAction())
|
|
29
|
+
return null
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
20
|
+
import io.appium.espressoserver.lib.helpers.IMEHelpers
|
|
21
|
+
import io.appium.espressoserver.lib.model.EditorActionParams
|
|
22
|
+
|
|
23
|
+
class PerformEditorAction : RequestHandler<EditorActionParams, Void?> {
|
|
24
|
+
|
|
25
|
+
@Throws(AppiumException::class)
|
|
26
|
+
override fun handleInternal(params: EditorActionParams): Void? {
|
|
27
|
+
IMEHelpers.performEditorAction(params.action)
|
|
28
|
+
return null
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
3
|
+
* you may not use this file except in compliance with the License.
|
|
4
|
+
* See the NOTICE file distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
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 io.appium.espressoserver.lib.handlers
|
|
18
|
+
|
|
19
|
+
import android.content.res.Resources
|
|
20
|
+
import android.os.SystemClock
|
|
21
|
+
import android.view.MotionEvent
|
|
22
|
+
import android.view.MotionEvent.*
|
|
23
|
+
import android.view.ViewConfiguration
|
|
24
|
+
import androidx.test.espresso.UiController
|
|
25
|
+
import androidx.test.espresso.action.ViewActions.*
|
|
26
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
27
|
+
import io.appium.espressoserver.lib.handlers.exceptions.InvalidArgumentException
|
|
28
|
+
import io.appium.espressoserver.lib.helpers.AndroidLogger
|
|
29
|
+
import io.appium.espressoserver.lib.helpers.w3c.adapter.espresso.MotionEventBuilder
|
|
30
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.PointerType
|
|
31
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.PointerType.MOUSE
|
|
32
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.InputSource.PointerType.TOUCH
|
|
33
|
+
import io.appium.espressoserver.lib.model.EspressoElement
|
|
34
|
+
import io.appium.espressoserver.lib.model.MotionEventParams
|
|
35
|
+
import io.appium.espressoserver.lib.model.ViewElement
|
|
36
|
+
import io.appium.espressoserver.lib.model.toAndroidButtonState
|
|
37
|
+
import io.appium.espressoserver.lib.viewaction.UiControllerPerformer
|
|
38
|
+
import io.appium.espressoserver.lib.viewaction.UiControllerRunnable
|
|
39
|
+
import java.util.*
|
|
40
|
+
|
|
41
|
+
class PointerEventHandler(private val touchType: TouchType) : RequestHandler<MotionEventParams, Void?> {
|
|
42
|
+
|
|
43
|
+
// Make the duration of the TAP and DOUBLE_TAP events less than the timeout. So make the number
|
|
44
|
+
// half of the timeouts.
|
|
45
|
+
private val TAP_DURATION = (ViewConfiguration.getTapTimeout() / 2).toLong()
|
|
46
|
+
private val DOUBLE_TAP_DURATION = (ViewConfiguration.getDoubleTapTimeout() / 2).toLong()
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
private val globalButtonState: Int
|
|
50
|
+
@Throws(InvalidArgumentException::class)
|
|
51
|
+
get() {
|
|
52
|
+
return globalMouseButtonDownEvents.keys.fold(0) { buttonState, button ->
|
|
53
|
+
buttonState or button.toAndroidButtonState()
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
enum class TouchType {
|
|
58
|
+
CLICK,
|
|
59
|
+
DOUBLE_CLICK,
|
|
60
|
+
LONG_CLICK,
|
|
61
|
+
SCROLL,
|
|
62
|
+
TOUCH_DOWN,
|
|
63
|
+
TOUCH_UP,
|
|
64
|
+
TOUCH_MOVE,
|
|
65
|
+
TOUCH_SCROLL,
|
|
66
|
+
MOUSE_UP,
|
|
67
|
+
MOUSE_DOWN,
|
|
68
|
+
MOUSE_MOVE,
|
|
69
|
+
MOUSE_CLICK,
|
|
70
|
+
MOUSE_DOUBLECLICK
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@Throws(AppiumException::class)
|
|
74
|
+
override fun handleInternal(params: MotionEventParams): Void? {
|
|
75
|
+
when (touchType) {
|
|
76
|
+
TouchType.CLICK -> handleClick(params)
|
|
77
|
+
TouchType.DOUBLE_CLICK -> handleDoubleClick(params)
|
|
78
|
+
TouchType.LONG_CLICK -> handleLongClick(params)
|
|
79
|
+
TouchType.TOUCH_DOWN -> handleTouchDown(params)
|
|
80
|
+
TouchType.TOUCH_UP -> handleTouchUp(params)
|
|
81
|
+
TouchType.TOUCH_MOVE -> handleTouchMove(params)
|
|
82
|
+
TouchType.TOUCH_SCROLL -> handleTouchScroll(params)
|
|
83
|
+
TouchType.MOUSE_DOWN -> handleMouseButtonDown(params)
|
|
84
|
+
TouchType.MOUSE_UP -> handleMouseButtonUp(params)
|
|
85
|
+
TouchType.MOUSE_MOVE -> handleMouseMove(params)
|
|
86
|
+
TouchType.MOUSE_CLICK -> handleMouseClick(params)
|
|
87
|
+
TouchType.MOUSE_DOUBLECLICK -> handleMouseDoubleClick(params)
|
|
88
|
+
TouchType.SCROLL -> handleTouchScroll(params)
|
|
89
|
+
}
|
|
90
|
+
return null
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
@Throws(AppiumException::class)
|
|
95
|
+
private fun handleTouchDown(params: MotionEventParams) {
|
|
96
|
+
globalTouchDownEvent?.let {
|
|
97
|
+
throw AppiumException("Cannot call touch down while another touch event is still down")
|
|
98
|
+
}
|
|
99
|
+
AndroidLogger.info("Calling touch down event on (${params.x} ${params.y})")
|
|
100
|
+
globalTouchDownEvent = handlePointerEvent(params, ACTION_DOWN, TOUCH)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@Throws(AppiumException::class)
|
|
104
|
+
private fun handleTouchUp(params: MotionEventParams) {
|
|
105
|
+
AndroidLogger.info("Calling touch up event on (${params.x} ${params.y})")
|
|
106
|
+
globalTouchDownEvent
|
|
107
|
+
?: throw AppiumException("Touch up event must be preceded by a touch down event")
|
|
108
|
+
handlePointerEvent(params, ACTION_UP, TOUCH, globalTouchDownEvent!!.downTime)
|
|
109
|
+
globalTouchDownEvent = null
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@Throws(AppiumException::class)
|
|
113
|
+
private fun handleTouchMove(params: MotionEventParams) {
|
|
114
|
+
globalTouchDownEvent
|
|
115
|
+
?: throw AppiumException("Touch move event must have a touch down event")
|
|
116
|
+
handlePointerEvent(params, ACTION_MOVE, TOUCH, globalTouchDownEvent!!.downTime)
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@Throws(AppiumException::class)
|
|
120
|
+
private fun handleTouchScroll(params: MotionEventParams) {
|
|
121
|
+
// Fabricate a scroll event
|
|
122
|
+
// Do halfway points, by default
|
|
123
|
+
var startX = displayMetrics.widthPixels / 2 - params.x / 2
|
|
124
|
+
var startY = displayMetrics.heightPixels / 2 - params.y / 2
|
|
125
|
+
|
|
126
|
+
params.targetElement?.let {
|
|
127
|
+
val view = EspressoElement.getViewById(it)
|
|
128
|
+
val viewElement = ViewElement(view)
|
|
129
|
+
startX = viewElement.bounds.left.toLong()
|
|
130
|
+
startY = viewElement.bounds.top.toLong()
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Do down event
|
|
134
|
+
val downParams = MotionEventParams(startX, startY)
|
|
135
|
+
val downEvent = handlePointerEvent(downParams, ACTION_DOWN, TOUCH)
|
|
136
|
+
|
|
137
|
+
val downTime = downEvent.downTime
|
|
138
|
+
var eventTime: Long = downTime
|
|
139
|
+
|
|
140
|
+
// For it to be considered a 'scroll', must hold down for longer then tap timeout duration
|
|
141
|
+
val scrollDuration = (ViewConfiguration.getTapTimeout() * 1.5).toLong()
|
|
142
|
+
|
|
143
|
+
eventTime += scrollDuration
|
|
144
|
+
val moveParams = MotionEventParams(params.x + startX, params.y + startY)
|
|
145
|
+
handlePointerEvent(moveParams, ACTION_MOVE, TOUCH, downTime, eventTime)
|
|
146
|
+
|
|
147
|
+
// Release finger after another 'scroll' duration
|
|
148
|
+
eventTime += scrollDuration
|
|
149
|
+
val upParams = MotionEventParams(startX + params.x, startY + params.y)
|
|
150
|
+
handlePointerEvent(upParams, ACTION_UP, TOUCH, downTime, eventTime)
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@Throws(AppiumException::class)
|
|
154
|
+
private fun handleMouseButtonDown(params: MotionEventParams) {
|
|
155
|
+
val mouseDownEvent = handlePointerEvent(params, ACTION_DOWN, MOUSE)
|
|
156
|
+
globalMouseButtonDownEvents[params.button] = mouseDownEvent
|
|
157
|
+
handlePointerEvent(params, ACTION_DOWN, MOUSE, SystemClock.uptimeMillis())
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@Throws(AppiumException::class)
|
|
161
|
+
private fun handleMouseButtonUp(params: MotionEventParams) {
|
|
162
|
+
val mouseDownEvent = globalMouseButtonDownEvents[params.button]
|
|
163
|
+
?: throw AppiumException(String.format(
|
|
164
|
+
"Mouse button up event '%s' must be preceded by a mouse down event",
|
|
165
|
+
params.button
|
|
166
|
+
))
|
|
167
|
+
handlePointerEvent(params, ACTION_UP, MOUSE, mouseDownEvent.downTime)
|
|
168
|
+
globalMouseButtonDownEvents.remove(params.button)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@Throws(AppiumException::class)
|
|
172
|
+
private fun handleMouseMove(params: MotionEventParams) {
|
|
173
|
+
params.button = globalButtonState
|
|
174
|
+
handlePointerEvent(params, ACTION_MOVE, MOUSE)
|
|
175
|
+
globalMouseLocationX = params.x
|
|
176
|
+
globalMouseLocationY = params.y
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@Throws(AppiumException::class)
|
|
180
|
+
private fun handleClick(params: MotionEventParams) {
|
|
181
|
+
params.targetElement
|
|
182
|
+
?: throw InvalidArgumentException("Element ID must not be blank for click event")
|
|
183
|
+
EspressoElement.getViewInteractionById(params.targetElement).perform(click())
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
@Throws(AppiumException::class)
|
|
187
|
+
private fun handleDoubleClick(params: MotionEventParams) {
|
|
188
|
+
params.targetElement
|
|
189
|
+
?: throw InvalidArgumentException("Element ID must not be blank for double click event")
|
|
190
|
+
EspressoElement.getViewInteractionById(params.targetElement).perform(doubleClick())
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
@Throws(AppiumException::class)
|
|
194
|
+
private fun handleLongClick(params: MotionEventParams) {
|
|
195
|
+
params.targetElement
|
|
196
|
+
?: throw InvalidArgumentException("Element ID must not be blank for long click event")
|
|
197
|
+
EspressoElement.getViewInteractionById(params.targetElement).perform(longClick())
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
@Throws(AppiumException::class)
|
|
201
|
+
private fun handleMouseDoubleClick(params: MotionEventParams) {
|
|
202
|
+
params.x = globalMouseLocationX
|
|
203
|
+
params.y = globalMouseLocationY
|
|
204
|
+
var eventTime = SystemClock.uptimeMillis()
|
|
205
|
+
for (clickNumber in 1..2) {
|
|
206
|
+
val downTime = eventTime
|
|
207
|
+
handlePointerEvent(params, ACTION_DOWN, MOUSE, downTime, eventTime)
|
|
208
|
+
eventTime += TAP_DURATION
|
|
209
|
+
handlePointerEvent(params, ACTION_UP, MOUSE, downTime, eventTime)
|
|
210
|
+
eventTime += DOUBLE_TAP_DURATION
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
@Throws(AppiumException::class)
|
|
215
|
+
private fun handleMouseClick(params: MotionEventParams) {
|
|
216
|
+
params.x = globalMouseLocationX
|
|
217
|
+
params.y = globalMouseLocationY
|
|
218
|
+
val downTime = SystemClock.uptimeMillis()
|
|
219
|
+
handlePointerEvent(params, ACTION_DOWN, MOUSE, downTime, downTime)
|
|
220
|
+
handlePointerEvent(params, ACTION_UP, MOUSE, downTime, downTime + TAP_DURATION)
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
companion object {
|
|
224
|
+
private var globalTouchDownEvent: MotionEvent? = null
|
|
225
|
+
private val globalMouseButtonDownEvents = HashMap<Int, MotionEvent>()
|
|
226
|
+
private var globalMouseLocationX: Long = 0L
|
|
227
|
+
private var globalMouseLocationY: Long = 0L
|
|
228
|
+
private val displayMetrics = Resources.getSystem().displayMetrics
|
|
229
|
+
|
|
230
|
+
@Throws(AppiumException::class)
|
|
231
|
+
private fun checkBounds(x: Long, y: Long) {
|
|
232
|
+
if (x < 0 || y < 0 || x > displayMetrics.widthPixels || y > displayMetrics.heightPixels) {
|
|
233
|
+
throw AppiumException(String.format("Coordinates [%s %s] are outside of viewport [%s %s]",
|
|
234
|
+
x, y, displayMetrics.widthPixels, displayMetrics.heightPixels))
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
@Synchronized
|
|
239
|
+
@Throws(AppiumException::class)
|
|
240
|
+
private fun handlePointerEvent(params: MotionEventParams,
|
|
241
|
+
action: Int,
|
|
242
|
+
pointerType: PointerType,
|
|
243
|
+
downTime: Long?,
|
|
244
|
+
eventTime: Long?): MotionEvent {
|
|
245
|
+
checkBounds(params.x, params.y)
|
|
246
|
+
val runnable = object : UiControllerRunnable<MotionEvent> {
|
|
247
|
+
override fun run(uiController: UiController): MotionEvent {
|
|
248
|
+
return MotionEventBuilder()
|
|
249
|
+
.withDownTime(downTime ?: SystemClock.uptimeMillis())
|
|
250
|
+
.withEventTime(eventTime ?: SystemClock.uptimeMillis())
|
|
251
|
+
.withX(params.x)
|
|
252
|
+
.withY(params.y)
|
|
253
|
+
.withPointerType(pointerType)
|
|
254
|
+
.withButtonState(params.androidButtonState)
|
|
255
|
+
.withAction(action)
|
|
256
|
+
.build()
|
|
257
|
+
.run(uiController)!!
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
return UiControllerPerformer(runnable).run()!!
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
@Synchronized
|
|
265
|
+
@Throws(AppiumException::class)
|
|
266
|
+
private fun handlePointerEvent(params: MotionEventParams,
|
|
267
|
+
action: Int,
|
|
268
|
+
pointerType: PointerType,
|
|
269
|
+
downTime: Long?): MotionEvent {
|
|
270
|
+
return handlePointerEvent(params, action, pointerType, downTime, SystemClock.uptimeMillis())
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
@Synchronized
|
|
274
|
+
@Throws(AppiumException::class)
|
|
275
|
+
private fun handlePointerEvent(params: MotionEventParams,
|
|
276
|
+
action: Int,
|
|
277
|
+
pointerType: PointerType): MotionEvent {
|
|
278
|
+
return handlePointerEvent(params, action, pointerType, SystemClock.uptimeMillis(), SystemClock.uptimeMillis())
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|