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,286 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.helpers.w3c.dispatcher
|
|
2
|
+
|
|
3
|
+
import io.appium.espressoserver.lib.handlers.exceptions.AppiumException
|
|
4
|
+
import io.appium.espressoserver.lib.handlers.exceptions.InvalidArgumentException
|
|
5
|
+
import io.appium.espressoserver.lib.handlers.exceptions.MoveTargetOutOfBoundsException
|
|
6
|
+
import io.appium.espressoserver.lib.helpers.Rect
|
|
7
|
+
import io.appium.espressoserver.lib.helpers.w3c.adapter.W3CActionAdapter
|
|
8
|
+
import io.appium.espressoserver.lib.helpers.w3c.models.*
|
|
9
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.InputStateTable
|
|
10
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.KeyInputState
|
|
11
|
+
import io.appium.espressoserver.lib.helpers.w3c.state.PointerInputState
|
|
12
|
+
import java.util.concurrent.Callable
|
|
13
|
+
import kotlin.math.roundToInt
|
|
14
|
+
|
|
15
|
+
object PointerDispatch {
|
|
16
|
+
@Throws(AppiumException::class)
|
|
17
|
+
private fun dispatchPointerEvent(dispatcherAdapter: W3CActionAdapter,
|
|
18
|
+
actionObject: ActionObject,
|
|
19
|
+
pointerInputState: PointerInputState,
|
|
20
|
+
inputStateTable: InputStateTable,
|
|
21
|
+
globalKeyInputState: KeyInputState?,
|
|
22
|
+
down: Boolean) {
|
|
23
|
+
val pointerType = actionObject.pointer
|
|
24
|
+
val button = actionObject.button
|
|
25
|
+
if (down) {
|
|
26
|
+
if (pointerInputState.isPressed(button)) {
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
if (!pointerInputState.isPressed(button)) {
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
val x = pointerInputState.x
|
|
35
|
+
val y = pointerInputState.y
|
|
36
|
+
if (down) {
|
|
37
|
+
pointerInputState.addPressed(button)
|
|
38
|
+
} else {
|
|
39
|
+
pointerInputState.removePressed(button)
|
|
40
|
+
}
|
|
41
|
+
dispatcherAdapter.logger.info(String.format(
|
|
42
|
+
"Dispatching pointer event '%s' on input source with id '%s' with coordinates [%s, %s] " +
|
|
43
|
+
"and button '%s'",
|
|
44
|
+
if (down) "pointerDown" else "pointerUp", actionObject.id, x, y, button
|
|
45
|
+
))
|
|
46
|
+
dispatcherAdapter.lockAdapter()
|
|
47
|
+
try {
|
|
48
|
+
if (down) {
|
|
49
|
+
// Add cancel object to cancel list
|
|
50
|
+
val cancelObject = ActionObject(actionObject)
|
|
51
|
+
cancelObject.subType = InputSource.ActionType.POINTER_UP
|
|
52
|
+
inputStateTable.addActionToCancel(cancelObject)
|
|
53
|
+
|
|
54
|
+
// Dispatch implementation specific pointer down
|
|
55
|
+
dispatcherAdapter.pointerDown(button, actionObject.id!!, pointerType, x, y,
|
|
56
|
+
pointerInputState.buttons, globalKeyInputState)
|
|
57
|
+
} else {
|
|
58
|
+
// Dispatch implementation specific pointer up
|
|
59
|
+
dispatcherAdapter.pointerUp(button, actionObject.id!!, pointerType, x, y,
|
|
60
|
+
pointerInputState.buttons, globalKeyInputState)
|
|
61
|
+
}
|
|
62
|
+
} finally {
|
|
63
|
+
dispatcherAdapter.unlockAdapter()
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Log the new state of the pointer
|
|
67
|
+
dispatcherAdapter.logger.info(String.format(
|
|
68
|
+
"State of pointer input source with id %s is now: %s",
|
|
69
|
+
actionObject.id, pointerInputState.logMessage()
|
|
70
|
+
))
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Run the 'dispatch a pointer down' algorithm
|
|
75
|
+
* @param dispatcherAdapter W3C actions implementation
|
|
76
|
+
* @param actionObject Action object that defines the pointer action
|
|
77
|
+
* @param pointerInputState Current state of the input source
|
|
78
|
+
* @param globalKeyInputState Global key input state
|
|
79
|
+
* @throws AppiumException
|
|
80
|
+
*/
|
|
81
|
+
@Throws(AppiumException::class)
|
|
82
|
+
fun dispatchPointerDown(dispatcherAdapter: W3CActionAdapter,
|
|
83
|
+
actionObject: ActionObject,
|
|
84
|
+
pointerInputState: PointerInputState,
|
|
85
|
+
inputStateTable: InputStateTable,
|
|
86
|
+
globalKeyInputState: KeyInputState?) {
|
|
87
|
+
dispatchPointerEvent(dispatcherAdapter, actionObject, pointerInputState,
|
|
88
|
+
inputStateTable, globalKeyInputState, true)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Perform the 'dispatch pointer up' algorithm
|
|
93
|
+
* @param dispatcherAdapter W3C actions implementation
|
|
94
|
+
* @param actionObject Action object that defines the pointer action
|
|
95
|
+
* @param pointerInputState Current state of the input source
|
|
96
|
+
* @param globalKeyInputState Global key input state
|
|
97
|
+
* @throws AppiumException
|
|
98
|
+
*/
|
|
99
|
+
@Throws(AppiumException::class)
|
|
100
|
+
fun dispatchPointerUp(dispatcherAdapter: W3CActionAdapter,
|
|
101
|
+
actionObject: ActionObject,
|
|
102
|
+
pointerInputState: PointerInputState,
|
|
103
|
+
inputStateTable: InputStateTable,
|
|
104
|
+
globalKeyInputState: KeyInputState?) {
|
|
105
|
+
dispatchPointerEvent(dispatcherAdapter, actionObject, pointerInputState,
|
|
106
|
+
inputStateTable, globalKeyInputState, false)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Perform the 'dispatch a pointer cancel' event
|
|
111
|
+
* @param dispatcherAdapter ActionsPerformer adapter
|
|
112
|
+
* @param actionObject Action object
|
|
113
|
+
* @throws AppiumException
|
|
114
|
+
*/
|
|
115
|
+
@Throws(AppiumException::class)
|
|
116
|
+
fun dispatchPointerCancel(dispatcherAdapter: W3CActionAdapter,
|
|
117
|
+
actionObject: ActionObject) {
|
|
118
|
+
dispatcherAdapter.pointerCancel(actionObject.id!!, actionObject.pointer!!)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Call the 'dispatch a pointerMove action' algorithm
|
|
123
|
+
* @param dispatcherAdapter W3C actions implementation
|
|
124
|
+
* @param sourceId ID of the input source
|
|
125
|
+
* @param actionObject Action object that defines the pointer action
|
|
126
|
+
* @param pointerInputState Current state of the input source
|
|
127
|
+
* @param tickDuration How long is this tick (in ms)
|
|
128
|
+
* @param timeAtBeginningOfTick Time when the current tick started (in ms)
|
|
129
|
+
* @param globalKeyInputState Global key input state
|
|
130
|
+
* @return Returns a callable that returns when the pointer move is complete
|
|
131
|
+
* @throws AppiumException
|
|
132
|
+
*/
|
|
133
|
+
@Throws(AppiumException::class)
|
|
134
|
+
fun dispatchPointerMove(dispatcherAdapter: W3CActionAdapter,
|
|
135
|
+
sourceId: String?,
|
|
136
|
+
actionObject: ActionObject,
|
|
137
|
+
pointerInputState: PointerInputState,
|
|
138
|
+
tickDuration: Float,
|
|
139
|
+
timeAtBeginningOfTick: Long,
|
|
140
|
+
globalKeyInputState: KeyInputState?): Callable<BaseDispatchResult> {
|
|
141
|
+
// 1.5 Variable definitions
|
|
142
|
+
val xOffset = actionObject.x!!
|
|
143
|
+
val yOffset = actionObject.y!!
|
|
144
|
+
val startX = pointerInputState.x
|
|
145
|
+
val startY = pointerInputState.y
|
|
146
|
+
val origin = actionObject.origin
|
|
147
|
+
dispatcherAdapter.logger.info(String.format(
|
|
148
|
+
"Dispatching pointer move '%s' on input source with id '%s' with origin '%s' and coordinates [%s, %s]",
|
|
149
|
+
pointerInputState.type, sourceId, origin, xOffset, yOffset
|
|
150
|
+
))
|
|
151
|
+
val x: Float
|
|
152
|
+
val y: Float
|
|
153
|
+
|
|
154
|
+
// 6. Run the substeps of the first matching value of origin
|
|
155
|
+
val originType = origin.type ?: Origin.VIEWPORT
|
|
156
|
+
dispatcherAdapter.logger.info("Origin type is: ", originType)
|
|
157
|
+
when (origin.type) {
|
|
158
|
+
Origin.POINTER -> {
|
|
159
|
+
x = startX + xOffset
|
|
160
|
+
y = startY + yOffset
|
|
161
|
+
}
|
|
162
|
+
Origin.ELEMENT -> {
|
|
163
|
+
requireNotNull(origin.elementId, { "Element identifier must be present for origin type 'ELEMENT'" })
|
|
164
|
+
dispatcherAdapter.logger.info("Getting element center point: ", origin.elementId!!)
|
|
165
|
+
val elementCoordinates = dispatcherAdapter.getElementCenterPoint(origin.elementId)
|
|
166
|
+
dispatcherAdapter.logger.info(String.format(
|
|
167
|
+
"Element center is: %s %s",
|
|
168
|
+
elementCoordinates.x, elementCoordinates.y
|
|
169
|
+
))
|
|
170
|
+
x = elementCoordinates.x + xOffset
|
|
171
|
+
y = elementCoordinates.y + yOffset
|
|
172
|
+
}
|
|
173
|
+
Origin.VIEWPORT -> {
|
|
174
|
+
x = xOffset
|
|
175
|
+
y = yOffset
|
|
176
|
+
}
|
|
177
|
+
else -> throw InvalidArgumentException(String.format("'%s' is not a valid origin type", originType))
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// 7-8. Bounds check
|
|
181
|
+
val boundingRect = Rect(0, 0, dispatcherAdapter.viewportWidth.toInt(), dispatcherAdapter.viewportHeight.toInt())
|
|
182
|
+
if (!boundingRect.contains(x.toInt(), y.toInt())) {
|
|
183
|
+
throw MoveTargetOutOfBoundsException(x, y, boundingRect)
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// 9. Let duration be equal to action object's duration property if it is not undefined, or tick duration otherwise
|
|
187
|
+
val duration = actionObject.duration ?: tickDuration
|
|
188
|
+
val callable = performPointerMove(
|
|
189
|
+
dispatcherAdapter,
|
|
190
|
+
sourceId,
|
|
191
|
+
pointerInputState,
|
|
192
|
+
duration,
|
|
193
|
+
startX, startY,
|
|
194
|
+
x, y,
|
|
195
|
+
timeAtBeginningOfTick,
|
|
196
|
+
globalKeyInputState
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
// Log the new state of the pointer
|
|
201
|
+
dispatcherAdapter.logger.info(String.format(
|
|
202
|
+
"State of pointer input source with id %s is now: %s",
|
|
203
|
+
actionObject.id, pointerInputState.logMessage()
|
|
204
|
+
))
|
|
205
|
+
return callable
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Implements the 'perform a pointer move' algorithm in section 17.4.3
|
|
210
|
+
* @param dispatcherAdapter W3C actions implementation
|
|
211
|
+
* @param sourceId ID of the input source
|
|
212
|
+
* @param pointerInputState Current state of the input source
|
|
213
|
+
* @param duration How long is the pointer move
|
|
214
|
+
* @param startX Starting x coordinate
|
|
215
|
+
* @param startY Starting y coordinate
|
|
216
|
+
* @param targetX Target x coordinate
|
|
217
|
+
* @param targetY Target y coordinate
|
|
218
|
+
*/
|
|
219
|
+
fun performPointerMove(dispatcherAdapter: W3CActionAdapter,
|
|
220
|
+
sourceId: String?,
|
|
221
|
+
pointerInputState: PointerInputState,
|
|
222
|
+
duration: Float,
|
|
223
|
+
startX: Float, startY: Float,
|
|
224
|
+
targetX: Float, targetY: Float,
|
|
225
|
+
timeAtBeginningOfTick: Long,
|
|
226
|
+
globalKeyInputState: KeyInputState?): Callable<BaseDispatchResult> {
|
|
227
|
+
return Callable {
|
|
228
|
+
val isLast: Boolean
|
|
229
|
+
|
|
230
|
+
// 2. Let time delta be the time since the beginning of the current tick, measured in milliseconds on a monotonic clock
|
|
231
|
+
val timeDelta = System.currentTimeMillis() - timeAtBeginningOfTick
|
|
232
|
+
|
|
233
|
+
// 3. Let duration ratio be the ratio of time delta and duration, if duration is greater than 0, or 1 otherwise
|
|
234
|
+
val durationRatio: Float = if (duration > 0f) timeDelta / duration else 1f
|
|
235
|
+
|
|
236
|
+
// 4. If duration ratio is 1, or close enough to 1 that the implementation will not further subdivide the move action,
|
|
237
|
+
// let last be true. Otherwise let last be false
|
|
238
|
+
isLast = 1 - durationRatio <= dispatcherAdapter.getPointerMoveDurationMargin(pointerInputState)
|
|
239
|
+
|
|
240
|
+
// 5. If last is true, let x equal target x and y equal target y
|
|
241
|
+
// 6. Otherwise let x equal an approximation to duration ratio × (target x - start x) + start x,, ...
|
|
242
|
+
val x = if (isLast) targetX else (durationRatio * (targetX - startX)).roundToInt() + startX
|
|
243
|
+
val y = if (isLast) targetY else (durationRatio * (targetY - startY)).roundToInt() + startY
|
|
244
|
+
|
|
245
|
+
// 7-8: Let currentX and currentY be pointer input state
|
|
246
|
+
val currentX = pointerInputState.x
|
|
247
|
+
val currentY = pointerInputState.y
|
|
248
|
+
|
|
249
|
+
// Prepare the result
|
|
250
|
+
val dispatchResult = DispatchPointerMoveResult(
|
|
251
|
+
dispatcherAdapter,
|
|
252
|
+
sourceId!!,
|
|
253
|
+
pointerInputState.type!!,
|
|
254
|
+
currentX, currentY,
|
|
255
|
+
x, y,
|
|
256
|
+
pointerInputState.buttons,
|
|
257
|
+
globalKeyInputState
|
|
258
|
+
)
|
|
259
|
+
if (currentX != x || currentY != y) {
|
|
260
|
+
|
|
261
|
+
// 8.3. Let input state's x property equal x and y property equal y
|
|
262
|
+
pointerInputState.x = x
|
|
263
|
+
pointerInputState.y = y
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
// Sleep for a fixed period of time
|
|
267
|
+
if (duration > 0) {
|
|
268
|
+
Thread.sleep(dispatcherAdapter.pointerMoveIntervalDuration().toLong())
|
|
269
|
+
}
|
|
270
|
+
if (!isLast) {
|
|
271
|
+
// 11. Perform a pointer move with arguments source id, input state, duration, start x, start y, target x, target y)
|
|
272
|
+
dispatchResult.next = performPointerMove(
|
|
273
|
+
dispatcherAdapter,
|
|
274
|
+
sourceId,
|
|
275
|
+
pointerInputState,
|
|
276
|
+
duration,
|
|
277
|
+
startX, startY,
|
|
278
|
+
targetX, targetY,
|
|
279
|
+
timeAtBeginningOfTick,
|
|
280
|
+
globalKeyInputState
|
|
281
|
+
)
|
|
282
|
+
}
|
|
283
|
+
dispatchResult
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.helpers.w3c.dispatcher
|
|
2
|
+
|
|
3
|
+
class W3CKeyEvent {
|
|
4
|
+
var key: String? = null
|
|
5
|
+
var code: String? = null
|
|
6
|
+
var location = 0
|
|
7
|
+
var keyCode = 0
|
|
8
|
+
var charCode = 0
|
|
9
|
+
var which = 0
|
|
10
|
+
var isAltKey = false
|
|
11
|
+
var isShiftKey = false
|
|
12
|
+
var isCtrlKey = false
|
|
13
|
+
var isMetaKey = false
|
|
14
|
+
var isRepeat = false
|
|
15
|
+
var isComposing = false
|
|
16
|
+
|
|
17
|
+
fun logMessage(): String {
|
|
18
|
+
return "key=[$key] code=[$code] altKey=[$isAltKey] shiftKey=[$isShiftKey] ctrlKey=[$isCtrlKey] metaKey=[$isMetaKey]"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.helpers.w3c.dispatcher.constants
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Implement table found in 17.4.2 that maps characters to keyCode
|
|
5
|
+
*
|
|
6
|
+
* Not using constants or enums because I don't think we'll actually need these in any
|
|
7
|
+
* specific implementation
|
|
8
|
+
* @param key Raw key
|
|
9
|
+
* @return The code of the raw key or null if not found
|
|
10
|
+
*/
|
|
11
|
+
fun getCode(key: String?): String? {
|
|
12
|
+
return when (key) {
|
|
13
|
+
"`" -> "Backquote"
|
|
14
|
+
"\\" -> "Backslash"
|
|
15
|
+
"\uE003" -> "Backspace"
|
|
16
|
+
"[" -> "BracketLeft"
|
|
17
|
+
"}" -> "BracketRight"
|
|
18
|
+
"," -> "Comma"
|
|
19
|
+
"0" -> "Digit0"
|
|
20
|
+
"1" -> "Digit1"
|
|
21
|
+
"2" -> "Digit2"
|
|
22
|
+
"3" -> "Digit3"
|
|
23
|
+
"4" -> "Digit4"
|
|
24
|
+
"5" -> "Digit5"
|
|
25
|
+
"6" -> "Digit6"
|
|
26
|
+
"7" -> "Digit7"
|
|
27
|
+
"8" -> "Digit8"
|
|
28
|
+
"9" -> "Digit9"
|
|
29
|
+
"=" -> "Equal"
|
|
30
|
+
"<" -> "IntlBackslash"
|
|
31
|
+
"a" -> "KeyA"
|
|
32
|
+
"b" -> "KeyB"
|
|
33
|
+
"c" -> "KeyC"
|
|
34
|
+
"d" -> "KeyD"
|
|
35
|
+
"e" -> "KeyE"
|
|
36
|
+
"f" -> "KeyF"
|
|
37
|
+
"g" -> "KeyG"
|
|
38
|
+
"h" -> "KeyH"
|
|
39
|
+
"i" -> "KeyI"
|
|
40
|
+
"j" -> "KeyJ"
|
|
41
|
+
"k" -> "KeyK"
|
|
42
|
+
"l" -> "KeyL"
|
|
43
|
+
"m" -> "KeyM"
|
|
44
|
+
"n" -> "KeyN"
|
|
45
|
+
"o" -> "KeyO"
|
|
46
|
+
"p" -> "KeyP"
|
|
47
|
+
"q" -> "KeyQ"
|
|
48
|
+
"r" -> "KeyR"
|
|
49
|
+
"s" -> "KeyS"
|
|
50
|
+
"t" -> "KeyT"
|
|
51
|
+
"u" -> "KeyU"
|
|
52
|
+
"v" -> "KeyV"
|
|
53
|
+
"w" -> "KeyW"
|
|
54
|
+
"x" -> "KeyX"
|
|
55
|
+
"y" -> "KeyY"
|
|
56
|
+
"z" -> "KeyZ"
|
|
57
|
+
"-" -> "Minus"
|
|
58
|
+
"." -> "Period"
|
|
59
|
+
"'" -> "Quote"
|
|
60
|
+
";" -> "Semicolon"
|
|
61
|
+
"/" -> "Slash"
|
|
62
|
+
"\uE00A" -> "AltLeft"
|
|
63
|
+
"\uE052" -> "AltRight"
|
|
64
|
+
"\uE009" -> "ControlLeft"
|
|
65
|
+
"\uE051" -> "ControlRight"
|
|
66
|
+
"\uE006" -> "Enter"
|
|
67
|
+
"\uE03D" -> "OSLeft"
|
|
68
|
+
"\uE053" -> "OSRight"
|
|
69
|
+
"\uE008" -> "ShiftLeft"
|
|
70
|
+
"\uE050" -> "ShiftRight"
|
|
71
|
+
" " -> "Space"
|
|
72
|
+
"\uE004" -> "Tab"
|
|
73
|
+
"\uE017" -> "Delete"
|
|
74
|
+
"\uE010" -> "End"
|
|
75
|
+
"\uE002" -> "Help"
|
|
76
|
+
"\uE011" -> "Home"
|
|
77
|
+
"\uE016" -> "Insert"
|
|
78
|
+
"\uE01E" -> "PageDown"
|
|
79
|
+
"\uE01F" -> "PageUp"
|
|
80
|
+
"\uE015" -> "ArrowDown"
|
|
81
|
+
"\uE012" -> "ArrowLeft"
|
|
82
|
+
"\uE014" -> "ArrowRight"
|
|
83
|
+
"\uE013" -> "ArrowUp"
|
|
84
|
+
"\uE00C" -> "Escape"
|
|
85
|
+
"\uE031" -> "F1"
|
|
86
|
+
"\uE032" -> "F2"
|
|
87
|
+
"\uE033" -> "F3"
|
|
88
|
+
"\uE034" -> "F4"
|
|
89
|
+
"\uE035" -> "F5"
|
|
90
|
+
"\uE036" -> "F6"
|
|
91
|
+
"\uE037" -> "F7"
|
|
92
|
+
"\uE038" -> "F8"
|
|
93
|
+
"\uE039" -> "F9"
|
|
94
|
+
"\uE03A" -> "F10"
|
|
95
|
+
"\uE03B" -> "F11"
|
|
96
|
+
"\uE03C" -> "F12"
|
|
97
|
+
"\uE01A" -> "Numpad0"
|
|
98
|
+
"\uE01B" -> "Numpad1"
|
|
99
|
+
"\uE01C" -> "Numpad2"
|
|
100
|
+
"\uE01D" -> "Numpad3"
|
|
101
|
+
"\uE020" -> "Numpad6"
|
|
102
|
+
"\uE021" -> "Numpad7"
|
|
103
|
+
"\uE022" -> "Numpad8"
|
|
104
|
+
"\uE023" -> "Numpad9"
|
|
105
|
+
"\uE028" -> "NumpadDecimal"
|
|
106
|
+
"\uE029" -> "NumpadDivide"
|
|
107
|
+
"\uE007" -> "NumpadEnter"
|
|
108
|
+
"\uE024" -> "NumpadMultiply"
|
|
109
|
+
"\uE026" -> "NumpadSubtract"
|
|
110
|
+
"~" -> "Backquote"
|
|
111
|
+
"|" -> "Backslash"
|
|
112
|
+
"{" -> "BracketLeft"
|
|
113
|
+
"]" -> "BracketRight"
|
|
114
|
+
")" -> "Digit0"
|
|
115
|
+
"!" -> "Digit1"
|
|
116
|
+
"@" -> "Digit2"
|
|
117
|
+
"#" -> "Digit3"
|
|
118
|
+
"$" -> "Digit4"
|
|
119
|
+
"%" -> "Digit5"
|
|
120
|
+
"^" -> "Digit6"
|
|
121
|
+
"&" -> "Digit7"
|
|
122
|
+
"*" -> "Digit8"
|
|
123
|
+
"(" -> "Digit9"
|
|
124
|
+
"+" -> "Equal"
|
|
125
|
+
"A" -> "KeyA"
|
|
126
|
+
"B" -> "KeyB"
|
|
127
|
+
"C" -> "KeyC"
|
|
128
|
+
"D" -> "KeyD"
|
|
129
|
+
"E" -> "KeyE"
|
|
130
|
+
"F" -> "KeyF"
|
|
131
|
+
"G" -> "KeyG"
|
|
132
|
+
"H" -> "KeyH"
|
|
133
|
+
"I" -> "KeyI"
|
|
134
|
+
"J" -> "KeyJ"
|
|
135
|
+
"K" -> "KeyK"
|
|
136
|
+
"L" -> "KeyL"
|
|
137
|
+
"M" -> "KeyM"
|
|
138
|
+
"N" -> "KeyN"
|
|
139
|
+
"O" -> "KeyO"
|
|
140
|
+
"P" -> "KeyP"
|
|
141
|
+
"Q" -> "KeyQ"
|
|
142
|
+
"R" -> "KeyR"
|
|
143
|
+
"S" -> "KeyS"
|
|
144
|
+
"T" -> "KeyT"
|
|
145
|
+
"U" -> "KeyU"
|
|
146
|
+
"V" -> "KeyV"
|
|
147
|
+
"W" -> "KeyW"
|
|
148
|
+
"X" -> "KeyX"
|
|
149
|
+
"Y" -> "KeyY"
|
|
150
|
+
"Z" -> "KeyZ"
|
|
151
|
+
"_" -> "Minus"
|
|
152
|
+
">" -> "Period"
|
|
153
|
+
"" -> "Quote"
|
|
154
|
+
":" -> "Semicolon"
|
|
155
|
+
"?" -> "Slash"
|
|
156
|
+
"\uE00D" -> "Space"
|
|
157
|
+
"\uE05C" -> "Numpad0"
|
|
158
|
+
"\uE056" -> "Numpad1"
|
|
159
|
+
"\uE05B" -> "Numpad2"
|
|
160
|
+
"\uE055" -> "Numpad3"
|
|
161
|
+
"\uE058" -> "Numpad4"
|
|
162
|
+
"\uE05A" -> "Numpad6"
|
|
163
|
+
"\uE057" -> "Numpad7"
|
|
164
|
+
"\uE059" -> "Numpad8"
|
|
165
|
+
"\uE054" -> "Numpad9"
|
|
166
|
+
"\uE05D" -> "NumpadDecimal"
|
|
167
|
+
else -> null
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.helpers.w3c.dispatcher.constants
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Implement table found in 17.4.2 that maps characters to 'location'
|
|
5
|
+
*
|
|
6
|
+
* Not using constants or enums because I don't think we'll actually need these in any
|
|
7
|
+
* specific implementation
|
|
8
|
+
* @param key Raw key
|
|
9
|
+
* @return The location of the key or default 0
|
|
10
|
+
*/
|
|
11
|
+
fun getLocation(key: String?): Int {
|
|
12
|
+
return when (key) {
|
|
13
|
+
"\uE007" -> 1
|
|
14
|
+
"\uE008" -> 1
|
|
15
|
+
"\uE009" -> 1
|
|
16
|
+
"\uE00A" -> 1
|
|
17
|
+
"\uE01A" -> 3
|
|
18
|
+
"\uE01B" -> 3
|
|
19
|
+
"\uE01C" -> 3
|
|
20
|
+
"\uE01D" -> 3
|
|
21
|
+
"\uE01E" -> 3
|
|
22
|
+
"\uE01F" -> 3
|
|
23
|
+
"\uE020" -> 3
|
|
24
|
+
"\uE021" -> 3
|
|
25
|
+
"\uE022" -> 3
|
|
26
|
+
"\uE023" -> 3
|
|
27
|
+
"\uE024" -> 3
|
|
28
|
+
"\uE025" -> 3
|
|
29
|
+
"\uE026" -> 3
|
|
30
|
+
"\uE027" -> 3
|
|
31
|
+
"\uE028" -> 3
|
|
32
|
+
"\uE029" -> 3
|
|
33
|
+
"\uE03D" -> 1
|
|
34
|
+
"\uE050" -> 2
|
|
35
|
+
"\uE051" -> 2
|
|
36
|
+
"\uE052" -> 2
|
|
37
|
+
"\uE053" -> 2
|
|
38
|
+
"\uE054" -> 3
|
|
39
|
+
"\uE055" -> 3
|
|
40
|
+
"\uE056" -> 3
|
|
41
|
+
"\uE057" -> 3
|
|
42
|
+
"\uE058" -> 3
|
|
43
|
+
"\uE059" -> 3
|
|
44
|
+
"\uE05A" -> 3
|
|
45
|
+
"\uE05B" -> 3
|
|
46
|
+
"\uE05C" -> 3
|
|
47
|
+
"\uE05D" -> 3
|
|
48
|
+
else -> 0
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.helpers.w3c.dispatcher.constants
|
|
2
|
+
|
|
3
|
+
object KeyNormalizer {
|
|
4
|
+
private val normalizedKeyMap = mutableMapOf<String, String>()
|
|
5
|
+
|
|
6
|
+
fun toNormalizedKey(key: String): String {
|
|
7
|
+
return if (normalizedKeyMap.containsKey(key)) {
|
|
8
|
+
normalizedKeyMap[key]!!
|
|
9
|
+
} else key
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
init {
|
|
13
|
+
normalizedKeyMap["\uE000"] = NormalizedKeys.UNIDENTIFIED
|
|
14
|
+
normalizedKeyMap["\uE001"] = NormalizedKeys.CANCEL
|
|
15
|
+
normalizedKeyMap["\uE002"] = NormalizedKeys.HELP
|
|
16
|
+
normalizedKeyMap["\uE003"] = NormalizedKeys.BACKSPACE
|
|
17
|
+
normalizedKeyMap["\uE004"] = NormalizedKeys.TAB
|
|
18
|
+
normalizedKeyMap["\uE005"] = NormalizedKeys.CLEAR
|
|
19
|
+
normalizedKeyMap["\uE006"] = NormalizedKeys.RETURN
|
|
20
|
+
normalizedKeyMap["\uE007"] = NormalizedKeys.ENTER
|
|
21
|
+
normalizedKeyMap["\uE008"] = NormalizedKeys.SHIFT
|
|
22
|
+
normalizedKeyMap["\uE009"] = NormalizedKeys.CONTROL
|
|
23
|
+
normalizedKeyMap["\uE00A"] = NormalizedKeys.ALT
|
|
24
|
+
normalizedKeyMap["\uE00B"] = NormalizedKeys.PAUSE
|
|
25
|
+
normalizedKeyMap["\uE00C"] = NormalizedKeys.ESCAPE
|
|
26
|
+
normalizedKeyMap["\uE00D"] = NormalizedKeys.WHITESPACE
|
|
27
|
+
normalizedKeyMap["\uE00E"] = NormalizedKeys.PAGEUP
|
|
28
|
+
normalizedKeyMap["\uE00F"] = NormalizedKeys.PAGEDOWN
|
|
29
|
+
normalizedKeyMap["\uE010"] = NormalizedKeys.END
|
|
30
|
+
normalizedKeyMap["\uE011"] = NormalizedKeys.HOME
|
|
31
|
+
normalizedKeyMap["\uE012"] = NormalizedKeys.ARROW_LEFT
|
|
32
|
+
normalizedKeyMap["\uE013"] = NormalizedKeys.ARROW_UP
|
|
33
|
+
normalizedKeyMap["\uE014"] = NormalizedKeys.ARROW_RIGHT
|
|
34
|
+
normalizedKeyMap["\uE015"] = NormalizedKeys.ARROW_DOWN
|
|
35
|
+
normalizedKeyMap["\uE016"] = NormalizedKeys.INSERT
|
|
36
|
+
normalizedKeyMap["\uE017"] = NormalizedKeys.DELETE
|
|
37
|
+
normalizedKeyMap["\uE018"] = NormalizedKeys.SEMICOLON
|
|
38
|
+
normalizedKeyMap["\uE019"] = NormalizedKeys.EQUALS
|
|
39
|
+
normalizedKeyMap["\uE01A"] = NormalizedKeys.ZERO
|
|
40
|
+
normalizedKeyMap["\uE01B"] = NormalizedKeys.ONE
|
|
41
|
+
normalizedKeyMap["\uE01C"] = NormalizedKeys.TWO
|
|
42
|
+
normalizedKeyMap["\uE01D"] = NormalizedKeys.THREE
|
|
43
|
+
normalizedKeyMap["\uE01E"] = NormalizedKeys.FOUR
|
|
44
|
+
normalizedKeyMap["\uE01F"] = NormalizedKeys.FIVE
|
|
45
|
+
normalizedKeyMap["\uE020"] = NormalizedKeys.SIX
|
|
46
|
+
normalizedKeyMap["\uE021"] = NormalizedKeys.SEVEN
|
|
47
|
+
normalizedKeyMap["\uE022"] = NormalizedKeys.EIGHT
|
|
48
|
+
normalizedKeyMap["\uE023"] = NormalizedKeys.NINE
|
|
49
|
+
normalizedKeyMap["\uE024"] = NormalizedKeys.ASTERISK
|
|
50
|
+
normalizedKeyMap["\uE025"] = NormalizedKeys.PLUS
|
|
51
|
+
normalizedKeyMap["\uE026"] = NormalizedKeys.COMMA
|
|
52
|
+
normalizedKeyMap["\uE027"] = NormalizedKeys.HYPHEN
|
|
53
|
+
normalizedKeyMap["\uE028"] = NormalizedKeys.PERIOD
|
|
54
|
+
normalizedKeyMap["\uE029"] = NormalizedKeys.FORWARD_SLASH
|
|
55
|
+
normalizedKeyMap["\uE031"] = NormalizedKeys.F1
|
|
56
|
+
normalizedKeyMap["\uE032"] = NormalizedKeys.F2
|
|
57
|
+
normalizedKeyMap["\uE033"] = NormalizedKeys.F3
|
|
58
|
+
normalizedKeyMap["\uE034"] = NormalizedKeys.F4
|
|
59
|
+
normalizedKeyMap["\uE035"] = NormalizedKeys.F5
|
|
60
|
+
normalizedKeyMap["\uE036"] = NormalizedKeys.F6
|
|
61
|
+
normalizedKeyMap["\uE037"] = NormalizedKeys.F7
|
|
62
|
+
normalizedKeyMap["\uE038"] = NormalizedKeys.F8
|
|
63
|
+
normalizedKeyMap["\uE039"] = NormalizedKeys.F9
|
|
64
|
+
normalizedKeyMap["\uE03A"] = NormalizedKeys.F10
|
|
65
|
+
normalizedKeyMap["\uE03B"] = NormalizedKeys.F11
|
|
66
|
+
normalizedKeyMap["\uE03C"] = NormalizedKeys.F12
|
|
67
|
+
normalizedKeyMap["\uE03D"] = NormalizedKeys.META
|
|
68
|
+
normalizedKeyMap["\uE040"] = NormalizedKeys.ZENKAKU_HANKAKU
|
|
69
|
+
normalizedKeyMap["\uE050"] = NormalizedKeys.SHIFT
|
|
70
|
+
normalizedKeyMap["\uE051"] = NormalizedKeys.CONTROL
|
|
71
|
+
normalizedKeyMap["\uE052"] = NormalizedKeys.ALT
|
|
72
|
+
normalizedKeyMap["\uE053"] = NormalizedKeys.META
|
|
73
|
+
normalizedKeyMap["\uE054"] = NormalizedKeys.PAGEUP
|
|
74
|
+
normalizedKeyMap["\uE055"] = NormalizedKeys.PAGEDOWN
|
|
75
|
+
normalizedKeyMap["\uE056"] = NormalizedKeys.END
|
|
76
|
+
normalizedKeyMap["\uE057"] = NormalizedKeys.HOME
|
|
77
|
+
normalizedKeyMap["\uE058"] = NormalizedKeys.ARROW_LEFT
|
|
78
|
+
normalizedKeyMap["\uE059"] = NormalizedKeys.ARROW_UP
|
|
79
|
+
normalizedKeyMap["\uE05A"] = NormalizedKeys.ARROW_RIGHT
|
|
80
|
+
normalizedKeyMap["\uE05B"] = NormalizedKeys.ARROW_DOWN
|
|
81
|
+
normalizedKeyMap["\uE05C"] = NormalizedKeys.INSERT
|
|
82
|
+
normalizedKeyMap["\uE05D"] = NormalizedKeys.DELETE
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
package io.appium.espressoserver.lib.helpers.w3c.dispatcher.constants
|
|
2
|
+
|
|
3
|
+
object NormalizedKeys {
|
|
4
|
+
const val UNIDENTIFIED = "UNIDENTIFIED"
|
|
5
|
+
const val CANCEL = "CANCEL"
|
|
6
|
+
const val HELP = "HELP"
|
|
7
|
+
const val BACKSPACE = "BACKSPACE"
|
|
8
|
+
const val TAB = "TAB"
|
|
9
|
+
const val CLEAR = "CLEAR"
|
|
10
|
+
const val RETURN = "RETURN"
|
|
11
|
+
const val ENTER = "ENTER"
|
|
12
|
+
const val PAUSE = "PAUSE"
|
|
13
|
+
const val ESCAPE = "ESCAPE"
|
|
14
|
+
const val WHITESPACE = " "
|
|
15
|
+
const val SEMICOLON = ";"
|
|
16
|
+
const val EQUALS = "="
|
|
17
|
+
const val ZERO = "0"
|
|
18
|
+
const val ONE = "1"
|
|
19
|
+
const val TWO = "2"
|
|
20
|
+
const val THREE = "3"
|
|
21
|
+
const val FOUR = "4"
|
|
22
|
+
const val FIVE = "5"
|
|
23
|
+
const val SIX = "6"
|
|
24
|
+
const val SEVEN = "7"
|
|
25
|
+
const val EIGHT = "8"
|
|
26
|
+
const val NINE = "9"
|
|
27
|
+
const val ASTERISK = "*"
|
|
28
|
+
const val PLUS = "+"
|
|
29
|
+
const val COMMA = ","
|
|
30
|
+
const val HYPHEN = "-"
|
|
31
|
+
const val PERIOD = "."
|
|
32
|
+
const val FORWARD_SLASH = "/"
|
|
33
|
+
const val F1 = "F1"
|
|
34
|
+
const val F2 = "F2"
|
|
35
|
+
const val F3 = "F3"
|
|
36
|
+
const val F4 = "F4"
|
|
37
|
+
const val F5 = "F5"
|
|
38
|
+
const val F6 = "F6"
|
|
39
|
+
const val F7 = "F7"
|
|
40
|
+
const val F8 = "F8"
|
|
41
|
+
const val F9 = "F9"
|
|
42
|
+
const val F10 = "F10"
|
|
43
|
+
const val F11 = "F11"
|
|
44
|
+
const val F12 = "F12"
|
|
45
|
+
const val ZENKAKU_HANKAKU = "ZENKAKUHANKAKU"
|
|
46
|
+
const val SHIFT = "SHIFT"
|
|
47
|
+
const val CONTROL = "CONTROL"
|
|
48
|
+
const val ALT = "ALT"
|
|
49
|
+
const val META = "META"
|
|
50
|
+
const val PAGEUP = "PAGEUP"
|
|
51
|
+
const val PAGEDOWN = "PAGEDOWN"
|
|
52
|
+
const val END = "END"
|
|
53
|
+
const val HOME = "HOME"
|
|
54
|
+
const val ARROW_LEFT = "ARROWLEFT"
|
|
55
|
+
const val ARROW_UP = "ARROWUP"
|
|
56
|
+
const val ARROW_RIGHT = "ARROWRIGHT"
|
|
57
|
+
const val ARROW_DOWN = "ARROWDOWN"
|
|
58
|
+
const val INSERT = "INSERT"
|
|
59
|
+
const val DELETE = "DELETE"
|
|
60
|
+
}
|