blob: 36a6e1a1e5390b7d869c335f7668af01fff6b148 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="../../inspector/inspector-test.js" id="script-id"></script>
<script src="../../inspector/elements-test.js"></script>
<script id="test-script">
function matchingElements(selector)
{
return document.querySelectorAll(selector).length;
}
function test() {
var nodeQueue = [];
ElementsTestRunner.expandElementsTree(enqueueNodes);
function enqueueNodes() {
enqueueNode('', getDocumentElement());
dumpNodeData();
}
function dumpNodeData() {
var entry = nodeQueue.shift();
if (!entry) {
TestRunner.completeTest();
return;
}
var cssPath = Components.DOMPresentationUtils.cssPath(entry.node, true);
var result = entry.prefix + cssPath;
TestRunner.addResult(result.replace(/\n/g, '\\n'));
var escapedPath = cssPath.replace(/\\/g, '\\\\');
TestRunner.evaluateInPage('matchingElements(\'' + escapedPath + '\')', callback);
function callback(result) {
TestRunner.assertEquals(1, result.value);
dumpNodeData();
}
}
function getDocumentElement() {
var map = TestRunner.domModel._idToDOMNode;
for (var id in map) {
if (map[id].nodeName() === '#document')
return map[id];
}
return null;
}
function enqueueNode(prefix, node) {
if (node.nodeType() === Node.ELEMENT_NODE)
nodeQueue.push({prefix: prefix, node: node});
var children = node.children();
for (var i = 0; children && i < children.length; ++i)
enqueueNode(prefix + ' ', children[i]);
}
}
</script>
</head>
<body onload="runTest()">
<p>Tests DOMNode.cssPath()</p>
<article></article>
<article></article>
<input type="number"/>
<!-- Comment node -->
<div id="ids">
<!-- Comment node -->
<div></div>
<div></div>
<div id="inner-id"></div>
<div id="__proto__"></div>
<div id='#"ridiculous".id'></div>
<div id="'quoted.value'"></div>
<div id=".foo.bar"></div>
<div id="-"></div>
<div id="-a"></div>
<div id="-0"></div>
<div id="7"></div>
<div id="ид">ид</div>
<input type="text" id="input-id"/>
<input type="text"/>
<p></p>
</div>
<div id="classes">
<!-- Comment node 1 -->
<div class="foo bar"></div>
<!-- Comment node 2 -->
<div class=" foo foo "></div>
<div class=".foo"></div>
<div class=".foo.bar"></div>
<div class="-"></div>
<div class="-a"></div>
<div class="-0"></div>
<div class="--a"></div>
<div class="---a"></div>
<div class="7"></div>
<div class="класс">класс</div>
<div class="__proto__"></div>
<div class="__proto__ foo"></div>
<span class="bar"></span>
<div id="id-with-class" class="moo"></div>
<input type="text" class="input-class-one"/>
<input type="text" class="input-class-two"/>
<!-- Comment node 3 -->
</div>
<div id="non-unique-classes">
<!-- Comment node 1 -->
<span class="c1"></span>
<!-- Comment node 2 -->
<span class="c1"></span>
<!-- Comment node 3 -->
<span class="c1 c2"></span>
<!-- Comment node 4 -->
<span class="c1 c2 c3"></span>
<!-- Comment node 5 -->
<span></span>
<!-- Comment node 6 -->
<div class="c1"></div>
<!-- Comment node 7 -->
<div class="c1 c2"></div>
<!-- Comment node 8 -->
<div class="c3 c2"></div>
<!-- Comment node 9 -->
<div class="c3 c4"></div>
<!-- Comment node 10 -->
<div class="c1 c4"></div>
<!-- Comment node 11 -->
<input type="text" class="input-class"/>
<input type="text" class="input-class"/>
<div></div>
</div>
</body>
</html>