Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/inspector-protocol/css-protocol-test.js

Issue 2942573003: [DevTools] New harness for inspector-protocol layout tests (Closed)
Patch Set: Protocol -> dp Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 function initialize_cssTest()
2 {
3
4 InspectorTest.dumpStyleSheetText = function(styleSheetId, callback)
5 {
6 InspectorTest.sendCommandOrDie("CSS.getStyleSheetText", { styleSheetId: styl eSheetId }, onStyleSheetText);
7 function onStyleSheetText(result)
8 {
9 InspectorTest.log("==== Style sheet text ====");
10 InspectorTest.log(result.text);
11 callback();
12 }
13 }
14
15 function modifyStyleSheet(command, presetStyleSheetId, styleSheetId, expectError , options, callback)
16 {
17 if (presetStyleSheetId)
18 options.styleSheetId = styleSheetId;
19 if (expectError)
20 InspectorTest.sendCommand(command, options, onResponse);
21 else
22 InspectorTest.sendCommandOrDie(command, options, onSuccess);
23
24 function onSuccess()
25 {
26 InspectorTest.dumpStyleSheetText(styleSheetId, callback);
27 }
28
29 function onResponse(message)
30 {
31 if (!message.error) {
32 InspectorTest.log("ERROR: protocol method call did not return expect ed error. Instead, the following message was received: " + JSON.stringify(messag e));
33 InspectorTest.completeTest();
34 return;
35 }
36 InspectorTest.log("Expected protocol error: " + message.error.message + (message.error.data ? " (" + message.error.data + ")" : ""));
37 callback();
38 }
39 }
40
41 InspectorTest.setPropertyText = modifyStyleSheet.bind(null, "CSS.setPropertyText ", true);
42 InspectorTest.setRuleSelector = modifyStyleSheet.bind(null, "CSS.setRuleSelector ", true);
43 InspectorTest.setMediaText = modifyStyleSheet.bind(null, "CSS.setMediaText", tru e);
44 InspectorTest.addRule = modifyStyleSheet.bind(null, "CSS.addRule", true);
45 InspectorTest.setStyleTexts = function(styleSheetId, expectError, edits, callbac k)
46 {
47 var options = { edits: edits };
48 modifyStyleSheet("CSS.setStyleTexts", false, styleSheetId, expectError, opti ons, callback);
49 }
50
51 InspectorTest.requestMainFrameId = function(callback)
52 {
53 InspectorTest.sendCommandOrDie("Page.enable", {}, pageEnabled);
54
55 function pageEnabled()
56 {
57 InspectorTest.sendCommandOrDie("Page.getResourceTree", {}, resourceTreeL oaded);
58 }
59
60 function resourceTreeLoaded(payload)
61 {
62 callback(payload.frameTree.frame.id);
63 }
64 };
65
66 function indentLog(indent, string)
67 {
68 var indentString = Array(indent+1).join(" ");
69 InspectorTest.log(indentString + string);
70 }
71
72 InspectorTest.dumpRuleMatch = function(ruleMatch)
73 {
74
75 var rule = ruleMatch.rule;
76 var matchingSelectors = ruleMatch.matchingSelectors;
77 var media = rule.media || [];
78 var mediaLine = "";
79 for (var i = 0; i < media.length; ++i)
80 mediaLine += (i > 0 ? " " : "") + media[i].text;
81 var baseIndent = 0;
82 if (mediaLine.length) {
83 indentLog(baseIndent, "@media " + mediaLine);
84 baseIndent += 4;
85 }
86 var selectorLine = "";
87 var selectors = rule.selectorList.selectors;
88 for (var i = 0; i < selectors.length; ++i) {
89 if (i > 0)
90 selectorLine += ", ";
91 var matching = matchingSelectors.indexOf(i) !== -1;
92 if (matching)
93 selectorLine += "*";
94 selectorLine += selectors[i].text;
95 if (matching)
96 selectorLine += "*";
97 }
98 selectorLine += " {";
99 selectorLine += " " + rule.origin;
100 if (!rule.style.styleSheetId)
101 selectorLine += " readonly";
102 indentLog(baseIndent, selectorLine);
103 InspectorTest.dumpStyle(rule.style, baseIndent);
104 indentLog(baseIndent, "}");
105 };
106
107 InspectorTest.dumpStyle = function(style, baseIndent)
108 {
109 if (!style)
110 return;
111 var cssProperties = style.cssProperties;
112 for (var i = 0; i < cssProperties.length; ++i) {
113 var cssProperty = cssProperties[i];
114 var propertyLine = cssProperty.name + ": " + cssProperty.value + ";";
115 indentLog(baseIndent + 4, propertyLine);
116 }
117 }
118
119 InspectorTest.displayName = function(url)
120 {
121 return url.substr(url.lastIndexOf("/") + 1);
122 };
123
124 InspectorTest.loadAndDumpMatchingRulesForNode = function(nodeId, callback, omitL og)
125 {
126 InspectorTest.sendCommandOrDie("CSS.getMatchedStylesForNode", { "nodeId": no deId }, matchingRulesLoaded);
127
128 function matchingRulesLoaded(result)
129 {
130 if (!omitLog)
131 InspectorTest.log("Dumping matched rules: ");
132 dumpRuleMatches(result.matchedCSSRules);
133 if (!omitLog)
134 InspectorTest.log("Dumping inherited rules: ");
135 for (var inheritedEntry of result.inherited) {
136 InspectorTest.dumpStyle(inheritedEntry.inlineStyle);
137 dumpRuleMatches(inheritedEntry.matchedCSSRules);
138 }
139 callback();
140 }
141
142 function dumpRuleMatches(ruleMatches)
143 {
144 for (var ruleMatch of ruleMatches) {
145 var origin = ruleMatch.rule.origin;
146 if (origin !== "inspector" && origin !== "regular")
147 continue;
148 InspectorTest.dumpRuleMatch(ruleMatch);
149 }
150 }
151 }
152
153 InspectorTest.loadAndDumpCSSAnimationsForNode = function(nodeId, callback)
154 {
155 InspectorTest.sendCommandOrDie("CSS.getMatchedStylesForNode", { "nodeId": no deId }, cssAnimationsLoaded);
156
157 function cssAnimationsLoaded(result)
158 {
159 InspectorTest.log("Dumping CSS keyframed animations: ");
160 for (var keyframesRule of result.cssKeyframesRules) {
161 InspectorTest.log("@keyframes " + keyframesRule.animationName.text + " {");
162 for (var keyframe of keyframesRule.keyframes) {
163 indentLog(4, keyframe.keyText.text + " {");
164 InspectorTest.dumpStyle(keyframe.style, 4);
165 indentLog(4, "}");
166 }
167 InspectorTest.log("}");
168 }
169 callback();
170 }
171 }
172
173 InspectorTest.loadAndDumpMatchingRules = function(documentNodeId, selector, call back, omitLog)
174 {
175 InspectorTest.requestNodeId(documentNodeId, selector, nodeIdLoaded);
176
177 function nodeIdLoaded(nodeId)
178 {
179 InspectorTest.loadAndDumpMatchingRulesForNode(nodeId, callback, omitLog) ;
180 }
181 }
182
183 InspectorTest.loadAndDumpInlineAndMatchingRules = function(documentNodeId, selec tor, callback, omitLog)
184 {
185 InspectorTest.requestNodeId(documentNodeId, selector, nodeIdLoaded);
186 var nodeId;
187 function nodeIdLoaded(id)
188 {
189 nodeId = id;
190 InspectorTest.sendCommandOrDie("CSS.getInlineStylesForNode", { "nodeId": nodeId }, onInline);
191 }
192
193 function onInline(result)
194 {
195 if (!omitLog)
196 InspectorTest.log("Dumping inline style: ");
197 InspectorTest.log("{");
198 InspectorTest.dumpStyle(result.inlineStyle, 0);
199 InspectorTest.log("}");
200 InspectorTest.loadAndDumpMatchingRulesForNode(nodeId, callback, omitLog)
201 }
202 }
203 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698