summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/events/page-visibility-iframe-delete-test.html
blob: fd95468db379894619a69941855ceadbf9286456 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<html>
<body onload="startTest()">

<script src="../js/resources/js-test-pre.js"></script>

<script>

description("This test checks that the page visibility event propagation does not crash the browser when frames are added / deleted.");

var jsTestIsAsync = true;

var frame1, frame2, frame3, frame4, frame5, subframe1, subFrame2, subFrame3;

var docsLoaded = 0;

function startTest() {
    ++docsLoaded;
    if (docsLoaded < 8) {
      return;
   }

    debug("Loaded all frames.");

    frame1 = document.getElementById("topFrame1");
    frame2 = document.getElementById("topFrame2");
    frame3 = document.getElementById("topFrame3");
    frame4 = document.getElementById("topFrame4");
    subFrame1 = frame3.contentDocument.getElementById("subIframe1");
    subFrame2 = frame3.contentDocument.getElementById("subIframe2");

    document.addEventListener(
        "webkitvisibilitychange", onMainPageVisibilityChange, false);
    frame2.contentDocument.addEventListener(
        "webkitvisibilitychange", onFrame2VisibilityChange, false);
    // Change the visibility of the current page to invisible.
    if (window.testRunner)
        testRunner.setPageVisibility("hidden");
    finishJSTest();
}

function onMainPageVisibilityChange() {
    debug("Visibility of main document changed.");
    // Delete frame 4.
    document.body.removeChild(frame4);

    // Delete subframe 2.
    frame3.contentDocument.body.removeChild(subFrame2);

    // Add a new frame to top level.
    frame5 = document.createElement("iframe");
    frame5.src = '';
    document.body.appendChild(frame5);

    // Add a new frame to frame2.
    subFrame3 = frame2.contentDocument.createElement("iframe");
    subFrame3.src = '';
    frame2.contentDocument.body.appendChild(subFrame3);
}

function onFrame2VisibilityChange() {
    debug("Visibility of sub frame 2 changed.");
    // Delete frame 1.
    document.body.removeChild(frame1);
}

</script>

<script src="../js/resources/js-test-post.js"></script>

<iframe id="topFrame1" onload="startTest()" ></iframe>
<iframe id="topFrame2" onload="startTest()" ></iframe>
<iframe id="topFrame3" onload="startTest()" src="resources/page-visibility-iframe-delete-test-frame.html"></iframe>
<iframe id="topFrame4" onload="startTest()" ></iframe>
</body>
</html>