| 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 |