selenium-webdriver 2.48.2 → 2.53.3
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/CHANGES.md +116 -0
- package/NOTICE +1 -1
- package/README.md +59 -9
- package/builder.js +375 -358
- package/chrome.js +549 -586
- package/edge.js +378 -0
- package/error.js +9 -6
- package/example/google_search.js +1 -1
- package/example/google_search_generator.js +2 -4
- package/example/logging.js +6 -2
- package/example/sample.js +21 -0
- package/executors.js +11 -27
- package/firefox/binary.js +149 -98
- package/firefox/extension.js +15 -19
- package/firefox/index.js +256 -163
- package/firefox/profile.js +223 -243
- package/http/index.js +487 -81
- package/http/util.js +40 -36
- package/ie.js +288 -309
- package/index.js +34 -125
- package/io/exec.js +58 -39
- package/io/index.js +72 -60
- package/lib/README +4 -0
- package/lib/actions.js +596 -0
- package/lib/by.js +277 -0
- package/lib/capabilities.js +450 -0
- package/lib/{webdriver/command.js → command.js} +91 -72
- package/lib/{webdriver/button.js → devmode.js} +13 -8
- package/lib/error.js +690 -0
- package/lib/events.js +212 -0
- package/lib/firefox/amd64/libnoblur64.so +0 -0
- package/lib/firefox/i386/libnoblur.so +0 -0
- package/lib/firefox/webdriver.json +5 -1
- package/lib/firefox/webdriver.xpi +0 -0
- package/lib/{webdriver/key.js → input.js} +84 -2
- package/lib/logging.js +670 -0
- package/lib/{webdriver/promise.js → promise.js} +817 -644
- package/lib/safari/client.js +266 -214
- package/lib/session.js +80 -0
- package/lib/{webdriver/serializable.js → symbols.js} +16 -19
- package/lib/test/build.js +4 -4
- package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
- package/lib/test/data/click_tests/overlapping_elements.html +15 -4
- package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
- package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
- package/lib/test/data/hidden_partially.html +45 -0
- package/lib/test/data/readOnlyPage.html +1 -1
- package/lib/test/data/selectPage.html +18 -2
- package/lib/test/fileserver.js +3 -4
- package/lib/test/index.js +7 -3
- package/lib/test/resources.js +1 -1
- package/lib/until.js +376 -0
- package/lib/webdriver.js +2440 -0
- package/net/index.js +4 -0
- package/net/portprober.js +16 -12
- package/opera.js +295 -314
- package/package.json +6 -5
- package/phantomjs.js +144 -147
- package/proxy.js +10 -6
- package/remote/index.js +289 -238
- package/safari.js +326 -311
- package/test/chrome/options_test.js +11 -9
- package/test/element_finding_test.js +51 -13
- package/test/execute_script_test.js +17 -3
- package/test/firefox/firefox_test.js +0 -32
- package/test/http/http_test.js +671 -61
- package/test/http/util_test.js +25 -23
- package/test/io_test.js +67 -1
- package/test/lib/by_test.js +139 -0
- package/test/lib/capabilities_test.js +111 -0
- package/test/lib/error_test.js +325 -0
- package/test/lib/events_test.js +177 -0
- package/test/lib/logging_test.js +272 -0
- package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
- package/test/lib/promise_error_test.js +808 -0
- package/test/lib/promise_flow_test.js +2282 -0
- package/test/lib/promise_generator_test.js +308 -0
- package/test/lib/promise_test.js +996 -0
- package/test/lib/testutil.js +90 -0
- package/test/lib/until_test.js +400 -0
- package/test/lib/webdriver_test.js +2157 -0
- package/test/page_loading_test.js +7 -9
- package/test/remote_test.js +50 -3
- package/test/session_test.js +53 -0
- package/test/stale_element_test.js +2 -2
- package/test/testing/assert_test.js +374 -0
- package/test/testing/index_test.js +9 -11
- package/testing/assert.js +334 -17
- package/testing/index.js +12 -2
- package/_base.js +0 -200
- package/docs/Changes.html +0 -356
- package/docs/class_bot_Error.html +0 -15
- package/docs/class_webdriver_ActionSequence.html +0 -115
- package/docs/class_webdriver_Alert.html +0 -24
- package/docs/class_webdriver_AlertPromise.html +0 -92
- package/docs/class_webdriver_Capabilities.html +0 -60
- package/docs/class_webdriver_Command.html +0 -15
- package/docs/class_webdriver_EventEmitter.html +0 -35
- package/docs/class_webdriver_FileDetector.html +0 -21
- package/docs/class_webdriver_Locator.html +0 -12
- package/docs/class_webdriver_Serializable.html +0 -9
- package/docs/class_webdriver_Session.html +0 -13
- package/docs/class_webdriver_TouchSequence.html +0 -49
- package/docs/class_webdriver_UnhandledAlertError.html +0 -18
- package/docs/class_webdriver_WebDriver.html +0 -313
- package/docs/class_webdriver_WebDriver_Logs.html +0 -15
- package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
- package/docs/class_webdriver_WebDriver_Options.html +0 -41
- package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
- package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
- package/docs/class_webdriver_WebDriver_Window.html +0 -27
- package/docs/class_webdriver_WebElement.html +0 -223
- package/docs/class_webdriver_WebElementPromise.html +0 -274
- package/docs/class_webdriver_http_Executor.html +0 -22
- package/docs/class_webdriver_http_Request.html +0 -12
- package/docs/class_webdriver_http_Response.html +0 -13
- package/docs/class_webdriver_logging_Entry.html +0 -15
- package/docs/class_webdriver_logging_Level.html +0 -55
- package/docs/class_webdriver_logging_LogRecord.html +0 -45
- package/docs/class_webdriver_logging_Logger.html +0 -119
- package/docs/class_webdriver_logging_Preferences.html +0 -8
- package/docs/class_webdriver_promise_CancellationError.html +0 -17
- package/docs/class_webdriver_promise_ControlFlow.html +0 -153
- package/docs/class_webdriver_promise_Deferred.html +0 -84
- package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
- package/docs/class_webdriver_promise_Promise.html +0 -75
- package/docs/class_webdriver_stacktrace_Frame.html +0 -20
- package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
- package/docs/class_webdriver_testing_Assertion.html +0 -99
- package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
- package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
- package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
- package/docs/class_webdriver_until_Condition.html +0 -7
- package/docs/dossier.css +0 -1
- package/docs/dossier.js +0 -86
- package/docs/enum_bot_ErrorCode.html +0 -3
- package/docs/enum_bot_Error_State.html +0 -2
- package/docs/enum_webdriver_Browser.html +0 -2
- package/docs/enum_webdriver_Button.html +0 -2
- package/docs/enum_webdriver_Capability.html +0 -33
- package/docs/enum_webdriver_CommandName.html +0 -3
- package/docs/enum_webdriver_Key.html +0 -12
- package/docs/enum_webdriver_logging_Type.html +0 -6
- package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
- package/docs/index.html +0 -125
- package/docs/interface_webdriver_CommandExecutor.html +0 -9
- package/docs/interface_webdriver_http_Client.html +0 -10
- package/docs/interface_webdriver_promise_Thenable.html +0 -77
- package/docs/module_selenium-webdriver.html +0 -23
- package/docs/module_selenium-webdriver__base.html +0 -23
- package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
- package/docs/module_selenium-webdriver_builder.html +0 -2
- package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
- package/docs/module_selenium-webdriver_chrome.html +0 -90
- package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
- package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
- package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
- package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
- package/docs/module_selenium-webdriver_class_Builder.html +0 -138
- package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
- package/docs/module_selenium-webdriver_class_Command.html +0 -15
- package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
- package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
- package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
- package/docs/module_selenium-webdriver_class_Session.html +0 -13
- package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
- package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
- package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
- package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
- package/docs/module_selenium-webdriver_enum_Button.html +0 -2
- package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
- package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
- package/docs/module_selenium-webdriver_enum_Key.html +0 -12
- package/docs/module_selenium-webdriver_error.html +0 -4
- package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
- package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
- package/docs/module_selenium-webdriver_executors.html +0 -10
- package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
- package/docs/module_selenium-webdriver_firefox.html +0 -68
- package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
- package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
- package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
- package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
- package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
- package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
- package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
- package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
- package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
- package/docs/module_selenium-webdriver_http.html +0 -9
- package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
- package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
- package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
- package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
- package/docs/module_selenium-webdriver_http_util.html +0 -17
- package/docs/module_selenium-webdriver_ie.html +0 -11
- package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
- package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
- package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
- package/docs/module_selenium-webdriver_io.html +0 -37
- package/docs/module_selenium-webdriver_io_exec.html +0 -6
- package/docs/module_selenium-webdriver_namespace_By.html +0 -56
- package/docs/module_selenium-webdriver_namespace_error.html +0 -4
- package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
- package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
- package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
- package/docs/module_selenium-webdriver_namespace_until.html +0 -82
- package/docs/module_selenium-webdriver_net.html +0 -7
- package/docs/module_selenium-webdriver_net_portprober.html +0 -12
- package/docs/module_selenium-webdriver_opera.html +0 -62
- package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
- package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
- package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
- package/docs/module_selenium-webdriver_phantomjs.html +0 -2
- package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
- package/docs/module_selenium-webdriver_proxy.html +0 -28
- package/docs/module_selenium-webdriver_remote.html +0 -8
- package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
- package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
- package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
- package/docs/module_selenium-webdriver_safari.html +0 -9
- package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
- package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
- package/docs/module_selenium-webdriver_testing.html +0 -74
- package/docs/module_selenium-webdriver_testing_assert.html +0 -9
- package/docs/namespace_bot.html +0 -4
- package/docs/namespace_bot_json.html +0 -20
- package/docs/namespace_bot_response.html +0 -18
- package/docs/namespace_bot_userAgent.html +0 -33
- package/docs/namespace_webdriver.html +0 -30
- package/docs/namespace_webdriver_By.html +0 -56
- package/docs/namespace_webdriver_http.html +0 -6
- package/docs/namespace_webdriver_logging.html +0 -70
- package/docs/namespace_webdriver_promise.html +0 -688
- package/docs/namespace_webdriver_stacktrace.html +0 -17
- package/docs/namespace_webdriver_testing.html +0 -7
- package/docs/namespace_webdriver_testing_assert.html +0 -9
- package/docs/namespace_webdriver_testing_asserts.html +0 -18
- package/docs/namespace_webdriver_until.html +0 -82
- package/docs/source/_base.js.src.html +0 -1
- package/docs/source/builder.js.src.html +0 -1
- package/docs/source/chrome.js.src.html +0 -1
- package/docs/source/error.js.src.html +0 -1
- package/docs/source/executors.js.src.html +0 -1
- package/docs/source/firefox/binary.js.src.html +0 -1
- package/docs/source/firefox/extension.js.src.html +0 -1
- package/docs/source/firefox/index.js.src.html +0 -1
- package/docs/source/firefox/profile.js.src.html +0 -1
- package/docs/source/http/index.js.src.html +0 -1
- package/docs/source/http/util.js.src.html +0 -1
- package/docs/source/ie.js.src.html +0 -1
- package/docs/source/index.js.src.html +0 -1
- package/docs/source/io/exec.js.src.html +0 -1
- package/docs/source/io/index.js.src.html +0 -1
- package/docs/source/lib/atoms/error.js.src.html +0 -1
- package/docs/source/lib/atoms/json.js.src.html +0 -1
- package/docs/source/lib/atoms/response.js.src.html +0 -1
- package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
- package/docs/source/lib/goog/array/array.js.src.html +0 -1
- package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
- package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
- package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
- package/docs/source/lib/goog/async/run.js.src.html +0 -1
- package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
- package/docs/source/lib/goog/base.js.src.html +0 -1
- package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
- package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
- package/docs/source/lib/goog/debug/error.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
- package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
- package/docs/source/lib/goog/deps.js.src.html +0 -1
- package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
- package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
- package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
- package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
- package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
- package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
- package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
- package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
- package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
- package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
- package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
- package/docs/source/lib/goog/events/event.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
- package/docs/source/lib/goog/events/events.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
- package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
- package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
- package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
- package/docs/source/lib/goog/events/listener.js.src.html +0 -1
- package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
- package/docs/source/lib/goog/fs/url.js.src.html +0 -1
- package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
- package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
- package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
- package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
- package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
- package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
- package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
- package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
- package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
- package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
- package/docs/source/lib/goog/json/json.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
- package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
- package/docs/source/lib/goog/log/log.js.src.html +0 -1
- package/docs/source/lib/goog/math/box.js.src.html +0 -1
- package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
- package/docs/source/lib/goog/math/math.js.src.html +0 -1
- package/docs/source/lib/goog/math/rect.js.src.html +0 -1
- package/docs/source/lib/goog/math/size.js.src.html +0 -1
- package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
- package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
- package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
- package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
- package/docs/source/lib/goog/object/object.js.src.html +0 -1
- package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
- package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
- package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
- package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
- package/docs/source/lib/goog/string/const.js.src.html +0 -1
- package/docs/source/lib/goog/string/string.js.src.html +0 -1
- package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
- package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
- package/docs/source/lib/goog/structs/map.js.src.html +0 -1
- package/docs/source/lib/goog/structs/set.js.src.html +0 -1
- package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
- package/docs/source/lib/goog/style/style.js.src.html +0 -1
- package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
- package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
- package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
- package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
- package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
- package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
- package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
- package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
- package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
- package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
- package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
- package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
- package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
- package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
- package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
- package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
- package/docs/source/lib/webdriver/button.js.src.html +0 -1
- package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
- package/docs/source/lib/webdriver/command.js.src.html +0 -1
- package/docs/source/lib/webdriver/events.js.src.html +0 -1
- package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
- package/docs/source/lib/webdriver/key.js.src.html +0 -1
- package/docs/source/lib/webdriver/locators.js.src.html +0 -1
- package/docs/source/lib/webdriver/logging.js.src.html +0 -1
- package/docs/source/lib/webdriver/promise.js.src.html +0 -1
- package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
- package/docs/source/lib/webdriver/session.js.src.html +0 -1
- package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
- package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
- package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
- package/docs/source/lib/webdriver/until.js.src.html +0 -1
- package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
- package/docs/source/net/index.js.src.html +0 -1
- package/docs/source/net/portprober.js.src.html +0 -1
- package/docs/source/opera.js.src.html +0 -1
- package/docs/source/phantomjs.js.src.html +0 -1
- package/docs/source/proxy.js.src.html +0 -1
- package/docs/source/remote/index.js.src.html +0 -1
- package/docs/source/safari.js.src.html +0 -1
- package/docs/source/testing/assert.js.src.html +0 -1
- package/docs/source/testing/index.js.src.html +0 -1
- package/docs/types.js +0 -1
- package/lib/atoms/error.js +0 -202
- package/lib/atoms/json.js +0 -80
- package/lib/atoms/response.js +0 -110
- package/lib/atoms/userAgent.js +0 -257
- package/lib/goog/LICENSE +0 -176
- package/lib/goog/array/array.js +0 -1654
- package/lib/goog/asserts/asserts.js +0 -365
- package/lib/goog/async/freelist.js +0 -88
- package/lib/goog/async/nexttick.js +0 -241
- package/lib/goog/async/run.js +0 -133
- package/lib/goog/async/workqueue.js +0 -139
- package/lib/goog/base.js +0 -2548
- package/lib/goog/debug/debug.js +0 -653
- package/lib/goog/debug/entrypointregistry.js +0 -158
- package/lib/goog/debug/error.js +0 -63
- package/lib/goog/debug/logbuffer.js +0 -148
- package/lib/goog/debug/logger.js +0 -873
- package/lib/goog/debug/logrecord.js +0 -242
- package/lib/goog/deps.js +0 -151
- package/lib/goog/disposable/disposable.js +0 -307
- package/lib/goog/disposable/idisposable.js +0 -45
- package/lib/goog/dom/browserfeature.js +0 -72
- package/lib/goog/dom/dom.js +0 -2991
- package/lib/goog/dom/nodetype.js +0 -48
- package/lib/goog/dom/safe.js +0 -347
- package/lib/goog/dom/tagname.js +0 -160
- package/lib/goog/dom/tags.js +0 -41
- package/lib/goog/dom/vendor.js +0 -96
- package/lib/goog/events/browserevent.js +0 -400
- package/lib/goog/events/browserfeature.js +0 -85
- package/lib/goog/events/event.js +0 -143
- package/lib/goog/events/eventid.js +0 -47
- package/lib/goog/events/events.js +0 -984
- package/lib/goog/events/eventtarget.js +0 -394
- package/lib/goog/events/eventtype.js +0 -237
- package/lib/goog/events/keycodes.js +0 -427
- package/lib/goog/events/listenable.js +0 -335
- package/lib/goog/events/listener.js +0 -131
- package/lib/goog/events/listenermap.js +0 -308
- package/lib/goog/fs/url.js +0 -109
- package/lib/goog/functions/functions.js +0 -442
- package/lib/goog/html/safehtml.js +0 -757
- package/lib/goog/html/safescript.js +0 -234
- package/lib/goog/html/safestyle.js +0 -442
- package/lib/goog/html/safestylesheet.js +0 -276
- package/lib/goog/html/safeurl.js +0 -398
- package/lib/goog/html/trustedresourceurl.js +0 -224
- package/lib/goog/html/uncheckedconversions.js +0 -232
- package/lib/goog/i18n/bidi.js +0 -908
- package/lib/goog/iter/iter.js +0 -1302
- package/lib/goog/json/json.js +0 -363
- package/lib/goog/labs/testing/assertthat.js +0 -58
- package/lib/goog/labs/testing/logicmatcher.js +0 -212
- package/lib/goog/labs/testing/matcher.js +0 -80
- package/lib/goog/labs/testing/numbermatcher.js +0 -346
- package/lib/goog/labs/testing/objectmatcher.js +0 -317
- package/lib/goog/labs/testing/stringmatcher.js +0 -415
- package/lib/goog/labs/useragent/browser.js +0 -341
- package/lib/goog/labs/useragent/engine.js +0 -160
- package/lib/goog/labs/useragent/platform.js +0 -160
- package/lib/goog/labs/useragent/util.js +0 -148
- package/lib/goog/log/log.js +0 -197
- package/lib/goog/math/box.js +0 -398
- package/lib/goog/math/coordinate.js +0 -268
- package/lib/goog/math/math.js +0 -451
- package/lib/goog/math/rect.js +0 -476
- package/lib/goog/math/size.js +0 -227
- package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
- package/lib/goog/net/xhrlike.js +0 -124
- package/lib/goog/net/xmlhttp.js +0 -246
- package/lib/goog/net/xmlhttpfactory.js +0 -67
- package/lib/goog/object/object.js +0 -686
- package/lib/goog/promise/promise.js +0 -1350
- package/lib/goog/promise/resolver.js +0 -48
- package/lib/goog/promise/thenable.js +0 -126
- package/lib/goog/reflect/reflect.js +0 -77
- package/lib/goog/string/const.js +0 -182
- package/lib/goog/string/string.js +0 -1599
- package/lib/goog/string/typedstring.js +0 -48
- package/lib/goog/structs/collection.js +0 -56
- package/lib/goog/structs/map.js +0 -457
- package/lib/goog/structs/set.js +0 -279
- package/lib/goog/structs/structs.js +0 -354
- package/lib/goog/style/style.js +0 -2037
- package/lib/goog/testing/asserts.js +0 -1278
- package/lib/goog/testing/events/events.js +0 -767
- package/lib/goog/testing/functionmock.js +0 -175
- package/lib/goog/testing/jsunit.js +0 -162
- package/lib/goog/testing/loosemock.js +0 -242
- package/lib/goog/testing/mock.js +0 -645
- package/lib/goog/testing/mockclock.js +0 -606
- package/lib/goog/testing/mockcontrol.js +0 -220
- package/lib/goog/testing/mockinterface.js +0 -45
- package/lib/goog/testing/mockmatchers.js +0 -400
- package/lib/goog/testing/objectpropertystring.js +0 -68
- package/lib/goog/testing/propertyreplacer.js +0 -262
- package/lib/goog/testing/recordfunction.js +0 -215
- package/lib/goog/testing/stacktrace.js +0 -594
- package/lib/goog/testing/strictmock.js +0 -130
- package/lib/goog/testing/testcase.js +0 -1629
- package/lib/goog/testing/testrunner.js +0 -440
- package/lib/goog/uri/uri.js +0 -1524
- package/lib/goog/uri/utils.js +0 -1064
- package/lib/goog/useragent/product.js +0 -183
- package/lib/goog/useragent/product_isversion.js +0 -144
- package/lib/goog/useragent/useragent.js +0 -572
- package/lib/webdriver/actionsequence.js +0 -356
- package/lib/webdriver/builder.js +0 -207
- package/lib/webdriver/capabilities.js +0 -412
- package/lib/webdriver/events.js +0 -179
- package/lib/webdriver/firefoxdomexecutor.js +0 -175
- package/lib/webdriver/http/corsclient.js +0 -133
- package/lib/webdriver/http/http.js +0 -525
- package/lib/webdriver/http/xhrclient.js +0 -67
- package/lib/webdriver/locators.js +0 -257
- package/lib/webdriver/logging.js +0 -347
- package/lib/webdriver/session.js +0 -74
- package/lib/webdriver/stacktrace.js +0 -619
- package/lib/webdriver/test/builder_test.js +0 -53
- package/lib/webdriver/test/capabilities_test.js +0 -72
- package/lib/webdriver/test/events_test.js +0 -203
- package/lib/webdriver/test/http/corsclient_test.js +0 -151
- package/lib/webdriver/test/http/http_test.js +0 -428
- package/lib/webdriver/test/http/xhrclient_test.js +0 -196
- package/lib/webdriver/test/locators_test.js +0 -59
- package/lib/webdriver/test/logging_test.js +0 -85
- package/lib/webdriver/test/promise_error_test.js +0 -892
- package/lib/webdriver/test/promise_flow_test.js +0 -2365
- package/lib/webdriver/test/promise_generator_test.js +0 -323
- package/lib/webdriver/test/promise_test.js +0 -2012
- package/lib/webdriver/test/stacktrace_test.js +0 -480
- package/lib/webdriver/test/test_bootstrap.js +0 -67
- package/lib/webdriver/test/testing/asserts_test.js +0 -117
- package/lib/webdriver/test/testing/client_test.js +0 -88
- package/lib/webdriver/test/testing/testcase_test.js +0 -229
- package/lib/webdriver/test/testutil.js +0 -209
- package/lib/webdriver/test/testutil_test.js +0 -104
- package/lib/webdriver/test/until_test.js +0 -411
- package/lib/webdriver/test/webdriver_generator_test.js +0 -92
- package/lib/webdriver/test/webdriver_test.js +0 -2369
- package/lib/webdriver/testing/asserts.js +0 -487
- package/lib/webdriver/testing/client.js +0 -179
- package/lib/webdriver/testing/jsunit.js +0 -363
- package/lib/webdriver/testing/testcase.js +0 -168
- package/lib/webdriver/testing/window.js +0 -244
- package/lib/webdriver/touchsequence.js +0 -248
- package/lib/webdriver/until.js +0 -412
- package/lib/webdriver/webdriver.js +0 -2511
- package/test/_base_test.js +0 -129
|
@@ -1,606 +0,0 @@
|
|
|
1
|
-
// Copyright 2007 The Closure Library Authors. All Rights Reserved.
|
|
2
|
-
//
|
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
// you may not use this file except in compliance with the License.
|
|
5
|
-
// You may obtain a copy of the License at
|
|
6
|
-
//
|
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
//
|
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
// distributed under the License is distributed on an "AS-IS" BASIS,
|
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
// See the License for the specific language governing permissions and
|
|
13
|
-
// limitations under the License.
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @fileoverview Mock Clock implementation for working with setTimeout,
|
|
17
|
-
* setInterval, clearTimeout and clearInterval within unit tests.
|
|
18
|
-
*
|
|
19
|
-
* Derived from jsUnitMockTimeout.js, contributed to JsUnit by
|
|
20
|
-
* Pivotal Computer Systems, www.pivotalsf.com
|
|
21
|
-
*
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
goog.provide('goog.testing.MockClock');
|
|
25
|
-
|
|
26
|
-
goog.require('goog.Disposable');
|
|
27
|
-
goog.require('goog.async.run');
|
|
28
|
-
goog.require('goog.testing.PropertyReplacer');
|
|
29
|
-
goog.require('goog.testing.events');
|
|
30
|
-
goog.require('goog.testing.events.Event');
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Class for unit testing code that uses setTimeout and clearTimeout.
|
|
36
|
-
*
|
|
37
|
-
* NOTE: If you are using MockClock to test code that makes use of
|
|
38
|
-
* goog.fx.Animation, then you must either:
|
|
39
|
-
*
|
|
40
|
-
* 1. Install and dispose of the MockClock in setUpPage() and tearDownPage()
|
|
41
|
-
* respectively (rather than setUp()/tearDown()).
|
|
42
|
-
*
|
|
43
|
-
* or
|
|
44
|
-
*
|
|
45
|
-
* 2. Ensure that every test clears the animation queue by calling
|
|
46
|
-
* mockClock.tick(x) at the end of each test function (where `x` is large
|
|
47
|
-
* enough to complete all animations).
|
|
48
|
-
*
|
|
49
|
-
* Otherwise, if any animation is left pending at the time that
|
|
50
|
-
* MockClock.dispose() is called, that will permanently prevent any future
|
|
51
|
-
* animations from playing on the page.
|
|
52
|
-
*
|
|
53
|
-
* @param {boolean=} opt_autoInstall Install the MockClock at construction time.
|
|
54
|
-
* @constructor
|
|
55
|
-
* @extends {goog.Disposable}
|
|
56
|
-
* @final
|
|
57
|
-
*/
|
|
58
|
-
goog.testing.MockClock = function(opt_autoInstall) {
|
|
59
|
-
goog.Disposable.call(this);
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Reverse-order queue of timers to fire.
|
|
63
|
-
*
|
|
64
|
-
* The last item of the queue is popped off. Insertion happens from the
|
|
65
|
-
* right. For example, the expiration times for each element of the queue
|
|
66
|
-
* might be in the order 300, 200, 200.
|
|
67
|
-
*
|
|
68
|
-
* @type {Array<Object>}
|
|
69
|
-
* @private
|
|
70
|
-
*/
|
|
71
|
-
this.queue_ = [];
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Set of timeouts that should be treated as cancelled.
|
|
75
|
-
*
|
|
76
|
-
* Rather than removing cancelled timers directly from the queue, this set
|
|
77
|
-
* simply marks them as deleted so that they can be ignored when their
|
|
78
|
-
* turn comes up. The keys are the timeout keys that are cancelled, each
|
|
79
|
-
* mapping to true.
|
|
80
|
-
*
|
|
81
|
-
* @private {Object<number, boolean>}
|
|
82
|
-
*/
|
|
83
|
-
this.deletedKeys_ = {};
|
|
84
|
-
|
|
85
|
-
if (opt_autoInstall) {
|
|
86
|
-
this.install();
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
goog.inherits(goog.testing.MockClock, goog.Disposable);
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Default wait timeout for mocking requestAnimationFrame (in milliseconds).
|
|
94
|
-
*
|
|
95
|
-
* @type {number}
|
|
96
|
-
* @const
|
|
97
|
-
*/
|
|
98
|
-
goog.testing.MockClock.REQUEST_ANIMATION_FRAME_TIMEOUT = 20;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* ID to use for next timeout. Timeout IDs must never be reused, even across
|
|
103
|
-
* MockClock instances.
|
|
104
|
-
* @public {number}
|
|
105
|
-
*/
|
|
106
|
-
goog.testing.MockClock.nextId = Math.round(Math.random() * 10000);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Count of the number of timeouts made by this instance.
|
|
111
|
-
* @type {number}
|
|
112
|
-
* @private
|
|
113
|
-
*/
|
|
114
|
-
goog.testing.MockClock.prototype.timeoutsMade_ = 0;
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* PropertyReplacer instance which overwrites and resets setTimeout,
|
|
119
|
-
* setInterval, etc. or null if the MockClock is not installed.
|
|
120
|
-
* @type {goog.testing.PropertyReplacer}
|
|
121
|
-
* @private
|
|
122
|
-
*/
|
|
123
|
-
goog.testing.MockClock.prototype.replacer_ = null;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* The current simulated time in milliseconds.
|
|
128
|
-
* @type {number}
|
|
129
|
-
* @private
|
|
130
|
-
*/
|
|
131
|
-
goog.testing.MockClock.prototype.nowMillis_ = 0;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Additional delay between the time a timeout was set to fire, and the time
|
|
136
|
-
* it actually fires. Useful for testing workarounds for this Firefox 2 bug:
|
|
137
|
-
* https://bugzilla.mozilla.org/show_bug.cgi?id=291386
|
|
138
|
-
* May be negative.
|
|
139
|
-
* @type {number}
|
|
140
|
-
* @private
|
|
141
|
-
*/
|
|
142
|
-
goog.testing.MockClock.prototype.timeoutDelay_ = 0;
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* The real set timeout for reference.
|
|
147
|
-
* @const @private {!Function}
|
|
148
|
-
*/
|
|
149
|
-
goog.testing.MockClock.REAL_SETTIMEOUT_ = goog.global.setTimeout;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Installs the MockClock by overriding the global object's implementation of
|
|
154
|
-
* setTimeout, setInterval, clearTimeout and clearInterval.
|
|
155
|
-
*/
|
|
156
|
-
goog.testing.MockClock.prototype.install = function() {
|
|
157
|
-
if (!this.replacer_) {
|
|
158
|
-
if (goog.testing.MockClock.REAL_SETTIMEOUT_ !== goog.global.setTimeout) {
|
|
159
|
-
if (typeof console !== 'undefined' && console.warn) {
|
|
160
|
-
console.warn('Non default setTimeout detected. ' +
|
|
161
|
-
'Use of multiple MockClock instances or other clock mocking ' +
|
|
162
|
-
'should be avoided due to unspecified behavior and ' +
|
|
163
|
-
'the resulting fragility.');
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
var r = this.replacer_ = new goog.testing.PropertyReplacer();
|
|
168
|
-
r.set(goog.global, 'setTimeout', goog.bind(this.setTimeout_, this));
|
|
169
|
-
r.set(goog.global, 'setInterval', goog.bind(this.setInterval_, this));
|
|
170
|
-
r.set(goog.global, 'setImmediate', goog.bind(this.setImmediate_, this));
|
|
171
|
-
r.set(goog.global, 'clearTimeout', goog.bind(this.clearTimeout_, this));
|
|
172
|
-
r.set(goog.global, 'clearInterval', goog.bind(this.clearInterval_, this));
|
|
173
|
-
// goog.Promise uses goog.async.run. In order to be able to test
|
|
174
|
-
// Promise-based code, we need to make sure that goog.async.run uses
|
|
175
|
-
// nextTick instead of native browser Promises. This means that it will
|
|
176
|
-
// default to setImmediate, which is replaced above. Note that we test for
|
|
177
|
-
// the presence of goog.async.run.forceNextTick to be resilient to the case
|
|
178
|
-
// where tests replace goog.async.run directly.
|
|
179
|
-
goog.async.run.forceNextTick && goog.async.run.forceNextTick(
|
|
180
|
-
goog.testing.MockClock.REAL_SETTIMEOUT_);
|
|
181
|
-
|
|
182
|
-
// Replace the requestAnimationFrame functions.
|
|
183
|
-
this.replaceRequestAnimationFrame_();
|
|
184
|
-
|
|
185
|
-
// PropertyReplacer#set can't be called with renameable functions.
|
|
186
|
-
this.oldGoogNow_ = goog.now;
|
|
187
|
-
goog.now = goog.bind(this.getCurrentTime, this);
|
|
188
|
-
}
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Installs the mocks for requestAnimationFrame and cancelRequestAnimationFrame.
|
|
194
|
-
* @private
|
|
195
|
-
*/
|
|
196
|
-
goog.testing.MockClock.prototype.replaceRequestAnimationFrame_ = function() {
|
|
197
|
-
var r = this.replacer_;
|
|
198
|
-
var requestFuncs = ['requestAnimationFrame',
|
|
199
|
-
'webkitRequestAnimationFrame',
|
|
200
|
-
'mozRequestAnimationFrame',
|
|
201
|
-
'oRequestAnimationFrame',
|
|
202
|
-
'msRequestAnimationFrame'];
|
|
203
|
-
|
|
204
|
-
var cancelFuncs = ['cancelAnimationFrame',
|
|
205
|
-
'cancelRequestAnimationFrame',
|
|
206
|
-
'webkitCancelRequestAnimationFrame',
|
|
207
|
-
'mozCancelRequestAnimationFrame',
|
|
208
|
-
'oCancelRequestAnimationFrame',
|
|
209
|
-
'msCancelRequestAnimationFrame'];
|
|
210
|
-
|
|
211
|
-
for (var i = 0; i < requestFuncs.length; ++i) {
|
|
212
|
-
if (goog.global && goog.global[requestFuncs[i]]) {
|
|
213
|
-
r.set(goog.global, requestFuncs[i],
|
|
214
|
-
goog.bind(this.requestAnimationFrame_, this));
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
for (var i = 0; i < cancelFuncs.length; ++i) {
|
|
219
|
-
if (goog.global && goog.global[cancelFuncs[i]]) {
|
|
220
|
-
r.set(goog.global, cancelFuncs[i],
|
|
221
|
-
goog.bind(this.cancelRequestAnimationFrame_, this));
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Removes the MockClock's hooks into the global object's functions and revert
|
|
229
|
-
* to their original values.
|
|
230
|
-
*/
|
|
231
|
-
goog.testing.MockClock.prototype.uninstall = function() {
|
|
232
|
-
if (this.replacer_) {
|
|
233
|
-
this.replacer_.reset();
|
|
234
|
-
this.replacer_ = null;
|
|
235
|
-
goog.now = this.oldGoogNow_;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
this.resetAsyncQueue_();
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
/** @override */
|
|
243
|
-
goog.testing.MockClock.prototype.disposeInternal = function() {
|
|
244
|
-
this.uninstall();
|
|
245
|
-
this.queue_ = null;
|
|
246
|
-
this.deletedKeys_ = null;
|
|
247
|
-
goog.testing.MockClock.superClass_.disposeInternal.call(this);
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
/**
|
|
252
|
-
* Resets the MockClock, removing all timeouts that are scheduled and resets
|
|
253
|
-
* the fake timer count.
|
|
254
|
-
*/
|
|
255
|
-
goog.testing.MockClock.prototype.reset = function() {
|
|
256
|
-
this.queue_ = [];
|
|
257
|
-
this.deletedKeys_ = {};
|
|
258
|
-
this.nowMillis_ = 0;
|
|
259
|
-
this.timeoutsMade_ = 0;
|
|
260
|
-
this.timeoutDelay_ = 0;
|
|
261
|
-
|
|
262
|
-
this.resetAsyncQueue_();
|
|
263
|
-
};
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
/**
|
|
267
|
-
* Resets the async queue when this clock resets.
|
|
268
|
-
* @private
|
|
269
|
-
*/
|
|
270
|
-
goog.testing.MockClock.prototype.resetAsyncQueue_ = function() {
|
|
271
|
-
goog.async.run.resetQueue();
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Sets the amount of time between when a timeout is scheduled to fire and when
|
|
277
|
-
* it actually fires.
|
|
278
|
-
* @param {number} delay The delay in milliseconds. May be negative.
|
|
279
|
-
*/
|
|
280
|
-
goog.testing.MockClock.prototype.setTimeoutDelay = function(delay) {
|
|
281
|
-
this.timeoutDelay_ = delay;
|
|
282
|
-
};
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
/**
|
|
286
|
-
* @return {number} delay The amount of time between when a timeout is
|
|
287
|
-
* scheduled to fire and when it actually fires, in milliseconds. May
|
|
288
|
-
* be negative.
|
|
289
|
-
*/
|
|
290
|
-
goog.testing.MockClock.prototype.getTimeoutDelay = function() {
|
|
291
|
-
return this.timeoutDelay_;
|
|
292
|
-
};
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* Increments the MockClock's time by a given number of milliseconds, running
|
|
297
|
-
* any functions that are now overdue.
|
|
298
|
-
* @param {number=} opt_millis Number of milliseconds to increment the counter.
|
|
299
|
-
* If not specified, clock ticks 1 millisecond.
|
|
300
|
-
* @return {number} Current mock time in milliseconds.
|
|
301
|
-
*/
|
|
302
|
-
goog.testing.MockClock.prototype.tick = function(opt_millis) {
|
|
303
|
-
if (typeof opt_millis != 'number') {
|
|
304
|
-
opt_millis = 1;
|
|
305
|
-
}
|
|
306
|
-
var endTime = this.nowMillis_ + opt_millis;
|
|
307
|
-
this.runFunctionsWithinRange_(endTime);
|
|
308
|
-
this.nowMillis_ = endTime;
|
|
309
|
-
return endTime;
|
|
310
|
-
};
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Takes a promise and then ticks the mock clock. If the promise successfully
|
|
315
|
-
* resolves, returns the value produced by the promise. If the promise is
|
|
316
|
-
* rejected, it throws the rejection as an exception. If the promise is not
|
|
317
|
-
* resolved at all, throws an exception.
|
|
318
|
-
* Also ticks the general clock by the specified amount.
|
|
319
|
-
*
|
|
320
|
-
* @param {!goog.Thenable<T>} promise A promise that should be resolved after
|
|
321
|
-
* the mockClock is ticked for the given opt_millis.
|
|
322
|
-
* @param {number=} opt_millis Number of milliseconds to increment the counter.
|
|
323
|
-
* If not specified, clock ticks 1 millisecond.
|
|
324
|
-
* @return {T}
|
|
325
|
-
* @template T
|
|
326
|
-
*/
|
|
327
|
-
goog.testing.MockClock.prototype.tickPromise = function(promise, opt_millis) {
|
|
328
|
-
var value;
|
|
329
|
-
var error;
|
|
330
|
-
var resolved = false;
|
|
331
|
-
promise.then(function(v) {
|
|
332
|
-
value = v;
|
|
333
|
-
resolved = true;
|
|
334
|
-
}, function(e) {
|
|
335
|
-
error = e;
|
|
336
|
-
resolved = true;
|
|
337
|
-
});
|
|
338
|
-
this.tick(opt_millis);
|
|
339
|
-
if (!resolved) {
|
|
340
|
-
throw new Error(
|
|
341
|
-
'Promise was expected to be resolved after mock clock tick.');
|
|
342
|
-
}
|
|
343
|
-
if (error) {
|
|
344
|
-
throw error;
|
|
345
|
-
}
|
|
346
|
-
return value;
|
|
347
|
-
};
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
/**
|
|
351
|
-
* @return {number} The number of timeouts that have been scheduled.
|
|
352
|
-
*/
|
|
353
|
-
goog.testing.MockClock.prototype.getTimeoutsMade = function() {
|
|
354
|
-
return this.timeoutsMade_;
|
|
355
|
-
};
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* @return {number} The MockClock's current time in milliseconds.
|
|
360
|
-
*/
|
|
361
|
-
goog.testing.MockClock.prototype.getCurrentTime = function() {
|
|
362
|
-
return this.nowMillis_;
|
|
363
|
-
};
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
/**
|
|
367
|
-
* @param {number} timeoutKey The timeout key.
|
|
368
|
-
* @return {boolean} Whether the timer has been set and not cleared,
|
|
369
|
-
* independent of the timeout's expiration. In other words, the timeout
|
|
370
|
-
* could have passed or could be scheduled for the future. Either way,
|
|
371
|
-
* this function returns true or false depending only on whether the
|
|
372
|
-
* provided timeoutKey represents a timeout that has been set and not
|
|
373
|
-
* cleared.
|
|
374
|
-
*/
|
|
375
|
-
goog.testing.MockClock.prototype.isTimeoutSet = function(timeoutKey) {
|
|
376
|
-
return timeoutKey < goog.testing.MockClock.nextId &&
|
|
377
|
-
timeoutKey >= goog.testing.MockClock.nextId - this.timeoutsMade_ &&
|
|
378
|
-
!this.deletedKeys_[timeoutKey];
|
|
379
|
-
};
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Runs any function that is scheduled before a certain time. Timeouts can
|
|
384
|
-
* be made to fire early or late if timeoutDelay_ is non-0.
|
|
385
|
-
* @param {number} endTime The latest time in the range, in milliseconds.
|
|
386
|
-
* @private
|
|
387
|
-
*/
|
|
388
|
-
goog.testing.MockClock.prototype.runFunctionsWithinRange_ = function(
|
|
389
|
-
endTime) {
|
|
390
|
-
var adjustedEndTime = endTime - this.timeoutDelay_;
|
|
391
|
-
|
|
392
|
-
// Repeatedly pop off the last item since the queue is always sorted.
|
|
393
|
-
while (this.queue_ && this.queue_.length &&
|
|
394
|
-
this.queue_[this.queue_.length - 1].runAtMillis <= adjustedEndTime) {
|
|
395
|
-
var timeout = this.queue_.pop();
|
|
396
|
-
|
|
397
|
-
if (!(timeout.timeoutKey in this.deletedKeys_)) {
|
|
398
|
-
// Only move time forwards.
|
|
399
|
-
this.nowMillis_ = Math.max(this.nowMillis_,
|
|
400
|
-
timeout.runAtMillis + this.timeoutDelay_);
|
|
401
|
-
// Call timeout in global scope and pass the timeout key as the argument.
|
|
402
|
-
timeout.funcToCall.call(goog.global, timeout.timeoutKey);
|
|
403
|
-
// In case the interval was cleared in the funcToCall
|
|
404
|
-
if (timeout.recurring) {
|
|
405
|
-
this.scheduleFunction_(
|
|
406
|
-
timeout.timeoutKey, timeout.funcToCall, timeout.millis, true);
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
};
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
/**
|
|
414
|
-
* Schedules a function to be run at a certain time.
|
|
415
|
-
* @param {number} timeoutKey The timeout key.
|
|
416
|
-
* @param {Function} funcToCall The function to call.
|
|
417
|
-
* @param {number} millis The number of milliseconds to call it in.
|
|
418
|
-
* @param {boolean} recurring Whether to function call should recur.
|
|
419
|
-
* @private
|
|
420
|
-
*/
|
|
421
|
-
goog.testing.MockClock.prototype.scheduleFunction_ = function(
|
|
422
|
-
timeoutKey, funcToCall, millis, recurring) {
|
|
423
|
-
if (!goog.isFunction(funcToCall)) {
|
|
424
|
-
// Early error for debuggability rather than dying in the next .tick()
|
|
425
|
-
throw new TypeError('The provided callback must be a function, not a ' +
|
|
426
|
-
typeof funcToCall);
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
var timeout = {
|
|
430
|
-
runAtMillis: this.nowMillis_ + millis,
|
|
431
|
-
funcToCall: funcToCall,
|
|
432
|
-
recurring: recurring,
|
|
433
|
-
timeoutKey: timeoutKey,
|
|
434
|
-
millis: millis
|
|
435
|
-
};
|
|
436
|
-
|
|
437
|
-
goog.testing.MockClock.insert_(timeout, this.queue_);
|
|
438
|
-
};
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
/**
|
|
442
|
-
* Inserts a timer descriptor into a descending-order queue.
|
|
443
|
-
*
|
|
444
|
-
* Later-inserted duplicates appear at lower indices. For example, the
|
|
445
|
-
* asterisk in (5,4,*,3,2,1) would be the insertion point for 3.
|
|
446
|
-
*
|
|
447
|
-
* @param {Object} timeout The timeout to insert, with numerical runAtMillis
|
|
448
|
-
* property.
|
|
449
|
-
* @param {Array<Object>} queue The queue to insert into, with each element
|
|
450
|
-
* having a numerical runAtMillis property.
|
|
451
|
-
* @private
|
|
452
|
-
*/
|
|
453
|
-
goog.testing.MockClock.insert_ = function(timeout, queue) {
|
|
454
|
-
// Although insertion of N items is quadratic, requiring goog.structs.Heap
|
|
455
|
-
// from a unit test will make tests more prone to breakage. Since unit
|
|
456
|
-
// tests are normally small, scalability is not a primary issue.
|
|
457
|
-
|
|
458
|
-
// Find an insertion point. Since the queue is in reverse order (so we
|
|
459
|
-
// can pop rather than unshift), and later timers with the same time stamp
|
|
460
|
-
// should be executed later, we look for the element strictly greater than
|
|
461
|
-
// the one we are inserting.
|
|
462
|
-
|
|
463
|
-
for (var i = queue.length; i != 0; i--) {
|
|
464
|
-
if (queue[i - 1].runAtMillis > timeout.runAtMillis) {
|
|
465
|
-
break;
|
|
466
|
-
}
|
|
467
|
-
queue[i] = queue[i - 1];
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
queue[i] = timeout;
|
|
471
|
-
};
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
/**
|
|
475
|
-
* Maximum 32-bit signed integer.
|
|
476
|
-
*
|
|
477
|
-
* Timeouts over this time return immediately in many browsers, due to integer
|
|
478
|
-
* overflow. Such known browsers include Firefox, Chrome, and Safari, but not
|
|
479
|
-
* IE.
|
|
480
|
-
*
|
|
481
|
-
* @type {number}
|
|
482
|
-
* @private
|
|
483
|
-
*/
|
|
484
|
-
goog.testing.MockClock.MAX_INT_ = 2147483647;
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
/**
|
|
488
|
-
* Schedules a function to be called after {@code millis} milliseconds.
|
|
489
|
-
* Mock implementation for setTimeout.
|
|
490
|
-
* @param {Function} funcToCall The function to call.
|
|
491
|
-
* @param {number=} opt_millis The number of milliseconds to call it after.
|
|
492
|
-
* @return {number} The number of timeouts created.
|
|
493
|
-
* @private
|
|
494
|
-
*/
|
|
495
|
-
goog.testing.MockClock.prototype.setTimeout_ = function(
|
|
496
|
-
funcToCall, opt_millis) {
|
|
497
|
-
var millis = opt_millis || 0;
|
|
498
|
-
if (millis > goog.testing.MockClock.MAX_INT_) {
|
|
499
|
-
throw Error(
|
|
500
|
-
'Bad timeout value: ' + millis + '. Timeouts over MAX_INT ' +
|
|
501
|
-
'(24.8 days) cause timeouts to be fired ' +
|
|
502
|
-
'immediately in most browsers, except for IE.');
|
|
503
|
-
}
|
|
504
|
-
this.timeoutsMade_++;
|
|
505
|
-
this.scheduleFunction_(goog.testing.MockClock.nextId, funcToCall, millis,
|
|
506
|
-
false);
|
|
507
|
-
return goog.testing.MockClock.nextId++;
|
|
508
|
-
};
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
/**
|
|
512
|
-
* Schedules a function to be called every {@code millis} milliseconds.
|
|
513
|
-
* Mock implementation for setInterval.
|
|
514
|
-
* @param {Function} funcToCall The function to call.
|
|
515
|
-
* @param {number=} opt_millis The number of milliseconds between calls.
|
|
516
|
-
* @return {number} The number of timeouts created.
|
|
517
|
-
* @private
|
|
518
|
-
*/
|
|
519
|
-
goog.testing.MockClock.prototype.setInterval_ =
|
|
520
|
-
function(funcToCall, opt_millis) {
|
|
521
|
-
var millis = opt_millis || 0;
|
|
522
|
-
this.timeoutsMade_++;
|
|
523
|
-
this.scheduleFunction_(goog.testing.MockClock.nextId, funcToCall, millis,
|
|
524
|
-
true);
|
|
525
|
-
return goog.testing.MockClock.nextId++;
|
|
526
|
-
};
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
/**
|
|
530
|
-
* Schedules a function to be called when an animation frame is triggered.
|
|
531
|
-
* Mock implementation for requestAnimationFrame.
|
|
532
|
-
* @param {Function} funcToCall The function to call.
|
|
533
|
-
* @return {number} The number of timeouts created.
|
|
534
|
-
* @private
|
|
535
|
-
*/
|
|
536
|
-
goog.testing.MockClock.prototype.requestAnimationFrame_ = function(funcToCall) {
|
|
537
|
-
return this.setTimeout_(goog.bind(function() {
|
|
538
|
-
if (funcToCall) {
|
|
539
|
-
funcToCall(this.getCurrentTime());
|
|
540
|
-
} else if (goog.global.mozRequestAnimationFrame) {
|
|
541
|
-
var event = new goog.testing.events.Event('MozBeforePaint', goog.global);
|
|
542
|
-
event['timeStamp'] = this.getCurrentTime();
|
|
543
|
-
goog.testing.events.fireBrowserEvent(event);
|
|
544
|
-
}
|
|
545
|
-
}, this), goog.testing.MockClock.REQUEST_ANIMATION_FRAME_TIMEOUT);
|
|
546
|
-
};
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
/**
|
|
550
|
-
* Schedules a function to be called immediately after the current JS
|
|
551
|
-
* execution.
|
|
552
|
-
* Mock implementation for setImmediate.
|
|
553
|
-
* @param {Function} funcToCall The function to call.
|
|
554
|
-
* @return {number} The number of timeouts created.
|
|
555
|
-
* @private
|
|
556
|
-
*/
|
|
557
|
-
goog.testing.MockClock.prototype.setImmediate_ = function(funcToCall) {
|
|
558
|
-
return this.setTimeout_(funcToCall, 0);
|
|
559
|
-
};
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
/**
|
|
563
|
-
* Clears a timeout.
|
|
564
|
-
* Mock implementation for clearTimeout.
|
|
565
|
-
* @param {number} timeoutKey The timeout key to clear.
|
|
566
|
-
* @private
|
|
567
|
-
*/
|
|
568
|
-
goog.testing.MockClock.prototype.clearTimeout_ = function(timeoutKey) {
|
|
569
|
-
// Some common libraries register static state with timers.
|
|
570
|
-
// This is bad. It leads to all sorts of crazy test problems where
|
|
571
|
-
// 1) Test A sets up a new mock clock and a static timer.
|
|
572
|
-
// 2) Test B sets up a new mock clock, but re-uses the static timer
|
|
573
|
-
// from Test A.
|
|
574
|
-
// 3) A timeout key from test A gets cleared, breaking a timeout in
|
|
575
|
-
// Test B.
|
|
576
|
-
//
|
|
577
|
-
// For now, we just hackily fail silently if someone tries to clear a timeout
|
|
578
|
-
// key before we've allocated it.
|
|
579
|
-
// Ideally, we should throw an exception if we see this happening.
|
|
580
|
-
if (this.isTimeoutSet(timeoutKey)) {
|
|
581
|
-
this.deletedKeys_[timeoutKey] = true;
|
|
582
|
-
}
|
|
583
|
-
};
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
/**
|
|
587
|
-
* Clears an interval.
|
|
588
|
-
* Mock implementation for clearInterval.
|
|
589
|
-
* @param {number} timeoutKey The interval key to clear.
|
|
590
|
-
* @private
|
|
591
|
-
*/
|
|
592
|
-
goog.testing.MockClock.prototype.clearInterval_ = function(timeoutKey) {
|
|
593
|
-
this.clearTimeout_(timeoutKey);
|
|
594
|
-
};
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
/**
|
|
598
|
-
* Clears a requestAnimationFrame.
|
|
599
|
-
* Mock implementation for cancelRequestAnimationFrame.
|
|
600
|
-
* @param {number} timeoutKey The requestAnimationFrame key to clear.
|
|
601
|
-
* @private
|
|
602
|
-
*/
|
|
603
|
-
goog.testing.MockClock.prototype.cancelRequestAnimationFrame_ =
|
|
604
|
-
function(timeoutKey) {
|
|
605
|
-
this.clearTimeout_(timeoutKey);
|
|
606
|
-
};
|