Module: wine Branch: master Commit: 0d0110970ec1a7fbc176d3bbe9e0e5dd1d870157 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0d0110970ec1a7fbc176d3bbe9...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Dec 24 13:10:33 2014 +0100
mshtml/tests: Added script element readyState and onreadystatechange tests.
---
dlls/mshtml/tests/events.html | 76 ++++++++++++++++++++++++++++++++++++++++-- dlls/mshtml/tests/externscr.js | 2 ++ 2 files changed, 76 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/tests/events.html b/dlls/mshtml/tests/events.html index d4e2644..ae83ebe 100644 --- a/dlls/mshtml/tests/events.html +++ b/dlls/mshtml/tests/events.html @@ -7,6 +7,10 @@ function ok(b,m) { return external.ok(b, m); }
+function broken(expr) { + return external.broken(expr); +} + function ondataavailable_test() { var evobj, div, b = false;
@@ -114,8 +118,35 @@ function test_handler_this() { ok(calls == "div2,div2*,div1,div1*,body,body*", "calls = " + calls); }
+function test_insert_script() { + var e = document.createElement("script"); + + extern_cnt = 0; + e.src = "externscr.js"; + + var readystatechange_log = ""; + e.onreadystatechange = function() { + readystatechange_log += "," + e.readyState; + ok(extern_cnt === 1, "extern_cnt = " + extern_cnt); + if(e.readyState === "complete") { + ok(readystatechange_log === "append,complete", "readystatechange_log = " + readystatechange_log); + external.reportSuccess(); + } + } + + document.body.appendChild(e); + ok(extern_cnt === 1, "extern_cnt = " + extern_cnt); + readystatechange_log = "append"; +} + window.onload = function() { try { + ok(inlscr_complete_called, "onreadystatechange not fired"); + ok(extern_res_script_rs === "eval,complete1,", + "extern_res_script_rs = " + extern_res_script_rs + " expected eval,complete1,"); + ok(extern_http_script_rs === "loading,loaded,complete,", + "extern_http_script_rs = " + extern_http_script_rs + " expected loading,loaded,complete,"); + ok(cnt == 1, "cnt=" + cnt + " exception during loading?"); ok(this === window, "this !== window");
@@ -127,11 +158,10 @@ window.onload = function() { test_scriptfor(); ondataavailable_test(); test_handler_this(); + test_insert_script(); }catch(e) { ok(false, "Got an exception: " + e.message); } - - external.reportSuccess(); } </script> <script> @@ -165,6 +195,48 @@ img.onload = function() { })(); </script> <script> +var inlscr_complete_called = false, extern_res_script_rs = "", extern_http_script_rs = ""; +var extern_cnt = 0; + +function expect_inlscr_complete() { + var elem = document.getElementById("inlscr"); + ok(elem.readyState === "complete" || broken(elem.readyState === "loading"), "expect_inlscr_complete: elem.readyState = " + elem.readyState); + if(elem.readyState === "complete") + inlscr_complete_called = true; +} + +function extern_res_script_readystatechange() { + var elem = document.getElementById("extscr"); + if(elem.readyState != "loading") + extern_res_script_rs += elem.readyState + extern_cnt + ","; + else + external.trace("Got loading readyState from external res script."); +} + +function http_script_readystatechange() { + var elem = document.getElementById("httpscr"); + extern_http_script_rs += elem.readyState + ","; +} + +function on_externscr() { + var elem = document.getElementById("extscr"); + ok(elem.readyState === "interactive" || broken(elem.readyState === "loading"), + "on_externscr: elem.readyState = " + elem.readyState); + extern_res_script_rs += "eval,"; +} + +</script> +<script id="inlscr" onreadystatechange="expect_inlscr_complete();"> +(function() { + ok(inlscr_complete_called === false || broken(inlscr_complete_called), "onreadystatechange fired too early"); + + var elem = document.getElementById("inlscr"); + ok(elem.readyState === "interactive", "inlscr: elem.readyState = " + elem.readyState); +})(); +</script> +<script id="extscr" onreadystatechange="extern_res_script_readystatechange()" src="externscr.js"></script> +<script id="httpscr" onreadystatechange="http_script_readystatechange()" src="https://test.winehq.org/tests/empty.js?123456"></script> +<script> document.body.appendChild(img); </script> </body> diff --git a/dlls/mshtml/tests/externscr.js b/dlls/mshtml/tests/externscr.js index 5861363..f6649ce 100644 --- a/dlls/mshtml/tests/externscr.js +++ b/dlls/mshtml/tests/externscr.js @@ -1 +1,3 @@ extern_cnt++; +if("on_externscr" in window) + on_externscr();