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