| <html> |
| <head> |
| <script src="../../http/tests/inspector/resources/protocol-test.js"></script> |
| <style> |
| @import url(resources/external.css?1) (min-width: 0px); |
| |
| body { color: red; } |
| @media (min-width: 1px) { body { color: red; } } |
| @media (min-width: 2px) { @supports(display: block) { body { color: red; } } } |
| </style> |
| <style media="(min-width: 3px)"> |
| body { color: red;} |
| </style> |
| <link rel="stylesheet" href="resources/external.css?2" media="(min-width: 4px)"> |
| <style> |
| div#x { z-index: 100; } |
| #x { z-index: 200; } |
| div { z-index: 300; } |
| |
| div::first-line { z-index: 1; } |
| div::first-letter { z-index: 2; } |
| div::marker { z-index: 3; } |
| div::before { z-index: 4; } |
| div::after { z-index: 5; } |
| div::selection { z-index: 6; } |
| div::-webkit-scrollbar { z-index: 7; } |
| div::-webkit-scrollbar-thumb { z-index: 8; } |
| div::-webkit-scrollbar-button { z-index: 9; } |
| div::-webkit-scrollbar-track { z-index: 10; } |
| div::-webkit-scrollbar-track-piece { z-index: 11; } |
| div::-webkit-scrollbar-corner { z-index: 12; } |
| div::-webkit-resizer { z-index: 13; } |
| </style> |
| <script> |
| function test() |
| { |
| Promise.resolve() |
| .then(() => { |
| ProtocolTest.log("Enabling Page domain..."); |
| return InspectorProtocol.awaitCommand({ |
| method: "Page.enable", |
| params: {}, |
| }); |
| }) |
| .then(() => { |
| ProtocolTest.log("Requesting document..."); |
| return InspectorProtocol.awaitCommand({ |
| method: "DOM.getDocument", |
| params: {}, |
| }); |
| }) |
| .then(({root}) => { |
| ProtocolTest.log("Querying for \"div#x\"..."); |
| return InspectorProtocol.awaitCommand({ |
| method: "DOM.querySelector", |
| params: { |
| nodeId: root.nodeId, |
| selector: "div#x", |
| }, |
| }); |
| }) |
| .then(({nodeId}) => { |
| ProtocolTest.log("Getting matched styles for \"div#x\"..."); |
| return InspectorProtocol.awaitCommand({ |
| method: "CSS.getMatchedStylesForNode", |
| params: { |
| nodeId, |
| includePseudo: true, |
| includeInherited: true, |
| }, |
| }); |
| }) |
| .then(({matchedCSSRules, pseudoElements, inherited}) => { |
| function filterRuleMatches(ruleMatches) { |
| return ruleMatches.filter((ruleMatch) => ruleMatch.rule.origin !== "user-agent"); |
| } |
| |
| function replacer(key, value) { |
| if (key === "ruleId" || key === "styleId" || key === "range" || key === "sourceLine" || key === "sourceURL") |
| return "<filtered>"; |
| return value; |
| } |
| |
| ProtocolTest.log(""); |
| ProtocolTest.log("Matched:"); |
| matchedCSSRules = filterRuleMatches(matchedCSSRules); |
| ProtocolTest.json(matchedCSSRules, replacer); |
| |
| ProtocolTest.log(""); |
| ProtocolTest.log("Pseudo:"); |
| pseudoElements = pseudoElements.filter((pseudoIdMatch) => { |
| pseudoIdMatch.matches = filterRuleMatches(pseudoIdMatch.matches); |
| return pseudoIdMatch.matches.length; |
| }); |
| ProtocolTest.json(pseudoElements, replacer); |
| |
| ProtocolTest.log(""); |
| ProtocolTest.log("Inherited:"); |
| inherited = inherited.filter((inheritedStyleEntry) => { |
| inheritedStyleEntry.matchedCSSRules = filterRuleMatches(inheritedStyleEntry.matchedCSSRules); |
| return inheritedStyleEntry.matchedCSSRules.length; |
| }); |
| ProtocolTest.json(inherited, replacer); |
| }) |
| .catch((error) => { |
| ProtocolTest.log(error); |
| }) |
| .finally(() => { |
| ProtocolTest.completeTest(); |
| }); |
| } |
| </script> |
| </head> |
| <body onLoad="runTest()"> |
| <p>Testing CSS.getMatchedStylesForNode.</p> |
| <div id="x"></div> |
| </body> |
| </html> |