Bug 1399314 - Introdue CssLogic.getCSSStyleRules to get style rules for ::before and ::after pseudo elements handy. r=bgrins
For pseudo elements, inIDOMUtils.getCSSStyleRules needs to take the parent element of the pseudo element and pseudo name. This new function wraps inIDOMUtils.getCSSStyleRules so that we can get style rules for pseudo elements handy. MozReview-Commit-ID: LRQBdiizoL7
This commit is contained in:
@@ -14,7 +14,10 @@ const {
|
|||||||
} = require("devtools/shared/layout/utils");
|
} = require("devtools/shared/layout/utils");
|
||||||
const defer = require("devtools/shared/defer");
|
const defer = require("devtools/shared/defer");
|
||||||
const {Task} = require("devtools/shared/task");
|
const {Task} = require("devtools/shared/task");
|
||||||
const {isContentStylesheet} = require("devtools/shared/inspector/css-logic");
|
const {
|
||||||
|
isContentStylesheet,
|
||||||
|
getCSSStyleRules
|
||||||
|
} = require("devtools/shared/inspector/css-logic");
|
||||||
const DOMUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
|
const DOMUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
|
||||||
const loader = Cc["@mozilla.org/moz/jssubscript-loader;1"]
|
const loader = Cc["@mozilla.org/moz/jssubscript-loader;1"]
|
||||||
.getService(Ci.mozIJSSubScriptLoader);
|
.getService(Ci.mozIJSSubScriptLoader);
|
||||||
@@ -777,7 +780,7 @@ var TestActor = exports.TestActor = protocol.ActorClassWithSpec(testSpec, {
|
|||||||
*/
|
*/
|
||||||
getStyleSheetsInfoForNode: function (selector) {
|
getStyleSheetsInfoForNode: function (selector) {
|
||||||
let node = this._querySelector(selector);
|
let node = this._querySelector(selector);
|
||||||
let domRules = DOMUtils.getCSSStyleRules(node);
|
let domRules = getCSSStyleRules(node);
|
||||||
|
|
||||||
let sheets = [];
|
let sheets = [];
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const { AutoRefreshHighlighter } = require("./auto-refresh");
|
const { AutoRefreshHighlighter } = require("./auto-refresh");
|
||||||
const { CanvasFrameAnonymousContentHelper, getCSSStyleRules, getComputedStyle,
|
const { CanvasFrameAnonymousContentHelper, getComputedStyle,
|
||||||
createSVGNode, createNode } = require("./utils/markup");
|
createSVGNode, createNode } = require("./utils/markup");
|
||||||
const { setIgnoreLayoutChanges, getAdjustedQuads } = require("devtools/shared/layout/utils");
|
const { setIgnoreLayoutChanges, getAdjustedQuads } = require("devtools/shared/layout/utils");
|
||||||
|
const { getCSSStyleRules } = require("devtools/shared/inspector/css-logic");
|
||||||
|
|
||||||
const GEOMETRY_LABEL_SIZE = 6;
|
const GEOMETRY_LABEL_SIZE = 6;
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
const { CanvasFrameAnonymousContentHelper, getCSSStyleRules,
|
const { CanvasFrameAnonymousContentHelper,
|
||||||
createSVGNode, createNode, getComputedStyle } = require("./utils/markup");
|
createSVGNode, createNode, getComputedStyle } = require("./utils/markup");
|
||||||
const { setIgnoreLayoutChanges, getCurrentZoom,
|
const { setIgnoreLayoutChanges, getCurrentZoom,
|
||||||
getAdjustedQuads } = require("devtools/shared/layout/utils");
|
getAdjustedQuads } = require("devtools/shared/layout/utils");
|
||||||
@@ -17,6 +17,7 @@ const {
|
|||||||
clickedOnPoint
|
clickedOnPoint
|
||||||
} = require("devtools/server/actors/utils/shapes-geometry-utils");
|
} = require("devtools/server/actors/utils/shapes-geometry-utils");
|
||||||
const EventEmitter = require("devtools/shared/old-event-emitter");
|
const EventEmitter = require("devtools/shared/old-event-emitter");
|
||||||
|
const { getCSSStyleRules } = require("devtools/shared/inspector/css-logic");
|
||||||
|
|
||||||
const BASE_MARKER_SIZE = 5;
|
const BASE_MARKER_SIZE = 5;
|
||||||
// the width of the area around highlighter lines that can be clicked, in px
|
// the width of the area around highlighter lines that can be clicked, in px
|
||||||
|
|||||||
@@ -30,9 +30,6 @@ exports.addPseudoClassLock = (...args) =>
|
|||||||
exports.removePseudoClassLock = (...args) =>
|
exports.removePseudoClassLock = (...args) =>
|
||||||
lazyContainer.DOMUtils.removePseudoClassLock(...args);
|
lazyContainer.DOMUtils.removePseudoClassLock(...args);
|
||||||
|
|
||||||
exports.getCSSStyleRules = (...args) =>
|
|
||||||
lazyContainer.DOMUtils.getCSSStyleRules(...args);
|
|
||||||
|
|
||||||
const SVG_NS = "http://www.w3.org/2000/svg";
|
const SVG_NS = "http://www.w3.org/2000/svg";
|
||||||
const XHTML_NS = "http://www.w3.org/1999/xhtml";
|
const XHTML_NS = "http://www.w3.org/1999/xhtml";
|
||||||
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ const DevToolsUtils = require("devtools/shared/DevToolsUtils");
|
|||||||
const nodeConstants = require("devtools/shared/dom-node-constants");
|
const nodeConstants = require("devtools/shared/dom-node-constants");
|
||||||
const {
|
const {
|
||||||
getBindingElementAndPseudo,
|
getBindingElementAndPseudo,
|
||||||
|
getCSSStyleRules,
|
||||||
l10n,
|
l10n,
|
||||||
isContentStylesheet,
|
isContentStylesheet,
|
||||||
shortSource,
|
shortSource,
|
||||||
@@ -544,11 +545,7 @@ CssLogic.prototype = {
|
|||||||
STATUS.MATCHED : STATUS.PARENT_MATCH;
|
STATUS.MATCHED : STATUS.PARENT_MATCH;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Handle finding rules on pseudo by reading style rules
|
domRules = getCSSStyleRules(element);
|
||||||
// on the parent node with proper pseudo arg to getCSSStyleRules.
|
|
||||||
let {bindingElement, pseudo} =
|
|
||||||
CssLogic.getBindingElementAndPseudo(element);
|
|
||||||
domRules = domUtils.getCSSStyleRules(bindingElement, pseudo);
|
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
console.log("CL__buildMatchedRules error: " + ex);
|
console.log("CL__buildMatchedRules error: " + ex);
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
const { getRootBindingParent } = require("devtools/shared/layout/utils");
|
const { getRootBindingParent } = require("devtools/shared/layout/utils");
|
||||||
const { getTabPrefs } = require("devtools/shared/indentation");
|
const { getTabPrefs } = require("devtools/shared/indentation");
|
||||||
|
const { Ci, Cc } = require("chrome");
|
||||||
|
|
||||||
const MAX_DATA_URL_LENGTH = 40;
|
const MAX_DATA_URL_LENGTH = 40;
|
||||||
|
|
||||||
@@ -498,3 +499,16 @@ function getBindingElementAndPseudo(node) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
exports.getBindingElementAndPseudo = getBindingElementAndPseudo;
|
exports.getBindingElementAndPseudo = getBindingElementAndPseudo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns css style rules for a given a node.
|
||||||
|
* This function can handle ::before or ::after pseudo element as well as
|
||||||
|
* normal element.
|
||||||
|
*/
|
||||||
|
function getCSSStyleRules(node) {
|
||||||
|
const DOMUtils =
|
||||||
|
Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
|
||||||
|
let { bindingElement, pseudo } = getBindingElementAndPseudo(node);
|
||||||
|
return DOMUtils.getCSSStyleRules(bindingElement, pseudo);
|
||||||
|
}
|
||||||
|
exports.getCSSStyleRules = getCSSStyleRules;
|
||||||
|
|||||||
Reference in New Issue
Block a user