selenium-webdriver 2.48.2 → 2.52.0

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