Index: chrome/test/chromedriver/js/execute_async_script_test.html |
diff --git a/chrome/test/chromedriver/js/execute_async_script_test.html b/chrome/test/chromedriver/js/execute_async_script_test.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2a0727086d3d80b81e28ad4c17413dc91451cc98 |
--- /dev/null |
+++ b/chrome/test/chromedriver/js/execute_async_script_test.html |
@@ -0,0 +1,51 @@ |
+<!DOCTYPE HTML> |
+<html> |
+<script src='test.js'></script> |
+<script src='execute_async_script.js'></script> |
+<script> |
+ |
+var idName = 'chromedriverAsyncScriptId'; |
+var finishFlagName = 'chromedriverAsyncScriptFinsished'; |
+var resultName = 'chromedriverAsyncScriptResult'; |
+ |
+function resetResult() { |
+ document[idName] = null; |
+ document[finishFlagName] = null; |
+ document[resultName] = null; |
+} |
+ |
+function testExecuteAsyncScript() { |
+ resetResult(); |
+ var injectedArgs = null; |
+ function setArguments(args) { |
+ injectedArgs = args; |
+ } |
+ var script = |
+ 'var args = arguments; args[0](args); args[args.length - 1](args[1]);'; |
+ var script_args = [setArguments, 1]; |
+ executeAsyncScript(script, script_args); |
+ assertEquals(3, injectedArgs.length); |
+ assertEquals(setArguments, injectedArgs[0]); |
+ assertEquals(1, injectedArgs[1]); |
+ assert(document[finishFlagName]); |
+ assert(1, document[resultName]); |
+ assert(1, document[idName]); |
+} |
+ |
+function testFirstScriptFinishAfterSecondScript() { |
+ resetResult(); |
+ executeAsyncScript( |
+ 'var fn = arguments[0]; setTimeout(function(){ fn(1); }, 100000);', []); |
+ assert(!document[finishFlagName]); |
+ assertEquals(null, document[resultName]); |
+ assertEquals(1, document[idName]); |
+ executeAsyncScript('var fn = arguments[0]; fn(2);', []); |
+ assert(document[finishFlagName]); |
+ assertEquals(2, document[resultName]); |
+ assertEquals(2, document[idName]); |
+} |
+ |
+</script> |
+<body> |
+</body> |
+</html> |