| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <script src="../js/resources/js-test-pre.js"></script> |
| <script src="resources/helper.js"></script> |
| <style> |
| #article { |
| -webkit-flow-into: article; |
| border: 2px solid black; |
| } |
| #region_1, #region_2{ |
| -webkit-flow-from: no_article; |
| overflow:hidden; |
| display:inline-block; |
| vertical-align:top; |
| margin:10px; |
| } |
| .block { |
| display:block; |
| } |
| #region_1, #region_2 { height:110px; width:200px; border: 1px solid red;} |
| </style> |
| </head> |
| <body> |
| <div id="article"> |
| <div> |
| <div id="content" style="height: 200px; background-color: green;"></div> |
| </div> |
| </div> |
| |
| <div id="region_1"></div> |
| <div id="region_2"></div> |
| |
| <script> |
| |
| description("Tests the the NamedFlow object behavior as an EventTarget"); |
| |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| window.jsTestIsAsync = true; |
| function flowContent(flowName) { |
| var r = document.getElementById("region_1"); |
| r.style.webkitFlowFrom = flowName; |
| r = document.getElementById("region_2"); |
| r.style.webkitFlowFrom = flowName; |
| } |
| |
| function makeFlowNull() { |
| shouldBeNonNull('getFlowByName("article")'); |
| |
| var el = document.getElementById("region_1"); |
| el.style.webkitFlowFrom = "no_article"; |
| el = document.getElementById("region_2"); |
| el.style.webkitFlowFrom = "no_article"; |
| el = document.getElementById("article"); |
| el.style.webkitFlowInto = "no_article"; |
| } |
| |
| var recreated = false; |
| function makeFlowCreated() { |
| shouldBeNull('getFlowByName("article")'); |
| gc(); |
| |
| var el = document.getElementById("region_1"); |
| el.style.webkitFlowFrom = "article"; |
| el = document.getElementById("region_2"); |
| el.style.webkitFlowFrom = "article"; |
| el = document.getElementById("article"); |
| el.style.webkitFlowInto = "article"; |
| |
| recreated = true; |
| } |
| |
| var updatedCount = 0; |
| function finishTest() { |
| shouldBe("updatedCount", "2"); |
| finishJSTest(); |
| } |
| |
| function flowThreadUpdated(event) { |
| ++updatedCount; |
| shouldBeEqualToString("event.target.name", "article"); |
| |
| if (updatedCount == 2) { |
| shouldBeTrue("recreated"); |
| event.target.removeEventListener("webkitregionoversetchange", flowThreadUpdated); |
| makeFlowNull(); |
| setTimeout("finishTest()", 200); |
| return; |
| } |
| |
| makeFlowNull(); |
| shouldBeFalse("recreated"); |
| |
| // Set a timeout so the event reference to the target is discarded |
| setTimeout(makeFlowCreated, 10); |
| } |
| |
| function startTest() { |
| var flowThread = getFlowByName("article"); |
| flowThread.addEventListener("webkitregionoversetchange", flowThreadUpdated); |
| |
| debug("Flow content"); |
| flowContent("article"); |
| } |
| |
| window.addEventListener("load", startTest); |
| </script> |
| <script src="../js/resources/js-test-post.js"></script> |
| </body> |
| </html> |