OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
3 * Copyright (C) 2009 Joseph Pecoraro | 3 * Copyright (C) 2009 Joseph Pecoraro |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * | 8 * |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 var color = WebInspector.Color.parse(text); | 117 var color = WebInspector.Color.parse(text); |
118 if (!color) | 118 if (!color) |
119 return createTextNode(text); | 119 return createTextNode(text); |
120 var swatch = WebInspector.ColorSwatch.create(); | 120 var swatch = WebInspector.ColorSwatch.create(); |
121 swatch.setColorText(text); | 121 swatch.setColorText(text); |
122 return swatch; | 122 return swatch; |
123 }, | 123 }, |
124 | 124 |
125 /** | 125 /** |
126 * @param {?WebInspector.SharedSidebarModel.ComputedStyle} nodeStyle | 126 * @param {?WebInspector.SharedSidebarModel.ComputedStyle} nodeStyle |
127 * @param {?{matched: !WebInspector.SectionCascade, pseudo: !Map.<number, !W
ebInspector.SectionCascade>}} cascades | 127 * @param {?WebInspector.CSSStyleModel.MatchedStyleResult} matchedStyles |
128 */ | 128 */ |
129 _innerRebuildUpdate: function(nodeStyle, cascades) | 129 _innerRebuildUpdate: function(nodeStyle, matchedStyles) |
130 { | 130 { |
131 this._propertiesOutline.removeChildren(); | 131 this._propertiesOutline.removeChildren(); |
132 this._linkifier.reset(); | 132 this._linkifier.reset(); |
133 var cssModel = this._sharedModel.cssModel(); | 133 var cssModel = this._sharedModel.cssModel(); |
134 if (!nodeStyle || !cascades || !cssModel) | 134 if (!nodeStyle || !matchedStyles || !cssModel) |
135 return; | 135 return; |
136 | 136 |
137 var uniqueProperties = nodeStyle.computedStyle.keysArray(); | 137 var uniqueProperties = nodeStyle.computedStyle.keysArray(); |
138 uniqueProperties.sort(propertySorter); | 138 uniqueProperties.sort(propertySorter); |
139 | 139 |
140 var propertyTraces = this._computePropertyTraces(cascades.matched); | 140 var propertyTraces = this._computePropertyTraces(matchedStyles); |
141 var inhertiedProperties = this._computeInheritedProperties(cascades.matc
hed); | 141 var inhertiedProperties = this._computeInheritedProperties(matchedStyles
); |
142 var showInherited = this._showInheritedComputedStylePropertiesSetting.ge
t(); | 142 var showInherited = this._showInheritedComputedStylePropertiesSetting.ge
t(); |
143 for (var i = 0; i < uniqueProperties.length; ++i) { | 143 for (var i = 0; i < uniqueProperties.length; ++i) { |
144 var propertyName = uniqueProperties[i]; | 144 var propertyName = uniqueProperties[i]; |
145 var propertyValue = nodeStyle.computedStyle.get(propertyName); | 145 var propertyValue = nodeStyle.computedStyle.get(propertyName); |
146 var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(p
ropertyName); | 146 var canonicalName = WebInspector.CSSMetadata.canonicalPropertyName(p
ropertyName); |
147 var inherited = !inhertiedProperties.has(canonicalName); | 147 var inherited = !inhertiedProperties.has(canonicalName); |
148 if (!showInherited && inherited && !(propertyName in this._alwaysSho
wComputedProperties)) | 148 if (!showInherited && inherited && !(propertyName in this._alwaysSho
wComputedProperties)) |
149 continue; | 149 continue; |
150 if (propertyName !== canonicalName && propertyValue === nodeStyle.co
mputedStyle.get(canonicalName)) | 150 if (propertyName !== canonicalName && propertyValue === nodeStyle.co
mputedStyle.get(canonicalName)) |
151 continue; | 151 continue; |
(...skipping 16 matching lines...) Expand all Loading... |
168 treeElement[WebInspector.ComputedStyleWidget._propertySymbol] = { | 168 treeElement[WebInspector.ComputedStyleWidget._propertySymbol] = { |
169 name: propertyName, | 169 name: propertyName, |
170 value: propertyValue | 170 value: propertyValue |
171 }; | 171 }; |
172 var isOdd = this._propertiesOutline.rootElement().children().length
% 2 === 0; | 172 var isOdd = this._propertiesOutline.rootElement().children().length
% 2 === 0; |
173 treeElement.listItemElement.classList.toggle("odd-row", isOdd); | 173 treeElement.listItemElement.classList.toggle("odd-row", isOdd); |
174 this._propertiesOutline.appendChild(treeElement); | 174 this._propertiesOutline.appendChild(treeElement); |
175 | 175 |
176 var trace = propertyTraces.get(propertyName); | 176 var trace = propertyTraces.get(propertyName); |
177 if (trace) { | 177 if (trace) { |
178 this._renderPropertyTrace(cssModel, cascades.matched, nodeStyle.
node, treeElement, trace); | 178 this._renderPropertyTrace(cssModel, matchedStyles, nodeStyle.nod
e, treeElement, trace); |
179 treeElement.listItemElement.addEventListener("mousedown", consum
eEvent, false); | 179 treeElement.listItemElement.addEventListener("mousedown", consum
eEvent, false); |
180 treeElement.listItemElement.addEventListener("dblclick", consume
Event, false); | 180 treeElement.listItemElement.addEventListener("dblclick", consume
Event, false); |
181 treeElement.listItemElement.addEventListener("click", handleClic
k.bind(null, treeElement), false); | 181 treeElement.listItemElement.addEventListener("click", handleClic
k.bind(null, treeElement), false); |
182 } | 182 } |
183 } | 183 } |
184 | 184 |
185 this._updateFilter(this._filterRegex); | 185 this._updateFilter(this._filterRegex); |
186 | 186 |
187 /** | 187 /** |
188 * @param {string} a | 188 * @param {string} a |
(...skipping 17 matching lines...) Expand all Loading... |
206 if (!treeElement.expanded) | 206 if (!treeElement.expanded) |
207 treeElement.expand(); | 207 treeElement.expand(); |
208 else | 208 else |
209 treeElement.collapse(); | 209 treeElement.collapse(); |
210 consumeEvent(event); | 210 consumeEvent(event); |
211 } | 211 } |
212 }, | 212 }, |
213 | 213 |
214 /** | 214 /** |
215 * @param {!WebInspector.CSSStyleModel} cssModel | 215 * @param {!WebInspector.CSSStyleModel} cssModel |
216 * @param {!WebInspector.SectionCascade} matchedCascade | 216 * @param {!WebInspector.CSSStyleModel.MatchedStyleResult} matchedStyles |
217 * @param {!WebInspector.DOMNode} node | 217 * @param {!WebInspector.DOMNode} node |
218 * @param {!TreeElement} rootTreeElement | 218 * @param {!TreeElement} rootTreeElement |
219 * @param {!Array<!WebInspector.CSSProperty>} tracedProperties | 219 * @param {!Array<!WebInspector.CSSProperty>} tracedProperties |
220 */ | 220 */ |
221 _renderPropertyTrace: function(cssModel, matchedCascade, node, rootTreeEleme
nt, tracedProperties) | 221 _renderPropertyTrace: function(cssModel, matchedStyles, node, rootTreeElemen
t, tracedProperties) |
222 { | 222 { |
223 for (var property of tracedProperties) { | 223 for (var property of tracedProperties) { |
224 var trace = createElement("div"); | 224 var trace = createElement("div"); |
225 trace.classList.add("property-trace"); | 225 trace.classList.add("property-trace"); |
226 if (matchedCascade.propertyState(property) === WebInspector.SectionC
ascade.PropertyState.Overloaded) | 226 if (matchedStyles.propertyState(property) === WebInspector.CSSStyleM
odel.MatchedStyleResult.PropertyState.Overloaded) |
227 trace.classList.add("property-trace-inactive"); | 227 trace.classList.add("property-trace-inactive"); |
228 | 228 |
229 var renderer = new WebInspector.StylesSidebarPropertyRenderer(null,
node, property.name, /** @type {string} */(property.value)); | 229 var renderer = new WebInspector.StylesSidebarPropertyRenderer(null,
node, property.name, /** @type {string} */(property.value)); |
230 renderer.setColorHandler(this._processColor.bind(this)); | 230 renderer.setColorHandler(this._processColor.bind(this)); |
231 var valueElement = renderer.renderValue(); | 231 var valueElement = renderer.renderValue(); |
232 valueElement.classList.add("property-trace-value"); | 232 valueElement.classList.add("property-trace-value"); |
233 trace.appendChild(valueElement); | 233 trace.appendChild(valueElement); |
234 | 234 |
235 var rule = property.ownerStyle.parentRule; | 235 var rule = property.ownerStyle.parentRule; |
236 if (rule) { | 236 if (rule) { |
237 var linkSpan = trace.createChild("span", "trace-link"); | 237 var linkSpan = trace.createChild("span", "trace-link"); |
238 linkSpan.appendChild(WebInspector.StylePropertiesSection.createR
uleOriginNode(cssModel, this._linkifier, rule)); | 238 linkSpan.appendChild(WebInspector.StylePropertiesSection.createR
uleOriginNode(cssModel, this._linkifier, rule)); |
239 } | 239 } |
240 | 240 |
241 var selectorElement = trace.createChild("span", "property-trace-sele
ctor"); | 241 var selectorElement = trace.createChild("span", "property-trace-sele
ctor"); |
242 selectorElement.textContent = rule ? rule.selectorText() : "element.
style"; | 242 selectorElement.textContent = rule ? rule.selectorText() : "element.
style"; |
243 selectorElement.title = selectorElement.textContent; | 243 selectorElement.title = selectorElement.textContent; |
244 | 244 |
245 var traceTreeElement = new TreeElement(); | 245 var traceTreeElement = new TreeElement(); |
246 traceTreeElement.title = trace; | 246 traceTreeElement.title = trace; |
247 traceTreeElement.selectable = false; | 247 traceTreeElement.selectable = false; |
248 rootTreeElement.appendChild(traceTreeElement); | 248 rootTreeElement.appendChild(traceTreeElement); |
249 } | 249 } |
250 }, | 250 }, |
251 | 251 |
252 /** | 252 /** |
253 * @param {!WebInspector.SectionCascade} matchedCascade | 253 * @param {!WebInspector.CSSStyleModel.MatchedStyleResult} matchedStyles |
254 * @return {!Map<string, !Array<!WebInspector.CSSProperty>>} | 254 * @return {!Map<string, !Array<!WebInspector.CSSProperty>>} |
255 */ | 255 */ |
256 _computePropertyTraces: function(matchedCascade) | 256 _computePropertyTraces: function(matchedStyles) |
257 { | 257 { |
258 var result = new Map(); | 258 var result = new Map(); |
259 var styles = matchedCascade.styles(); | 259 for (var style of matchedStyles.nodeStyles()) { |
260 for (var style of styles) { | |
261 var allProperties = style.allProperties; | 260 var allProperties = style.allProperties; |
262 for (var property of allProperties) { | 261 for (var property of allProperties) { |
263 if (!property.activeInStyle() || !matchedCascade.propertyState(p
roperty)) | 262 if (!property.activeInStyle() || !matchedStyles.propertyState(pr
operty)) |
264 continue; | 263 continue; |
265 if (!result.has(property.name)) | 264 if (!result.has(property.name)) |
266 result.set(property.name, []); | 265 result.set(property.name, []); |
267 result.get(property.name).push(property); | 266 result.get(property.name).push(property); |
268 } | 267 } |
269 } | 268 } |
270 return result; | 269 return result; |
271 }, | 270 }, |
272 | 271 |
273 /** | 272 /** |
274 * @param {!WebInspector.SectionCascade} matchedCascade | 273 * @param {!WebInspector.CSSStyleModel.MatchedStyleResult} matchedStyles |
275 * @return {!Set<string>} | 274 * @return {!Set<string>} |
276 */ | 275 */ |
277 _computeInheritedProperties: function(matchedCascade) | 276 _computeInheritedProperties: function(matchedStyles) |
278 { | 277 { |
279 var result = new Set(); | 278 var result = new Set(); |
280 for (var style of matchedCascade.styles()) { | 279 for (var style of matchedStyles.nodeStyles()) { |
281 for (var property of style.allProperties) { | 280 for (var property of style.allProperties) { |
282 if (!matchedCascade.propertyState(property)) | 281 if (!matchedStyles.propertyState(property)) |
283 continue; | 282 continue; |
284 result.add(WebInspector.CSSMetadata.canonicalPropertyName(proper
ty.name)); | 283 result.add(WebInspector.CSSMetadata.canonicalPropertyName(proper
ty.name)); |
285 } | 284 } |
286 } | 285 } |
287 return result; | 286 return result; |
288 }, | 287 }, |
289 | 288 |
290 /** | 289 /** |
291 * @param {?RegExp} regex | 290 * @param {?RegExp} regex |
292 */ | 291 */ |
293 _updateFilter: function(regex) | 292 _updateFilter: function(regex) |
294 { | 293 { |
295 var children = this._propertiesOutline.rootElement().children(); | 294 var children = this._propertiesOutline.rootElement().children(); |
296 for (var child of children) { | 295 for (var child of children) { |
297 var property = child[WebInspector.ComputedStyleWidget._propertySymbo
l]; | 296 var property = child[WebInspector.ComputedStyleWidget._propertySymbo
l]; |
298 var matched = !regex || regex.test(property.name) || regex.test(prop
erty.value); | 297 var matched = !regex || regex.test(property.name) || regex.test(prop
erty.value); |
299 child.hidden = !matched; | 298 child.hidden = !matched; |
300 } | 299 } |
301 }, | 300 }, |
302 | 301 |
303 __proto__: WebInspector.ThrottledWidget.prototype | 302 __proto__: WebInspector.ThrottledWidget.prototype |
304 } | 303 } |
OLD | NEW |