tizen beta release
[profile/ivi/webkit-efl.git] / LayoutTests / fast / dom / Document / readystate.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3 <head>
4 <script src="../../js/resources/js-test-pre.js"></script>
5 </head>
6 <body onload="allDone()">
7 Tests that the document's readyState is set properly at various phases during load.
8 <div id="console"></div>
9 <script defer src="data:text/javascript,shouldBeEqualToString('document.readyState', 'interactive');shouldBeTrue('readyStateChangeFired');"></script>
10 <script src="data:text/javascript,shouldBeEqualToString('document.readyState', 'loading');"></script>
11 <iframe src="does-not-exist.html"></iframe>
12 <script>
13   var jsTestIsAsync = true;
14
15   shouldBe("document.onreadystatechange", "null");
16   shouldBeEqualToString("document.readyState", "loading");
17
18   document.addEventListener("DOMContentLoaded", function() {
19     shouldBeEqualToString("document.readyState", "interactive");
20
21     var el = document.createElement('script');
22     el.src = "data:text/javascript,shouldBeEqualToString('document.readyState', 'interactive');";
23     document.getElementsByTagName('head')[0].appendChild(el);
24   }, false);
25
26   var expectedStates = ["interactive", "complete"];
27   var nextExpectedState = 0;
28   var readyStateChangeFired = false;
29   document.onreadystatechange = function(event) {
30     shouldBe("event.target.readyState", "expectedStates[nextExpectedState]");
31     ++nextExpectedState;
32     readyStateChangeFired = true;
33   }
34
35   function readyStateShouldNotChange(event) {
36     testFailed("should not have been notified of subdocument state change to " + event.target.readyState);
37   }
38
39   var subdocument = document.getElementsByTagName('iframe')[0].contentDocument;
40   subdocument.onreadystatechange = readyStateShouldNotChange;
41   subdocument.open();
42   shouldBeEqualToString("subdocument.readyState", "loading");
43   subdocument.close();
44   shouldBeEqualToString("subdocument.readyState", "complete");
45
46   var htmlDocument = document.implementation.createHTMLDocument();
47   shouldBeEqualToString("htmlDocument.readyState", "loading");
48
49   var expectedDynamicStates = ["interactive", "complete"];
50   var nextExpectedDynamicState = 0;
51   var dynamicIframe = document.createElement('iframe');
52   dynamicIframe.setAttribute("src", "about:blank");
53   dynamicIframe.setAttribute("onload", "parent.dynamicIframeLoaded()");
54   subdocument.body.appendChild(dynamicIframe);
55   function dynamicIframeLoaded() {
56     shouldBeEqualToString("dynamicIframe.contentDocument.readyState", "complete");
57     dynamicIframe.contentDocument.onreadystatechange = readyStateShouldNotChange;
58     dynamicIframe.contentDocument.open();
59     shouldBe("dynamicIframe.contentDocument.onreadystatechange", "null");
60     shouldBeEqualToString("dynamicIframe.contentDocument.readyState", "loading");
61     dynamicIframe.contentDocument.onreadystatechange = function() {
62       shouldBe("dynamicIframe.contentDocument.readyState", "expectedDynamicStates[nextExpectedDynamicState]");
63       ++nextExpectedDynamicState;
64     }
65     dynamicIframe.contentDocument.close();
66     shouldBeEqualToString("dynamicIframe.contentDocument.readyState", "complete");
67
68     dynamicIframe.contentDocument.onreadystatechange = readyStateShouldNotChange;
69     subdocument.open();
70     subdocument.close();
71   }
72
73   function allDone() {
74     shouldBe("nextExpectedState", "expectedStates.length");
75     shouldBe("nextExpectedDynamicState", "expectedDynamicStates.length");
76     shouldBeEqualToString("document.readyState", "complete");
77     finishJSTest();
78   }
79 </script>
80 <script src="../../js/resources/js-test-post.js"></script>
81 </body>
82 </html>