blob: ae3e768ac3784d5f22084ddc77248cbd95ed075d [file] [log] [blame]
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script>
function createDynamicElements()
{
var frameDoc = window.frames[0].document;
var el = frameDoc.createElement("article");
el.style.webkitFlowInto = "flow4";
frameDoc.body.appendChild(el);
el = frameDoc.createElement("div");
el.style.webkitFlowFrom = "flow4";
frameDoc.body.appendChild(el);
runTest();
}
function createNamedFlow()
{
var article = document.createElement("article");
var div = document.createElement("div");
article.id = "tmpArticle";
article.style["-webkit-flow-into"] = "tmpNamedFlow";
article.textContent = "This text is from CSS Named Flow \"tmpNamedFlow\"";
div.id = "tmpDiv";
div.style["-webkit-flow-from"] = "tmpNamedFlow";
div.style["height"] = "5px";
div.style["width"] = "20px";
document.body.appendChild(article);
document.body.appendChild(div);
}
function removeNamedFlow()
{
document.body.removeChild(document.getElementById("tmpArticle"));
document.body.removeChild(document.getElementById("tmpDiv"));
}
function test()
{
WebInspector.showPanel("elements");
InspectorTest.runTestSuite([
function testGetNamedFlowCollection(next)
{
WebInspector.domAgent.requestDocument(documentCallback);
function documentCallback(document)
{
WebInspector.cssModel.getNamedFlowCollectionAsync(document.id, namedFlowCallback);
}
function namedFlowCallback(namedFlowCollection)
{
InspectorTest.addResult("=== CSS Named Flows in main document ===");
if (!namedFlowCollection) {
InspectorTest.addResult("[!] Failed to get Named Flows");
InspectorTest.completeTest();
return;
}
var namedFlowMap = namedFlowCollection.namedFlowMap;
var namedFlows = [];
for (var flowName in namedFlowMap)
namedFlows.push(namedFlowMap[flowName]);
namedFlows.sort(function (nf1, nf2) {
return ((nf1.name == nf2.name) ? 0 : ((nf1.name > nf2.name) ? 1 : -1));
});
for (var i = 0; i < namedFlows.length; ++i)
printNamedFlow(namedFlows[i]);
next();
}
},
function testGetNamedFlowCollectionWithInvalidDocument(next)
{
WebInspector.domAgent.requestDocument(documentCallback);
function documentCallback(document)
{
WebInspector.domAgent.querySelector(document.id, "#fake-document", querySelectorCallback);
}
function querySelectorCallback(nodeId)
{
WebInspector.cssModel.getNamedFlowCollectionAsync(nodeId, namedFlowCallback);
}
function namedFlowCallback(namedFlowCollection)
{
InspectorTest.addResult("=== CSS Named Flows in #fake-document ===");
if (namedFlowCollection) {
InspectorTest.addResult("[!] Failed");
InspectorTest.completeTest();
return;
}
InspectorTest.addResult("#fake-document is not a document")
next();
}
},
function testGetFlowByName(next)
{
WebInspector.domAgent.requestDocument(documentCallback);
function documentCallback(document)
{
WebInspector.cssModel.getFlowByNameAsync(document.id, "flow2", namedFlowCallback);
}
function namedFlowCallback(namedFlow)
{
InspectorTest.addResult("=== Named Flow \"flow2\" from main document ===");
if (!namedFlow) {
InspectorTest.addResult("[!] Failed to get Named Flow");
InspectorTest.completeTest();
return;
}
printNamedFlow(namedFlow);
next();
}
},
function testGetFlowByNameWithInvalidName(next)
{
WebInspector.domAgent.requestDocument(documentCallback);
function documentCallback(document)
{
WebInspector.cssModel.getFlowByNameAsync(document.id, "flow4", namedFlowCallback);
}
function namedFlowCallback(namedFlow)
{
InspectorTest.addResult("=== Name Flow \"flow4\" from main document ===");
if (namedFlow) {
InspectorTest.addResult("[!] Failed")
InspectorTest.completeTest();
return;
}
InspectorTest.addResult("There is no Named Flow \"flow4\" in the main document");
next();
}
},
function testNamedFlowCreated(next)
{
WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.NamedFlowCreated, callback, this);
InspectorTest.evaluateInPage("createNamedFlow()");
function callback(event)
{
if (event.data.name !== "tmpNamedFlow")
return;
WebInspector.cssModel.removeEventListener(WebInspector.CSSStyleModel.Events.NamedFlowCreated, callback, this);
InspectorTest.addResult("NamedFlowCreated: \"tmpNamedFlow\"");
next();
}
},
function testRegionOversetChanged(next)
{
WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.RegionOversetChanged, callback, this);
InspectorTest.evaluateInPage("window.document.getElementById(\"region3\").style.webkitFlowFrom=\"flow3\"");
function callback(event)
{
if (event.data.name !== "flow3")
return;
WebInspector.cssModel.removeEventListener(WebInspector.CSSStyleModel.Events.RegionOversetChanged, callback, this);
InspectorTest.addResult("RegionOversetChanged: \"flow3\"");
next();
}
},
function testNamedFlowRemoved(next)
{
WebInspector.cssModel.addEventListener(WebInspector.CSSStyleModel.Events.NamedFlowRemoved, callback, this);
InspectorTest.evaluateInPage("removeNamedFlow()");
function callback(event)
{
if (event.data.flowName !== "tmpNamedFlow")
return;
WebInspector.cssModel.removeEventListener(WebInspector.CSSStyleModel.Events.NamedFlowRemoved, callback, this);
InspectorTest.addResult("NamedFlowRemoved: \"tmpNamedFlow\"");
next();
}
}
]);
function printNamedFlow(namedFlow)
{
InspectorTest.addResult("* Named Flow \"" + namedFlow.name + "\"");
InspectorTest.addResult("Content Elements: " + namedFlow.content.length);
InspectorTest.addResult("Regions: " + namedFlow.regions.length);
}
}
</script>
</head>
<body onload="createDynamicElements()">
<p>
Tests the following commands and events:
<ul>
<li>getNamedFlowCollection <a href="https://bugs.webkit.org/show_bug.cgi?id=91607">Bug 91607</a></li>
<li>getFlowByName <a href="https://bugs.webkit.org/show_bug.cgi?id=91855">Bug 91855</a></li>
<li>namedFlowCreated <a href="https://bugs.webkit.org/show_bug.cgi?id=92739">Bug 92739</a></li>
<li>namedFlowRemoved <a href="https://bugs.webkit.org/show_bug.cgi?id=92739">Bug 92739</a></li>
<li>regionOversetChanged <a href="https://bugs.webkit.org/show_bug.cgi?id=117833">Bug 117833</a></li>
</ul>
</p>
<article style="-webkit-flow-into: flow1"></article>
<div style="-webkit-flow-from: flow1"></div>
<div style="-webkit-flow-from: flow1"></div>
<div style="-webkit-flow-from: flow1"></div>
<article style="-webkit-flow-into: flow2"></article>
<div style="-webkit-flow-from: flow2"></div>
<div style="-webkit-flow-from: flow2"></div>
<article style="-webkit-flow-into: flow3">
This text is from CSS Named Flow "flow3".
</article>
<div id="region3" style="-webkit-flow-from: none; height: 20px; width: 5px"></div>
<div id="fake-document"></div>
<iframe></iframe>
</body>
</html>