Index: Source/devtools/front_end/elements/StylesSidebarPane.js |
diff --git a/Source/devtools/front_end/elements/StylesSidebarPane.js b/Source/devtools/front_end/elements/StylesSidebarPane.js |
index 11f11c8f397bbf4492033f2b3eec72a014205c65..d16d1b9c59352fafce16db3130efebfa21dea28e 100644 |
--- a/Source/devtools/front_end/elements/StylesSidebarPane.js |
+++ b/Source/devtools/front_end/elements/StylesSidebarPane.js |
@@ -524,7 +524,7 @@ WebInspector.StylesSidebarPane.prototype = { |
// Add rules in reverse order to match the cascade order. |
for (var j = pseudoElementCSSRules.rules.length - 1; j >= 0; --j) { |
var rule = pseudoElementCSSRules.rules[j]; |
- styleRules.push({ style: rule.style, selectorText: rule.selectorText, media: rule.media, sourceURL: rule.resourceURL(), rule: rule, editable: !!(rule.style && rule.style.styleSheetId) }); |
+ styleRules.push({ style: rule.style, selectorText: rule.selectorText, media: rule.media, rule: rule, editable: !!(rule.style && rule.style.styleSheetId) }); |
} |
usedProperties = {}; |
this._markUsedProperties(styleRules, usedProperties); |
@@ -594,7 +594,7 @@ WebInspector.StylesSidebarPane.prototype = { |
addedAttributesStyle = true; |
addAttributesStyle(); |
} |
- styleRules.push({ style: rule.style, selectorText: rule.selectorText, media: rule.media, sourceURL: rule.resourceURL(), rule: rule, editable: !!(rule.style && rule.style.styleSheetId) }); |
+ styleRules.push({ style: rule.style, selectorText: rule.selectorText, media: rule.media, rule: rule, editable: !!(rule.style && rule.style.styleSheetId) }); |
} |
if (!addedAttributesStyle) |
@@ -634,7 +634,7 @@ WebInspector.StylesSidebarPane.prototype = { |
insertInheritedNodeSeparator(parentNode); |
separatorInserted = true; |
} |
- styleRules.push({ style: rule.style, selectorText: rule.selectorText, media: rule.media, sourceURL: rule.resourceURL(), rule: rule, isInherited: true, parentNode: parentNode, editable: !!(rule.style && rule.style.styleSheetId) }); |
+ styleRules.push({ style: rule.style, selectorText: rule.selectorText, media: rule.media, rule: rule, isInherited: true, parentNode: parentNode, editable: !!(rule.style && rule.style.styleSheetId) }); |
} |
parentNode = parentNode.parentNode; |
} |
@@ -1531,7 +1531,12 @@ WebInspector.StylePropertiesSection.prototype = { |
return item; |
}, |
- _createRuleOriginNode: function() |
+ /** |
+ * @param {?WebInspector.CSSRule} rule |
+ * @param {!WebInspector.TextRange=} ruleLocation |
+ * @return {!Node} |
+ */ |
+ _createRuleOriginNode: function(rule, ruleLocation) |
{ |
/** |
* @param {string} url |
@@ -1546,24 +1551,40 @@ WebInspector.StylePropertiesSection.prototype = { |
return link; |
} |
- if (this.styleRule.sourceURL) { |
- var firstMatchingIndex = this.styleRule.rule.matchingSelectors && this.rule.matchingSelectors.length ? this.rule.matchingSelectors[0] : 0; |
- var matchingSelectorLocation = new WebInspector.CSSLocation(this._parentPane._target, this.rule.styleSheetId, this.styleRule.sourceURL, this.rule.lineNumberInSource(firstMatchingIndex), this.rule.columnNumberInSource(firstMatchingIndex)); |
- return this._parentPane._linkifier.linkifyCSSLocation(matchingSelectorLocation) || linkifyUncopyable(this.styleRule.sourceURL, this.rule.lineNumberInSource()); |
+ if (!rule) |
+ return document.createTextNode(""); |
+ |
+ if (!ruleLocation) { |
+ var firstMatchingIndex = rule.matchingSelectors && rule.matchingSelectors.length ? rule.matchingSelectors[0] : 0; |
+ ruleLocation = rule.selectors[firstMatchingIndex].range; |
} |
- if (!this.rule) |
- return document.createTextNode(""); |
+ var sourceURL = rule.resourceURL(); |
+ if (sourceURL && ruleLocation && rule.styleSheetId) { |
+ var styleSheetHeader = this._parentPane._target.cssModel.styleSheetHeaderForId(rule.styleSheetId); |
+ var lineNumber = styleSheetHeader.lineNumberInSource(ruleLocation.startLine); |
+ var columnNumber = styleSheetHeader.columnNumberInSource(ruleLocation.startLine, ruleLocation.startColumn); |
+ var matchingSelectorLocation = new WebInspector.CSSLocation(this._parentPane._target, rule.styleSheetId, sourceURL, lineNumber, columnNumber); |
+ return this._parentPane._linkifier.linkifyCSSLocation(matchingSelectorLocation) || linkifyUncopyable(sourceURL, 0); |
+ } |
- if (this.rule.isUserAgent) |
+ if (rule.isUserAgent) |
return document.createTextNode(WebInspector.UIString("user agent stylesheet")); |
- if (this.rule.isUser) |
+ if (rule.isUser) |
return document.createTextNode(WebInspector.UIString("user stylesheet")); |
- if (this.rule.isViaInspector) |
- return document.createTextNode(WebInspector.UIString("via inspector")); |
+ if (rule.isViaInspector) |
+ return this._createRuleViaInspectorOriginNode(); |
return document.createTextNode(""); |
}, |
+ /** |
+ * @return {!Node} |
+ */ |
+ _createRuleViaInspectorOriginNode: function() |
+ { |
+ return document.createTextNode(WebInspector.UIString("via inspector")); |
+ }, |
+ |
_handleEmptySpaceMouseDown: function() |
{ |
this._willCauseCancelEditing = this._parentPane._isEditingStyle; |
@@ -1692,7 +1713,7 @@ WebInspector.StylePropertiesSection.prototype = { |
var oldSelectorRange = this.rule.selectorRange; |
this.rule = newRule; |
- this.styleRule = { section: this, style: newRule.style, selectorText: newRule.selectorText, media: newRule.media, sourceURL: newRule.resourceURL(), rule: newRule }; |
+ this.styleRule = { section: this, style: newRule.style, selectorText: newRule.selectorText, media: newRule.media, rule: newRule }; |
this._parentPane.update(selectedNode); |
this._parentPane._styleSheetRuleEdited(this.rule, oldSelectorRange, this.rule.selectorRange); |
@@ -1717,7 +1738,7 @@ WebInspector.StylePropertiesSection.prototype = { |
_updateRuleOrigin: function() |
{ |
this._selectorRefElement.removeChildren(); |
- this._selectorRefElement.appendChild(this._createRuleOriginNode()); |
+ this._selectorRefElement.appendChild(this._createRuleOriginNode(this.rule)); |
}, |
_editingSelectorEnded: function() |
@@ -1854,7 +1875,7 @@ WebInspector.ComputedStylePropertiesSection.prototype = { |
fragment.appendChild(document.createTextNode(" - " + property.value + " ")); |
var subtitle = fragment.createChild("span"); |
subtitle.style.float = "right"; |
- subtitle.appendChild(section._createRuleOriginNode()); |
+ subtitle.appendChild(section._createRuleOriginNode(section.rule)); |
var childElement = new TreeElement(fragment, null, false); |
treeElement.appendChild(childElement); |
if (property.inactive || section.isPropertyOverloaded(property.name)) |
@@ -1891,15 +1912,39 @@ WebInspector.ComputedStylePropertiesSection.prototype = { |
WebInspector.BlankStylePropertiesSection = function(stylesPane, defaultSelectorText, styleSheetId, ruleLocation, insertAfterRule) |
{ |
var styleSheetHeader = WebInspector.cssModel.styleSheetHeaderForId(styleSheetId); |
- WebInspector.StylePropertiesSection.call(this, stylesPane, {selectorText: defaultSelectorText, rule: {isViaInspector: styleSheetHeader.isViaInspector()}}, true, false); |
+ WebInspector.StylePropertiesSection.call(this, stylesPane, { selectorText: defaultSelectorText }, true, false); |
this._ruleLocation = ruleLocation; |
this._styleSheetId = styleSheetId; |
- if (insertAfterRule) |
+ this._selectorRefElement.removeChildren(); |
+ if (insertAfterRule) { |
+ this._selectorRefElement.appendChild(this._createRuleOriginNode(insertAfterRule, this._actualRuleLocation())); |
this._createMediaList(insertAfterRule); |
+ } else { |
+ this._selectorRefElement.appendChild(this._createRuleViaInspectorOriginNode()); |
+ } |
this.element.classList.add("blank-section"); |
} |
WebInspector.BlankStylePropertiesSection.prototype = { |
+ /** |
+ * @return {!WebInspector.TextRange} |
+ */ |
+ _actualRuleLocation: function() |
+ { |
+ var prefix = this._rulePrefix(); |
+ var lines = prefix.split("\n"); |
+ var editRange = new WebInspector.TextRange(0, 0, lines.length - 1, lines.peekLast().length); |
+ return this._ruleLocation.rebaseAfterTextEdit(WebInspector.TextRange.createFromLocation(0, 0), editRange); |
+ }, |
+ |
+ /** |
+ * @return {string} |
+ */ |
+ _rulePrefix: function() |
+ { |
+ return this._ruleLocation.startLine === 0 && this._ruleLocation.startColumn === 0 ? "" : "\n\n"; |
+ }, |
+ |
get isBlank() |
{ |
return !this._normal; |
@@ -1925,7 +1970,7 @@ WebInspector.BlankStylePropertiesSection.prototype = { |
function successCallback(newRule) |
{ |
var doesSelectorAffectSelectedNode = newRule.matchingSelectors.length > 0; |
- var styleRule = { media: newRule.media, section: this, style: newRule.style, selectorText: newRule.selectorText, sourceURL: newRule.resourceURL(), rule: newRule }; |
+ var styleRule = { media: newRule.media, section: this, style: newRule.style, selectorText: newRule.selectorText, rule: newRule }; |
this._makeNormal(styleRule); |
if (!doesSelectorAffectSelectedNode) { |
@@ -1954,8 +1999,7 @@ WebInspector.BlankStylePropertiesSection.prototype = { |
this._parentPane._userOperation = true; |
var cssModel = this._parentPane._target.cssModel; |
- var rulePrefix = this._ruleLocation.startLine === 0 && this._ruleLocation.startColumn === 0 ? "" : "\n\n"; |
- var ruleText = rulePrefix + newContent + " {}"; |
+ var ruleText = this._rulePrefix() + newContent + " {}"; |
cssModel.addRule(this._styleSheetId, this._parentPane._node, ruleText, this._ruleLocation, successCallback.bind(this), this.editingSelectorCancelled.bind(this)); |
}, |
@@ -2175,8 +2219,8 @@ WebInspector.StylePropertyTreeElementBase.prototype = { |
hrefUrl = match[1]; |
var container = document.createDocumentFragment(); |
container.appendChild(document.createTextNode("url(")); |
- if (this._styleRule.sourceURL) |
- hrefUrl = WebInspector.ParsedURL.completeURL(this._styleRule.sourceURL, hrefUrl); |
+ if (this._styleRule.rule && this._styleRule.rule.resourceURL()) |
+ hrefUrl = WebInspector.ParsedURL.completeURL(this._styleRule.rule.resourceURL(), hrefUrl); |
else if (this.node()) |
hrefUrl = this.node().resolveURL(hrefUrl); |
var hasResource = hrefUrl && !!WebInspector.resourceForURL(hrefUrl); |