| Index: LayoutTests/inspector/elements/elements-css-path.html
 | 
| diff --git a/LayoutTests/inspector/elements/elements-css-path.html b/LayoutTests/inspector/elements/elements-css-path.html
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..9a42cc2e67cc23da3db04f07a5b8dd7683706e5d
 | 
| --- /dev/null
 | 
| +++ b/LayoutTests/inspector/elements/elements-css-path.html
 | 
| @@ -0,0 +1,120 @@
 | 
| +<!DOCTYPE html>
 | 
| +<html>
 | 
| +<head>
 | 
| +<meta charset="utf-8">
 | 
| +<script src="../../http/tests/inspector/inspector-test.js" id="script-id"></script>
 | 
| +<script src="../../http/tests/inspector/elements-test.js"></script>
 | 
| +<script id="test-script">
 | 
| +function matchingElements(selector)
 | 
| +{
 | 
| +    return document.querySelectorAll(selector).length;
 | 
| +}
 | 
| +
 | 
| +function test()
 | 
| +{
 | 
| +    var nodeQueue = [];
 | 
| +    InspectorTest.expandElementsTree(enqueueNodes);
 | 
| +
 | 
| +    function enqueueNodes()
 | 
| +    {
 | 
| +        enqueueNode("", getDocumentElement());
 | 
| +        dumpNodeData();
 | 
| +    }
 | 
| +
 | 
| +    function dumpNodeData()
 | 
| +    {
 | 
| +        var entry = nodeQueue.shift();
 | 
| +        if (!entry) {
 | 
| +            InspectorTest.completeTest();
 | 
| +            return;
 | 
| +        }
 | 
| +        var cssPath = entry.node.cssPath(true);
 | 
| +        var result = entry.prefix + cssPath;
 | 
| +        InspectorTest.addResult(result.replace(/\n/g, "\\n"));
 | 
| +        var escapedPath = cssPath.replace(/\\/g, "\\\\");
 | 
| +        InspectorTest.evaluateInPage("matchingElements('" + escapedPath  + "')", callback);
 | 
| +
 | 
| +        function callback(result)
 | 
| +        {
 | 
| +            InspectorTest.assertEquals(1, result.value);
 | 
| +            dumpNodeData();
 | 
| +        }
 | 
| +    }
 | 
| +
 | 
| +    function getDocumentElement()
 | 
| +    {
 | 
| +        var map = WebInspector.domAgent._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>
 | 
| +
 | 
| +<div id="ids">
 | 
| +    <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>
 | 
| +    <p></p>
 | 
| +</div>
 | 
| +
 | 
| +<div id="classes">
 | 
| +    <div class="foo bar"></div>
 | 
| +    <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="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>
 | 
| +</div>
 | 
| +
 | 
| +<div id="non-unique-classes">
 | 
| +  <span class="c1"></span>
 | 
| +  <span class="c1"></span>
 | 
| +  <span class="c1 c2"></span>
 | 
| +  <span class="c1 c2 c3"></span>
 | 
| +  <span></span>
 | 
| +  <div class="c1"></div>
 | 
| +  <div class="c1 c2"></div>
 | 
| +  <div class="c3 c2"></div>
 | 
| +  <div class="c3 c4"></div>
 | 
| +  <div class="c1 c4"></div>
 | 
| +  <div></div>
 | 
| +</div>
 | 
| +</body>
 | 
| +</html>
 | 
| 
 |