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.
Files changed (534) hide show
  1. package/CHANGES.md +116 -0
  2. package/NOTICE +1 -1
  3. package/README.md +59 -9
  4. package/builder.js +375 -358
  5. package/chrome.js +549 -586
  6. package/edge.js +378 -0
  7. package/error.js +9 -6
  8. package/example/google_search.js +1 -1
  9. package/example/google_search_generator.js +2 -4
  10. package/example/logging.js +6 -2
  11. package/example/sample.js +21 -0
  12. package/executors.js +11 -27
  13. package/firefox/binary.js +149 -98
  14. package/firefox/extension.js +15 -19
  15. package/firefox/index.js +256 -163
  16. package/firefox/profile.js +223 -243
  17. package/http/index.js +487 -81
  18. package/http/util.js +40 -36
  19. package/ie.js +288 -309
  20. package/index.js +34 -125
  21. package/io/exec.js +58 -39
  22. package/io/index.js +72 -60
  23. package/lib/README +4 -0
  24. package/lib/actions.js +596 -0
  25. package/lib/by.js +277 -0
  26. package/lib/capabilities.js +450 -0
  27. package/lib/{webdriver/command.js → command.js} +91 -72
  28. package/lib/{webdriver/button.js → devmode.js} +13 -8
  29. package/lib/error.js +690 -0
  30. package/lib/events.js +212 -0
  31. package/lib/firefox/amd64/libnoblur64.so +0 -0
  32. package/lib/firefox/i386/libnoblur.so +0 -0
  33. package/lib/firefox/webdriver.json +5 -1
  34. package/lib/firefox/webdriver.xpi +0 -0
  35. package/lib/{webdriver/key.js → input.js} +84 -2
  36. package/lib/logging.js +670 -0
  37. package/lib/{webdriver/promise.js → promise.js} +817 -644
  38. package/lib/safari/client.js +266 -214
  39. package/lib/session.js +80 -0
  40. package/lib/{webdriver/serializable.js → symbols.js} +16 -19
  41. package/lib/test/build.js +4 -4
  42. package/lib/test/data/click_tests/html5_submit_buttons.html +2 -1
  43. package/lib/test/data/click_tests/overlapping_elements.html +15 -4
  44. package/lib/test/data/click_tests/partially_overlapping_elements.html +124 -0
  45. package/lib/test/data/click_tests/wrapped_overlapping_elements.html +13 -0
  46. package/lib/test/data/hidden_partially.html +45 -0
  47. package/lib/test/data/readOnlyPage.html +1 -1
  48. package/lib/test/data/selectPage.html +18 -2
  49. package/lib/test/fileserver.js +3 -4
  50. package/lib/test/index.js +7 -3
  51. package/lib/test/resources.js +1 -1
  52. package/lib/until.js +376 -0
  53. package/lib/webdriver.js +2440 -0
  54. package/net/index.js +4 -0
  55. package/net/portprober.js +16 -12
  56. package/opera.js +295 -314
  57. package/package.json +6 -5
  58. package/phantomjs.js +144 -147
  59. package/proxy.js +10 -6
  60. package/remote/index.js +289 -238
  61. package/safari.js +326 -311
  62. package/test/chrome/options_test.js +11 -9
  63. package/test/element_finding_test.js +51 -13
  64. package/test/execute_script_test.js +17 -3
  65. package/test/firefox/firefox_test.js +0 -32
  66. package/test/http/http_test.js +671 -61
  67. package/test/http/util_test.js +25 -23
  68. package/test/io_test.js +67 -1
  69. package/test/lib/by_test.js +139 -0
  70. package/test/lib/capabilities_test.js +111 -0
  71. package/test/lib/error_test.js +325 -0
  72. package/test/lib/events_test.js +177 -0
  73. package/test/lib/logging_test.js +272 -0
  74. package/test/{promise_aplus_test.js → lib/promise_aplus_test.js} +4 -13
  75. package/test/lib/promise_error_test.js +808 -0
  76. package/test/lib/promise_flow_test.js +2282 -0
  77. package/test/lib/promise_generator_test.js +308 -0
  78. package/test/lib/promise_test.js +996 -0
  79. package/test/lib/testutil.js +90 -0
  80. package/test/lib/until_test.js +400 -0
  81. package/test/lib/webdriver_test.js +2157 -0
  82. package/test/page_loading_test.js +7 -9
  83. package/test/remote_test.js +50 -3
  84. package/test/session_test.js +53 -0
  85. package/test/stale_element_test.js +2 -2
  86. package/test/testing/assert_test.js +374 -0
  87. package/test/testing/index_test.js +9 -11
  88. package/testing/assert.js +334 -17
  89. package/testing/index.js +12 -2
  90. package/_base.js +0 -200
  91. package/docs/Changes.html +0 -356
  92. package/docs/class_bot_Error.html +0 -15
  93. package/docs/class_webdriver_ActionSequence.html +0 -115
  94. package/docs/class_webdriver_Alert.html +0 -24
  95. package/docs/class_webdriver_AlertPromise.html +0 -92
  96. package/docs/class_webdriver_Capabilities.html +0 -60
  97. package/docs/class_webdriver_Command.html +0 -15
  98. package/docs/class_webdriver_EventEmitter.html +0 -35
  99. package/docs/class_webdriver_FileDetector.html +0 -21
  100. package/docs/class_webdriver_Locator.html +0 -12
  101. package/docs/class_webdriver_Serializable.html +0 -9
  102. package/docs/class_webdriver_Session.html +0 -13
  103. package/docs/class_webdriver_TouchSequence.html +0 -49
  104. package/docs/class_webdriver_UnhandledAlertError.html +0 -18
  105. package/docs/class_webdriver_WebDriver.html +0 -313
  106. package/docs/class_webdriver_WebDriver_Logs.html +0 -15
  107. package/docs/class_webdriver_WebDriver_Navigation.html +0 -16
  108. package/docs/class_webdriver_WebDriver_Options.html +0 -41
  109. package/docs/class_webdriver_WebDriver_TargetLocator.html +0 -38
  110. package/docs/class_webdriver_WebDriver_Timeouts.html +0 -29
  111. package/docs/class_webdriver_WebDriver_Window.html +0 -27
  112. package/docs/class_webdriver_WebElement.html +0 -223
  113. package/docs/class_webdriver_WebElementPromise.html +0 -274
  114. package/docs/class_webdriver_http_Executor.html +0 -22
  115. package/docs/class_webdriver_http_Request.html +0 -12
  116. package/docs/class_webdriver_http_Response.html +0 -13
  117. package/docs/class_webdriver_logging_Entry.html +0 -15
  118. package/docs/class_webdriver_logging_Level.html +0 -55
  119. package/docs/class_webdriver_logging_LogRecord.html +0 -45
  120. package/docs/class_webdriver_logging_Logger.html +0 -119
  121. package/docs/class_webdriver_logging_Preferences.html +0 -8
  122. package/docs/class_webdriver_promise_CancellationError.html +0 -17
  123. package/docs/class_webdriver_promise_ControlFlow.html +0 -153
  124. package/docs/class_webdriver_promise_Deferred.html +0 -84
  125. package/docs/class_webdriver_promise_MultipleUnhandledRejectionError.html +0 -14
  126. package/docs/class_webdriver_promise_Promise.html +0 -75
  127. package/docs/class_webdriver_stacktrace_Frame.html +0 -20
  128. package/docs/class_webdriver_stacktrace_Snapshot.html +0 -6
  129. package/docs/class_webdriver_testing_Assertion.html +0 -99
  130. package/docs/class_webdriver_testing_Assertion_DelegatingMatcher_.html +0 -13
  131. package/docs/class_webdriver_testing_ContainsMatcher.html +0 -11
  132. package/docs/class_webdriver_testing_NegatedAssertion.html +0 -97
  133. package/docs/class_webdriver_until_Condition.html +0 -7
  134. package/docs/dossier.css +0 -1
  135. package/docs/dossier.js +0 -86
  136. package/docs/enum_bot_ErrorCode.html +0 -3
  137. package/docs/enum_bot_Error_State.html +0 -2
  138. package/docs/enum_webdriver_Browser.html +0 -2
  139. package/docs/enum_webdriver_Button.html +0 -2
  140. package/docs/enum_webdriver_Capability.html +0 -33
  141. package/docs/enum_webdriver_CommandName.html +0 -3
  142. package/docs/enum_webdriver_Key.html +0 -12
  143. package/docs/enum_webdriver_logging_Type.html +0 -6
  144. package/docs/enum_webdriver_promise_ControlFlow_EventType.html +0 -9
  145. package/docs/index.html +0 -125
  146. package/docs/interface_webdriver_CommandExecutor.html +0 -9
  147. package/docs/interface_webdriver_http_Client.html +0 -10
  148. package/docs/interface_webdriver_promise_Thenable.html +0 -77
  149. package/docs/module_selenium-webdriver.html +0 -23
  150. package/docs/module_selenium-webdriver__base.html +0 -23
  151. package/docs/module_selenium-webdriver__base_class_Context.html +0 -5
  152. package/docs/module_selenium-webdriver_builder.html +0 -2
  153. package/docs/module_selenium-webdriver_builder_class_Builder.html +0 -138
  154. package/docs/module_selenium-webdriver_chrome.html +0 -90
  155. package/docs/module_selenium-webdriver_chrome_class_Driver.html +0 -280
  156. package/docs/module_selenium-webdriver_chrome_class_Options.html +0 -127
  157. package/docs/module_selenium-webdriver_chrome_class_ServiceBuilder.html +0 -46
  158. package/docs/module_selenium-webdriver_class_ActionSequence.html +0 -115
  159. package/docs/module_selenium-webdriver_class_Builder.html +0 -138
  160. package/docs/module_selenium-webdriver_class_Capabilities.html +0 -60
  161. package/docs/module_selenium-webdriver_class_Command.html +0 -15
  162. package/docs/module_selenium-webdriver_class_EventEmitter.html +0 -35
  163. package/docs/module_selenium-webdriver_class_FileDetector.html +0 -21
  164. package/docs/module_selenium-webdriver_class_Serializable.html +0 -9
  165. package/docs/module_selenium-webdriver_class_Session.html +0 -13
  166. package/docs/module_selenium-webdriver_class_WebDriver.html +0 -313
  167. package/docs/module_selenium-webdriver_class_WebElement.html +0 -223
  168. package/docs/module_selenium-webdriver_class_WebElementPromise.html +0 -274
  169. package/docs/module_selenium-webdriver_enum_Browser.html +0 -2
  170. package/docs/module_selenium-webdriver_enum_Button.html +0 -2
  171. package/docs/module_selenium-webdriver_enum_Capability.html +0 -33
  172. package/docs/module_selenium-webdriver_enum_CommandName.html +0 -3
  173. package/docs/module_selenium-webdriver_enum_Key.html +0 -12
  174. package/docs/module_selenium-webdriver_error.html +0 -4
  175. package/docs/module_selenium-webdriver_error_class_Error.html +0 -15
  176. package/docs/module_selenium-webdriver_error_enum_ErrorCode.html +0 -3
  177. package/docs/module_selenium-webdriver_executors.html +0 -10
  178. package/docs/module_selenium-webdriver_executors_class_DeferredExecutor.html +0 -12
  179. package/docs/module_selenium-webdriver_firefox.html +0 -68
  180. package/docs/module_selenium-webdriver_firefox_binary.html +0 -5
  181. package/docs/module_selenium-webdriver_firefox_binary_class_Binary.html +0 -20
  182. package/docs/module_selenium-webdriver_firefox_class_Binary.html +0 -20
  183. package/docs/module_selenium-webdriver_firefox_class_Driver.html +0 -276
  184. package/docs/module_selenium-webdriver_firefox_class_Options.html +0 -19
  185. package/docs/module_selenium-webdriver_firefox_class_Profile.html +0 -50
  186. package/docs/module_selenium-webdriver_firefox_extension.html +0 -8
  187. package/docs/module_selenium-webdriver_firefox_profile.html +0 -13
  188. package/docs/module_selenium-webdriver_firefox_profile_class_Profile.html +0 -50
  189. package/docs/module_selenium-webdriver_http.html +0 -9
  190. package/docs/module_selenium-webdriver_http_class_Executor.html +0 -22
  191. package/docs/module_selenium-webdriver_http_class_HttpClient.html +0 -16
  192. package/docs/module_selenium-webdriver_http_class_Request.html +0 -12
  193. package/docs/module_selenium-webdriver_http_class_Response.html +0 -13
  194. package/docs/module_selenium-webdriver_http_util.html +0 -17
  195. package/docs/module_selenium-webdriver_ie.html +0 -11
  196. package/docs/module_selenium-webdriver_ie_class_Driver.html +0 -274
  197. package/docs/module_selenium-webdriver_ie_class_Options.html +0 -89
  198. package/docs/module_selenium-webdriver_ie_enum_Level.html +0 -1
  199. package/docs/module_selenium-webdriver_io.html +0 -37
  200. package/docs/module_selenium-webdriver_io_exec.html +0 -6
  201. package/docs/module_selenium-webdriver_namespace_By.html +0 -56
  202. package/docs/module_selenium-webdriver_namespace_error.html +0 -4
  203. package/docs/module_selenium-webdriver_namespace_logging.html +0 -18
  204. package/docs/module_selenium-webdriver_namespace_promise.html +0 -163
  205. package/docs/module_selenium-webdriver_namespace_stacktrace.html +0 -17
  206. package/docs/module_selenium-webdriver_namespace_until.html +0 -82
  207. package/docs/module_selenium-webdriver_net.html +0 -7
  208. package/docs/module_selenium-webdriver_net_portprober.html +0 -12
  209. package/docs/module_selenium-webdriver_opera.html +0 -62
  210. package/docs/module_selenium-webdriver_opera_class_Driver.html +0 -276
  211. package/docs/module_selenium-webdriver_opera_class_Options.html +0 -44
  212. package/docs/module_selenium-webdriver_opera_class_ServiceBuilder.html +0 -35
  213. package/docs/module_selenium-webdriver_phantomjs.html +0 -2
  214. package/docs/module_selenium-webdriver_phantomjs_class_Driver.html +0 -299
  215. package/docs/module_selenium-webdriver_proxy.html +0 -28
  216. package/docs/module_selenium-webdriver_remote.html +0 -8
  217. package/docs/module_selenium-webdriver_remote_class_DriverService.html +0 -32
  218. package/docs/module_selenium-webdriver_remote_class_FileDetector.html +0 -22
  219. package/docs/module_selenium-webdriver_remote_class_SeleniumServer.html +0 -41
  220. package/docs/module_selenium-webdriver_safari.html +0 -9
  221. package/docs/module_selenium-webdriver_safari_class_Driver.html +0 -279
  222. package/docs/module_selenium-webdriver_safari_class_Options.html +0 -23
  223. package/docs/module_selenium-webdriver_testing.html +0 -74
  224. package/docs/module_selenium-webdriver_testing_assert.html +0 -9
  225. package/docs/namespace_bot.html +0 -4
  226. package/docs/namespace_bot_json.html +0 -20
  227. package/docs/namespace_bot_response.html +0 -18
  228. package/docs/namespace_bot_userAgent.html +0 -33
  229. package/docs/namespace_webdriver.html +0 -30
  230. package/docs/namespace_webdriver_By.html +0 -56
  231. package/docs/namespace_webdriver_http.html +0 -6
  232. package/docs/namespace_webdriver_logging.html +0 -70
  233. package/docs/namespace_webdriver_promise.html +0 -688
  234. package/docs/namespace_webdriver_stacktrace.html +0 -17
  235. package/docs/namespace_webdriver_testing.html +0 -7
  236. package/docs/namespace_webdriver_testing_assert.html +0 -9
  237. package/docs/namespace_webdriver_testing_asserts.html +0 -18
  238. package/docs/namespace_webdriver_until.html +0 -82
  239. package/docs/source/_base.js.src.html +0 -1
  240. package/docs/source/builder.js.src.html +0 -1
  241. package/docs/source/chrome.js.src.html +0 -1
  242. package/docs/source/error.js.src.html +0 -1
  243. package/docs/source/executors.js.src.html +0 -1
  244. package/docs/source/firefox/binary.js.src.html +0 -1
  245. package/docs/source/firefox/extension.js.src.html +0 -1
  246. package/docs/source/firefox/index.js.src.html +0 -1
  247. package/docs/source/firefox/profile.js.src.html +0 -1
  248. package/docs/source/http/index.js.src.html +0 -1
  249. package/docs/source/http/util.js.src.html +0 -1
  250. package/docs/source/ie.js.src.html +0 -1
  251. package/docs/source/index.js.src.html +0 -1
  252. package/docs/source/io/exec.js.src.html +0 -1
  253. package/docs/source/io/index.js.src.html +0 -1
  254. package/docs/source/lib/atoms/error.js.src.html +0 -1
  255. package/docs/source/lib/atoms/json.js.src.html +0 -1
  256. package/docs/source/lib/atoms/response.js.src.html +0 -1
  257. package/docs/source/lib/atoms/userAgent.js.src.html +0 -1
  258. package/docs/source/lib/goog/array/array.js.src.html +0 -1
  259. package/docs/source/lib/goog/asserts/asserts.js.src.html +0 -1
  260. package/docs/source/lib/goog/async/freelist.js.src.html +0 -1
  261. package/docs/source/lib/goog/async/nexttick.js.src.html +0 -1
  262. package/docs/source/lib/goog/async/run.js.src.html +0 -1
  263. package/docs/source/lib/goog/async/workqueue.js.src.html +0 -1
  264. package/docs/source/lib/goog/base.js.src.html +0 -1
  265. package/docs/source/lib/goog/debug/debug.js.src.html +0 -1
  266. package/docs/source/lib/goog/debug/entrypointregistry.js.src.html +0 -1
  267. package/docs/source/lib/goog/debug/error.js.src.html +0 -1
  268. package/docs/source/lib/goog/debug/logbuffer.js.src.html +0 -1
  269. package/docs/source/lib/goog/debug/logger.js.src.html +0 -1
  270. package/docs/source/lib/goog/debug/logrecord.js.src.html +0 -1
  271. package/docs/source/lib/goog/deps.js.src.html +0 -1
  272. package/docs/source/lib/goog/disposable/disposable.js.src.html +0 -1
  273. package/docs/source/lib/goog/disposable/idisposable.js.src.html +0 -1
  274. package/docs/source/lib/goog/dom/browserfeature.js.src.html +0 -1
  275. package/docs/source/lib/goog/dom/dom.js.src.html +0 -1
  276. package/docs/source/lib/goog/dom/nodetype.js.src.html +0 -1
  277. package/docs/source/lib/goog/dom/safe.js.src.html +0 -1
  278. package/docs/source/lib/goog/dom/tagname.js.src.html +0 -1
  279. package/docs/source/lib/goog/dom/tags.js.src.html +0 -1
  280. package/docs/source/lib/goog/dom/vendor.js.src.html +0 -1
  281. package/docs/source/lib/goog/events/browserevent.js.src.html +0 -1
  282. package/docs/source/lib/goog/events/browserfeature.js.src.html +0 -1
  283. package/docs/source/lib/goog/events/event.js.src.html +0 -1
  284. package/docs/source/lib/goog/events/eventid.js.src.html +0 -1
  285. package/docs/source/lib/goog/events/events.js.src.html +0 -1
  286. package/docs/source/lib/goog/events/eventtarget.js.src.html +0 -1
  287. package/docs/source/lib/goog/events/eventtype.js.src.html +0 -1
  288. package/docs/source/lib/goog/events/keycodes.js.src.html +0 -1
  289. package/docs/source/lib/goog/events/listenable.js.src.html +0 -1
  290. package/docs/source/lib/goog/events/listener.js.src.html +0 -1
  291. package/docs/source/lib/goog/events/listenermap.js.src.html +0 -1
  292. package/docs/source/lib/goog/fs/url.js.src.html +0 -1
  293. package/docs/source/lib/goog/functions/functions.js.src.html +0 -1
  294. package/docs/source/lib/goog/html/safehtml.js.src.html +0 -1
  295. package/docs/source/lib/goog/html/safescript.js.src.html +0 -1
  296. package/docs/source/lib/goog/html/safestyle.js.src.html +0 -1
  297. package/docs/source/lib/goog/html/safestylesheet.js.src.html +0 -1
  298. package/docs/source/lib/goog/html/safeurl.js.src.html +0 -1
  299. package/docs/source/lib/goog/html/trustedresourceurl.js.src.html +0 -1
  300. package/docs/source/lib/goog/html/uncheckedconversions.js.src.html +0 -1
  301. package/docs/source/lib/goog/i18n/bidi.js.src.html +0 -1
  302. package/docs/source/lib/goog/iter/iter.js.src.html +0 -1
  303. package/docs/source/lib/goog/json/json.js.src.html +0 -1
  304. package/docs/source/lib/goog/labs/testing/assertthat.js.src.html +0 -1
  305. package/docs/source/lib/goog/labs/testing/logicmatcher.js.src.html +0 -1
  306. package/docs/source/lib/goog/labs/testing/matcher.js.src.html +0 -1
  307. package/docs/source/lib/goog/labs/testing/numbermatcher.js.src.html +0 -1
  308. package/docs/source/lib/goog/labs/testing/objectmatcher.js.src.html +0 -1
  309. package/docs/source/lib/goog/labs/testing/stringmatcher.js.src.html +0 -1
  310. package/docs/source/lib/goog/labs/useragent/browser.js.src.html +0 -1
  311. package/docs/source/lib/goog/labs/useragent/engine.js.src.html +0 -1
  312. package/docs/source/lib/goog/labs/useragent/platform.js.src.html +0 -1
  313. package/docs/source/lib/goog/labs/useragent/util.js.src.html +0 -1
  314. package/docs/source/lib/goog/log/log.js.src.html +0 -1
  315. package/docs/source/lib/goog/math/box.js.src.html +0 -1
  316. package/docs/source/lib/goog/math/coordinate.js.src.html +0 -1
  317. package/docs/source/lib/goog/math/math.js.src.html +0 -1
  318. package/docs/source/lib/goog/math/rect.js.src.html +0 -1
  319. package/docs/source/lib/goog/math/size.js.src.html +0 -1
  320. package/docs/source/lib/goog/net/wrapperxmlhttpfactory.js.src.html +0 -1
  321. package/docs/source/lib/goog/net/xhrlike.js.src.html +0 -1
  322. package/docs/source/lib/goog/net/xmlhttp.js.src.html +0 -1
  323. package/docs/source/lib/goog/net/xmlhttpfactory.js.src.html +0 -1
  324. package/docs/source/lib/goog/object/object.js.src.html +0 -1
  325. package/docs/source/lib/goog/promise/promise.js.src.html +0 -1
  326. package/docs/source/lib/goog/promise/resolver.js.src.html +0 -1
  327. package/docs/source/lib/goog/promise/thenable.js.src.html +0 -1
  328. package/docs/source/lib/goog/reflect/reflect.js.src.html +0 -1
  329. package/docs/source/lib/goog/string/const.js.src.html +0 -1
  330. package/docs/source/lib/goog/string/string.js.src.html +0 -1
  331. package/docs/source/lib/goog/string/typedstring.js.src.html +0 -1
  332. package/docs/source/lib/goog/structs/collection.js.src.html +0 -1
  333. package/docs/source/lib/goog/structs/map.js.src.html +0 -1
  334. package/docs/source/lib/goog/structs/set.js.src.html +0 -1
  335. package/docs/source/lib/goog/structs/structs.js.src.html +0 -1
  336. package/docs/source/lib/goog/style/style.js.src.html +0 -1
  337. package/docs/source/lib/goog/testing/asserts.js.src.html +0 -1
  338. package/docs/source/lib/goog/testing/events/events.js.src.html +0 -1
  339. package/docs/source/lib/goog/testing/functionmock.js.src.html +0 -1
  340. package/docs/source/lib/goog/testing/jsunit.js.src.html +0 -1
  341. package/docs/source/lib/goog/testing/loosemock.js.src.html +0 -1
  342. package/docs/source/lib/goog/testing/mock.js.src.html +0 -1
  343. package/docs/source/lib/goog/testing/mockclock.js.src.html +0 -1
  344. package/docs/source/lib/goog/testing/mockcontrol.js.src.html +0 -1
  345. package/docs/source/lib/goog/testing/mockinterface.js.src.html +0 -1
  346. package/docs/source/lib/goog/testing/mockmatchers.js.src.html +0 -1
  347. package/docs/source/lib/goog/testing/objectpropertystring.js.src.html +0 -1
  348. package/docs/source/lib/goog/testing/propertyreplacer.js.src.html +0 -1
  349. package/docs/source/lib/goog/testing/recordfunction.js.src.html +0 -1
  350. package/docs/source/lib/goog/testing/stacktrace.js.src.html +0 -1
  351. package/docs/source/lib/goog/testing/strictmock.js.src.html +0 -1
  352. package/docs/source/lib/goog/testing/testcase.js.src.html +0 -1
  353. package/docs/source/lib/goog/testing/testrunner.js.src.html +0 -1
  354. package/docs/source/lib/goog/uri/uri.js.src.html +0 -1
  355. package/docs/source/lib/goog/uri/utils.js.src.html +0 -1
  356. package/docs/source/lib/goog/useragent/product.js.src.html +0 -1
  357. package/docs/source/lib/goog/useragent/product_isversion.js.src.html +0 -1
  358. package/docs/source/lib/goog/useragent/useragent.js.src.html +0 -1
  359. package/docs/source/lib/webdriver/actionsequence.js.src.html +0 -1
  360. package/docs/source/lib/webdriver/button.js.src.html +0 -1
  361. package/docs/source/lib/webdriver/capabilities.js.src.html +0 -1
  362. package/docs/source/lib/webdriver/command.js.src.html +0 -1
  363. package/docs/source/lib/webdriver/events.js.src.html +0 -1
  364. package/docs/source/lib/webdriver/http/http.js.src.html +0 -1
  365. package/docs/source/lib/webdriver/key.js.src.html +0 -1
  366. package/docs/source/lib/webdriver/locators.js.src.html +0 -1
  367. package/docs/source/lib/webdriver/logging.js.src.html +0 -1
  368. package/docs/source/lib/webdriver/promise.js.src.html +0 -1
  369. package/docs/source/lib/webdriver/serializable.js.src.html +0 -1
  370. package/docs/source/lib/webdriver/session.js.src.html +0 -1
  371. package/docs/source/lib/webdriver/stacktrace.js.src.html +0 -1
  372. package/docs/source/lib/webdriver/testing/asserts.js.src.html +0 -1
  373. package/docs/source/lib/webdriver/touchsequence.js.src.html +0 -1
  374. package/docs/source/lib/webdriver/until.js.src.html +0 -1
  375. package/docs/source/lib/webdriver/webdriver.js.src.html +0 -1
  376. package/docs/source/net/index.js.src.html +0 -1
  377. package/docs/source/net/portprober.js.src.html +0 -1
  378. package/docs/source/opera.js.src.html +0 -1
  379. package/docs/source/phantomjs.js.src.html +0 -1
  380. package/docs/source/proxy.js.src.html +0 -1
  381. package/docs/source/remote/index.js.src.html +0 -1
  382. package/docs/source/safari.js.src.html +0 -1
  383. package/docs/source/testing/assert.js.src.html +0 -1
  384. package/docs/source/testing/index.js.src.html +0 -1
  385. package/docs/types.js +0 -1
  386. package/lib/atoms/error.js +0 -202
  387. package/lib/atoms/json.js +0 -80
  388. package/lib/atoms/response.js +0 -110
  389. package/lib/atoms/userAgent.js +0 -257
  390. package/lib/goog/LICENSE +0 -176
  391. package/lib/goog/array/array.js +0 -1654
  392. package/lib/goog/asserts/asserts.js +0 -365
  393. package/lib/goog/async/freelist.js +0 -88
  394. package/lib/goog/async/nexttick.js +0 -241
  395. package/lib/goog/async/run.js +0 -133
  396. package/lib/goog/async/workqueue.js +0 -139
  397. package/lib/goog/base.js +0 -2548
  398. package/lib/goog/debug/debug.js +0 -653
  399. package/lib/goog/debug/entrypointregistry.js +0 -158
  400. package/lib/goog/debug/error.js +0 -63
  401. package/lib/goog/debug/logbuffer.js +0 -148
  402. package/lib/goog/debug/logger.js +0 -873
  403. package/lib/goog/debug/logrecord.js +0 -242
  404. package/lib/goog/deps.js +0 -151
  405. package/lib/goog/disposable/disposable.js +0 -307
  406. package/lib/goog/disposable/idisposable.js +0 -45
  407. package/lib/goog/dom/browserfeature.js +0 -72
  408. package/lib/goog/dom/dom.js +0 -2991
  409. package/lib/goog/dom/nodetype.js +0 -48
  410. package/lib/goog/dom/safe.js +0 -347
  411. package/lib/goog/dom/tagname.js +0 -160
  412. package/lib/goog/dom/tags.js +0 -41
  413. package/lib/goog/dom/vendor.js +0 -96
  414. package/lib/goog/events/browserevent.js +0 -400
  415. package/lib/goog/events/browserfeature.js +0 -85
  416. package/lib/goog/events/event.js +0 -143
  417. package/lib/goog/events/eventid.js +0 -47
  418. package/lib/goog/events/events.js +0 -984
  419. package/lib/goog/events/eventtarget.js +0 -394
  420. package/lib/goog/events/eventtype.js +0 -237
  421. package/lib/goog/events/keycodes.js +0 -427
  422. package/lib/goog/events/listenable.js +0 -335
  423. package/lib/goog/events/listener.js +0 -131
  424. package/lib/goog/events/listenermap.js +0 -308
  425. package/lib/goog/fs/url.js +0 -109
  426. package/lib/goog/functions/functions.js +0 -442
  427. package/lib/goog/html/safehtml.js +0 -757
  428. package/lib/goog/html/safescript.js +0 -234
  429. package/lib/goog/html/safestyle.js +0 -442
  430. package/lib/goog/html/safestylesheet.js +0 -276
  431. package/lib/goog/html/safeurl.js +0 -398
  432. package/lib/goog/html/trustedresourceurl.js +0 -224
  433. package/lib/goog/html/uncheckedconversions.js +0 -232
  434. package/lib/goog/i18n/bidi.js +0 -908
  435. package/lib/goog/iter/iter.js +0 -1302
  436. package/lib/goog/json/json.js +0 -363
  437. package/lib/goog/labs/testing/assertthat.js +0 -58
  438. package/lib/goog/labs/testing/logicmatcher.js +0 -212
  439. package/lib/goog/labs/testing/matcher.js +0 -80
  440. package/lib/goog/labs/testing/numbermatcher.js +0 -346
  441. package/lib/goog/labs/testing/objectmatcher.js +0 -317
  442. package/lib/goog/labs/testing/stringmatcher.js +0 -415
  443. package/lib/goog/labs/useragent/browser.js +0 -341
  444. package/lib/goog/labs/useragent/engine.js +0 -160
  445. package/lib/goog/labs/useragent/platform.js +0 -160
  446. package/lib/goog/labs/useragent/util.js +0 -148
  447. package/lib/goog/log/log.js +0 -197
  448. package/lib/goog/math/box.js +0 -398
  449. package/lib/goog/math/coordinate.js +0 -268
  450. package/lib/goog/math/math.js +0 -451
  451. package/lib/goog/math/rect.js +0 -476
  452. package/lib/goog/math/size.js +0 -227
  453. package/lib/goog/net/wrapperxmlhttpfactory.js +0 -71
  454. package/lib/goog/net/xhrlike.js +0 -124
  455. package/lib/goog/net/xmlhttp.js +0 -246
  456. package/lib/goog/net/xmlhttpfactory.js +0 -67
  457. package/lib/goog/object/object.js +0 -686
  458. package/lib/goog/promise/promise.js +0 -1350
  459. package/lib/goog/promise/resolver.js +0 -48
  460. package/lib/goog/promise/thenable.js +0 -126
  461. package/lib/goog/reflect/reflect.js +0 -77
  462. package/lib/goog/string/const.js +0 -182
  463. package/lib/goog/string/string.js +0 -1599
  464. package/lib/goog/string/typedstring.js +0 -48
  465. package/lib/goog/structs/collection.js +0 -56
  466. package/lib/goog/structs/map.js +0 -457
  467. package/lib/goog/structs/set.js +0 -279
  468. package/lib/goog/structs/structs.js +0 -354
  469. package/lib/goog/style/style.js +0 -2037
  470. package/lib/goog/testing/asserts.js +0 -1278
  471. package/lib/goog/testing/events/events.js +0 -767
  472. package/lib/goog/testing/functionmock.js +0 -175
  473. package/lib/goog/testing/jsunit.js +0 -162
  474. package/lib/goog/testing/loosemock.js +0 -242
  475. package/lib/goog/testing/mock.js +0 -645
  476. package/lib/goog/testing/mockclock.js +0 -606
  477. package/lib/goog/testing/mockcontrol.js +0 -220
  478. package/lib/goog/testing/mockinterface.js +0 -45
  479. package/lib/goog/testing/mockmatchers.js +0 -400
  480. package/lib/goog/testing/objectpropertystring.js +0 -68
  481. package/lib/goog/testing/propertyreplacer.js +0 -262
  482. package/lib/goog/testing/recordfunction.js +0 -215
  483. package/lib/goog/testing/stacktrace.js +0 -594
  484. package/lib/goog/testing/strictmock.js +0 -130
  485. package/lib/goog/testing/testcase.js +0 -1629
  486. package/lib/goog/testing/testrunner.js +0 -440
  487. package/lib/goog/uri/uri.js +0 -1524
  488. package/lib/goog/uri/utils.js +0 -1064
  489. package/lib/goog/useragent/product.js +0 -183
  490. package/lib/goog/useragent/product_isversion.js +0 -144
  491. package/lib/goog/useragent/useragent.js +0 -572
  492. package/lib/webdriver/actionsequence.js +0 -356
  493. package/lib/webdriver/builder.js +0 -207
  494. package/lib/webdriver/capabilities.js +0 -412
  495. package/lib/webdriver/events.js +0 -179
  496. package/lib/webdriver/firefoxdomexecutor.js +0 -175
  497. package/lib/webdriver/http/corsclient.js +0 -133
  498. package/lib/webdriver/http/http.js +0 -525
  499. package/lib/webdriver/http/xhrclient.js +0 -67
  500. package/lib/webdriver/locators.js +0 -257
  501. package/lib/webdriver/logging.js +0 -347
  502. package/lib/webdriver/session.js +0 -74
  503. package/lib/webdriver/stacktrace.js +0 -619
  504. package/lib/webdriver/test/builder_test.js +0 -53
  505. package/lib/webdriver/test/capabilities_test.js +0 -72
  506. package/lib/webdriver/test/events_test.js +0 -203
  507. package/lib/webdriver/test/http/corsclient_test.js +0 -151
  508. package/lib/webdriver/test/http/http_test.js +0 -428
  509. package/lib/webdriver/test/http/xhrclient_test.js +0 -196
  510. package/lib/webdriver/test/locators_test.js +0 -59
  511. package/lib/webdriver/test/logging_test.js +0 -85
  512. package/lib/webdriver/test/promise_error_test.js +0 -892
  513. package/lib/webdriver/test/promise_flow_test.js +0 -2365
  514. package/lib/webdriver/test/promise_generator_test.js +0 -323
  515. package/lib/webdriver/test/promise_test.js +0 -2012
  516. package/lib/webdriver/test/stacktrace_test.js +0 -480
  517. package/lib/webdriver/test/test_bootstrap.js +0 -67
  518. package/lib/webdriver/test/testing/asserts_test.js +0 -117
  519. package/lib/webdriver/test/testing/client_test.js +0 -88
  520. package/lib/webdriver/test/testing/testcase_test.js +0 -229
  521. package/lib/webdriver/test/testutil.js +0 -209
  522. package/lib/webdriver/test/testutil_test.js +0 -104
  523. package/lib/webdriver/test/until_test.js +0 -411
  524. package/lib/webdriver/test/webdriver_generator_test.js +0 -92
  525. package/lib/webdriver/test/webdriver_test.js +0 -2369
  526. package/lib/webdriver/testing/asserts.js +0 -487
  527. package/lib/webdriver/testing/client.js +0 -179
  528. package/lib/webdriver/testing/jsunit.js +0 -363
  529. package/lib/webdriver/testing/testcase.js +0 -168
  530. package/lib/webdriver/testing/window.js +0 -244
  531. package/lib/webdriver/touchsequence.js +0 -248
  532. package/lib/webdriver/until.js +0 -412
  533. package/lib/webdriver/webdriver.js +0 -2511
  534. 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
- };