| OLD | NEW |
| 1 <html> | 1 <html> |
| 2 <head> | 2 <head> |
| 3 <script type="text/javascript" src="../../http/tests/inspector-protocol/inspecto
r-protocol-test.js"></script> | 3 <script type="text/javascript" src="../../http/tests/inspector-protocol/inspecto
r-protocol-test.js"></script> |
| 4 <script> | 4 <script> |
| 5 | 5 |
| 6 function addBeforeElement() | 6 function addBeforeElement() |
| 7 { | 7 { |
| 8 document.getElementById("style").textContent = "#for-pseudo:before { content
: \"BEFORE\" }"; | 8 document.getElementById("style").textContent = "#for-pseudo:before { content
: \"BEFORE\" }"; |
| 9 } | 9 } |
| 10 | 10 |
| 11 function test() | 11 async function test() |
| 12 { | 12 { |
| 13 var nodeInfo = {}; | 13 var nodeInfo = {}; |
| 14 var childrenCallback; | 14 var childrenCallback; |
| 15 | 15 |
| 16 InspectorTest.eventHandler["DOM.setChildNodes"] = setChildNodes; | 16 InspectorTest.eventHandler["DOM.setChildNodes"] = setChildNodes; |
| 17 getDocument(); | 17 await InspectorTest.sendCommandOrDie("DOM.enable", {}); |
| 18 await InspectorTest.sendCommandOrDie("CSS.enable", {}); |
| 18 | 19 |
| 19 function getDocument() | 20 InspectorTest.log("\n=== Get the Document ===\n"); |
| 20 { | 21 var result = await InspectorTest.sendCommandOrDie("DOM.getDocument", {}); |
| 21 step({ | 22 var bodyId = result.root.children[0].children[1].nodeId; |
| 22 name: "Get the Document", | |
| 23 command: "DOM.getDocument", | |
| 24 parameters: {}, | |
| 25 callback: getImmediateChildren | |
| 26 }); | |
| 27 }; | |
| 28 | 23 |
| 29 function getImmediateChildren(result) | 24 InspectorTest.log("\n=== Get immediate children of the body ===\n"); |
| 30 { | 25 result = await InspectorTest.sendCommandOrDie("DOM.requestChildNodes", {"nod
eId": bodyId}); |
| 31 var bodyId = result.root.children[0].children[1].nodeId; | 26 var node = findNodeById("for-pseudo"); |
| 32 childrenCallback = onChildrenRequested; | 27 var beforeNode = node.pseudoElements[0]; |
| 33 step({ | |
| 34 name: "Get immediate children of the body", | |
| 35 command: "DOM.requestChildNodes", | |
| 36 parameters: {"nodeId": bodyId} | |
| 37 }); | |
| 38 }; | |
| 39 | 28 |
| 40 function onChildrenRequested() | 29 InspectorTest.log("\n=== Request matching styles for #for-pseudo::before ===
\n"); |
| 41 { | 30 result = await InspectorTest.sendCommandOrDie("CSS.getMatchedStylesForNode",
{nodeId: beforeNode.nodeId}); |
| 42 var node = findNodeById("for-pseudo"); | 31 var matchedRules = result.matchedCSSRules; |
| 43 var beforeNode = node.pseudoElements[0]; | 32 for (var i = 0; i < matchedRules.length; ++i) { |
| 44 step({ | 33 var match = matchedRules[i]; |
| 45 name: "Request matching styles for #for-pseudo::before", | 34 if (match.rule.selectorList.text === "#for-pseudo::before") { |
| 46 command: "CSS.getMatchedStylesForNode", | 35 InspectorTest.log("#for-pseudo::before matching the :before element:
" + (match.matchingSelectors[0] === 0)); |
| 47 parameters: {nodeId: beforeNode.nodeId}, | 36 InspectorTest.completeTest(); |
| 48 callback: stylesReceived | 37 return; |
| 49 }); | 38 } |
| 50 } | 39 } |
| 51 | 40 InspectorTest.log("#for-pseudo::before rule not received"); |
| 52 function stylesReceived(result) | 41 InspectorTest.completeTest(); |
| 53 { | |
| 54 var matchedRules = result.matchedCSSRules; | |
| 55 for (var i = 0; i < matchedRules.length; ++i) { | |
| 56 var match = matchedRules[i]; | |
| 57 if (match.rule.selectorList.text === "#for-pseudo::before") { | |
| 58 InspectorTest.log("#for-pseudo::before matching the :before elem
ent: " + (match.matchingSelectors[0] === 0)); | |
| 59 InspectorTest.completeTest(); | |
| 60 return; | |
| 61 } | |
| 62 } | |
| 63 InspectorTest.log("#for-pseudo::before rule not received"); | |
| 64 InspectorTest.completeTest(); | |
| 65 } | |
| 66 | 42 |
| 67 function setChildNodes(message) | 43 function setChildNodes(message) |
| 68 { | 44 { |
| 69 var nodes = message.params.nodes; | 45 var nodes = message.params.nodes; |
| 70 for (var i = 0; i < nodes.length; ++i) | 46 for (var i = 0; i < nodes.length; ++i) |
| 71 addNodesRecursive(nodes[i]); | 47 addNodesRecursive(nodes[i]); |
| 72 var callback = childrenCallback; | 48 var callback = childrenCallback; |
| 73 childrenCallback = null; | 49 childrenCallback = null; |
| 74 if (callback) | 50 if (callback) |
| 75 callback(); | 51 callback(); |
| 76 } | 52 } |
| 77 | 53 |
| 78 function step(test) | |
| 79 { | |
| 80 InspectorTest.log("\n=== " + test.name + " ===\n"); | |
| 81 InspectorTest.sendCommand(test.command, test.parameters, function(messag
eObject) { | |
| 82 if (messageObject.hasOwnProperty("error")) | |
| 83 InspectorTest.log("Backend error: " + messageObject.error.messag
e + " (" + messageObject.error.code + ")\n"); | |
| 84 | |
| 85 if (test.callback) | |
| 86 test.callback(messageObject.result); | |
| 87 }); | |
| 88 } | |
| 89 | |
| 90 function findNodeById(id) | 54 function findNodeById(id) |
| 91 { | 55 { |
| 92 for (var nodeId in nodeInfo) { | 56 for (var nodeId in nodeInfo) { |
| 93 var node = nodeInfo[nodeId]; | 57 var node = nodeInfo[nodeId]; |
| 94 var attrs = node.attributes; | 58 var attrs = node.attributes; |
| 95 if (!attrs) | 59 if (!attrs) |
| 96 continue; | 60 continue; |
| 97 for (var i = 0; i < attrs.length; i += 2) { | 61 for (var i = 0; i < attrs.length; i += 2) { |
| 98 var name = attrs[i]; | 62 var name = attrs[i]; |
| 99 if (name !== "id") | 63 if (name !== "id") |
| 100 continue; | 64 continue; |
| 101 if (attrs[i + 1] === id) | 65 if (attrs[i + 1] === id) |
| 102 return node; | 66 return node; |
| 103 } | 67 } |
| 104 } | 68 } |
| 105 return null; | 69 return null; |
| 106 } | 70 } |
| 107 | 71 |
| 108 function addNodesRecursive(root) | 72 function addNodesRecursive(node) |
| 109 { | |
| 110 addNode(root); | |
| 111 if (!root.children) | |
| 112 return; | |
| 113 for (var i = 0; i < root.children.length; ++i) | |
| 114 addNodesRecursive(root.children[i]); | |
| 115 } | |
| 116 | |
| 117 function addNode(node) | |
| 118 { | 73 { |
| 119 nodeInfo[node.nodeId] = node; | 74 nodeInfo[node.nodeId] = node; |
| 75 (node.children || []).forEach(addNodesRecursive); |
| 120 } | 76 } |
| 121 } | 77 } |
| 122 | 78 |
| 123 </script> | 79 </script> |
| 124 <style> | 80 <style> |
| 125 #for-pseudo:before { | 81 #for-pseudo:before { |
| 126 color: red; | 82 color: red; |
| 127 content: "BEFORE"; | 83 content: "BEFORE"; |
| 128 } | 84 } |
| 129 </style> | 85 </style> |
| 130 </head> | 86 </head> |
| 131 <body onload="runTest()"> | 87 <body onload="runTest()"> |
| 132 <div id="for-pseudo">Test</div> | 88 <div id="for-pseudo">Test</div> |
| 133 </body> | 89 </body> |
| 134 </html> | 90 </html> |
| OLD | NEW |