Index: Source/WebCore/inspector/front-end/CSSStyleModel.js |
=================================================================== |
--- Source/WebCore/inspector/front-end/CSSStyleModel.js (revision 85172) |
+++ Source/WebCore/inspector/front-end/CSSStyleModel.js (working copy) |
@@ -122,9 +122,9 @@ |
setRuleSelector: function(ruleId, nodeId, newSelector, successCallback, failureCallback) |
{ |
- function checkAffectsCallback(nodeId, successCallback, rulePayload, error, selectedNodeIds) |
+ function checkAffectsCallback(nodeId, successCallback, rulePayload, selectedNodeIds) |
{ |
- if (error) |
+ if (!selectedNodeIds) |
return; |
var doesAffectSelectedNode = (selectedNodeIds.indexOf(nodeId) >= 0); |
var rule = WebInspector.CSSRule.parsePayload(rulePayload); |
@@ -137,8 +137,13 @@ |
// FIXME: looks like rulePayload is always null. |
if (error) |
failureCallback(); |
- else |
- WebInspector.domAgent.querySelectorAll(nodeId, newSelector, checkAffectsCallback.bind(this, nodeId, successCallback, rulePayload)); |
+ else { |
+ var documentElementId = this._documentElementId(nodeId); |
+ if (documentElementId) |
+ WebInspector.domAgent.querySelectorAll(documentElementId, newSelector, checkAffectsCallback.bind(this, nodeId, successCallback, rulePayload)); |
+ else |
+ failureCallback(); |
+ } |
} |
CSSAgent.setRuleSelector(ruleId, newSelector, callback.bind(this, nodeId, successCallback, failureCallback, newSelector)); |
@@ -146,8 +151,10 @@ |
addRule: function(nodeId, selector, successCallback, failureCallback) |
{ |
- function checkAffectsCallback(nodeId, successCallback, rulePayload, error, selectedNodeIds) |
+ function checkAffectsCallback(nodeId, successCallback, rulePayload, selectedNodeIds) |
{ |
+ if (!selectedNodeIds) |
+ return; |
var doesAffectSelectedNode = (selectedNodeIds.indexOf(nodeId) >= 0); |
var rule = WebInspector.CSSRule.parsePayload(rulePayload); |
successCallback(rule, doesAffectSelectedNode); |
@@ -159,13 +166,26 @@ |
if (error) { |
// Invalid syntax for a selector |
failureCallback(); |
- } else |
- WebInspector.domAgent.querySelectorAll(nodeId, selector, checkAffectsCallback.bind(this, nodeId, successCallback, rulePayload)); |
+ } else { |
+ var documentElementId = this._documentElementId(nodeId); |
+ if (documentElementId) |
+ WebInspector.domAgent.querySelectorAll(documentElementId, selector, checkAffectsCallback.bind(this, nodeId, successCallback, rulePayload)); |
+ else |
+ failureCallback(); |
+ } |
} |
CSSAgent.addRule(nodeId, selector, callback.bind(this, successCallback, failureCallback, selector)); |
}, |
+ _documentElementId: function(nodeId) |
+ { |
+ var node = WebInspector.domAgent.nodeForId(nodeId); |
+ if (!node) |
+ return null; |
+ return node.ownerDocumentElement().id; |
+ }, |
+ |
_fireStyleSheetChanged: function(styleSheetId, majorChange, callback) |
{ |
callback = callback || function() {}; |