Bug 1292574 - make CSS a global rather than a module in devtools loader; r?gregtatum draft
authorTom Tromey <tom@tromey.com>
Fri, 05 Aug 2016 08:32:59 -0600
changeset 397222 5b0037627be9b64835093d34bd6385163059ca74
parent 396825 df49168e76be8d13d1d1c57798cb95923fcff329
child 397259 e645bcccb971a8641f7a3738cb57adbbabcfc794
child 397361 a5f811d534b97a542deddffa1296712ff5f5f3ab
push id25241
push userbmo:ttromey@mozilla.com
push dateFri, 05 Aug 2016 14:34:05 +0000
reviewersgregtatum
bugs1292574
milestone51.0a1
Bug 1292574 - make CSS a global rather than a module in devtools loader; r?gregtatum MozReview-Commit-ID: 5RYwDAW4wxt
devtools/.eslintrc
devtools/client/inspector/inspector-panel.js
devtools/client/inspector/markup/markup.js
devtools/server/actors/inspector.js
devtools/server/actors/styles.js
devtools/server/css-logic.js
devtools/shared/builtin-modules.js
devtools/shared/css-parsing-utils.js
devtools/shared/inspector/css-logic.js
--- a/devtools/.eslintrc
+++ b/devtools/.eslintrc
@@ -5,16 +5,17 @@
   "globals": {
     "atob": true,
     "btoa": true,
     "Components": true,
     "CSSRule": true,
     "clearInterval": true,
     "clearTimeout": true,
     "console": true,
+    "CSS": true,
     "DOMParser": true,
     "dump": true,
     "exports": true,
     "isWorker": true,
     "loader": true,
     "module": true,
     "reportError": true,
     "require": true,
--- a/devtools/client/inspector/inspector-panel.js
+++ b/devtools/client/inspector/inspector-panel.js
@@ -20,18 +20,16 @@ var {KeyShortcuts} = require("devtools/c
 var {Task} = require("devtools/shared/task");
 const {initCssProperties} = require("devtools/shared/fronts/css-properties");
 const nodeConstants = require("devtools/shared/dom-node-constants");
 const Telemetry = require("devtools/client/shared/telemetry");
 
 const Menu = require("devtools/client/framework/menu");
 const MenuItem = require("devtools/client/framework/menu-item");
 
-const CSS = require("CSS");
-
 const {CommandUtils} = require("devtools/client/shared/developer-toolbar");
 const {ComputedViewTool} = require("devtools/client/inspector/computed/computed");
 const {FontInspector} = require("devtools/client/inspector/fonts/fonts");
 const {HTMLBreadcrumbs} = require("devtools/client/inspector/breadcrumbs");
 const {InspectorSearch} = require("devtools/client/inspector/inspector-search");
 const {MarkupView} = require("devtools/client/inspector/markup/markup");
 const {RuleViewTool} = require("devtools/client/inspector/rules/rules");
 const {ToolSidebar} = require("devtools/client/inspector/toolsidebar");
--- a/devtools/client/inspector/markup/markup.js
+++ b/devtools/client/inspector/markup/markup.js
@@ -56,17 +56,16 @@ const {KeyShortcuts} = require("devtools
 const {template} = require("devtools/shared/gcli/templater");
 const nodeConstants = require("devtools/shared/dom-node-constants");
 const nodeFilterConstants = require("devtools/shared/dom-node-filter-constants");
 /* eslint-disable mozilla/reject-some-requires */
 const {XPCOMUtils} = require("resource://gre/modules/XPCOMUtils.jsm");
 /* eslint-enable mozilla/reject-some-requires */
 const {getCssProperties} = require("devtools/shared/fronts/css-properties");
 
-const CSS = require("CSS");
 const {AutocompletePopup} = require("devtools/client/shared/autocomplete-popup");
 
 XPCOMUtils.defineLazyModuleGetter(this, "PluralForm",
   "resource://gre/modules/PluralForm.jsm");
 
 /**
  * Vocabulary for the purposes of this file:
  *
--- a/devtools/server/actors/inspector.js
+++ b/devtools/server/actors/inspector.js
@@ -71,18 +71,16 @@ const {
   isNativeAnonymous,
   isXBLAnonymous,
   isShadowAnonymous,
   getFrameElement
 } = require("devtools/shared/layout/utils");
 const {getLayoutChangesObserver, releaseLayoutChangesObserver} = require("devtools/server/actors/layout");
 const nodeFilterConstants = require("devtools/shared/dom-node-filter-constants");
 
-loader.lazyRequireGetter(this, "CSS", "CSS");
-
 const {EventParsers} = require("devtools/server/event-parsers");
 const {nodeSpec, nodeListSpec, walkerSpec, inspectorSpec} = require("devtools/shared/specs/inspector");
 
 const FONT_FAMILY_PREVIEW_TEXT = "The quick brown fox jumps over the lazy dog";
 const FONT_FAMILY_PREVIEW_TEXT_SIZE = 20;
 const PSEUDO_CLASSES = [":hover", ":active", ":focus"];
 const HIDDEN_CLASS = "__fx-devtools-hide-shortcut__";
 const XHTML_NS = "http://www.w3.org/1999/xhtml";
--- a/devtools/server/actors/styles.js
+++ b/devtools/server/actors/styles.js
@@ -13,17 +13,16 @@ const {parseDeclarations} = require("dev
 const {isCssPropertyKnown} = require("devtools/server/actors/css-properties");
 const {Task} = require("devtools/shared/task");
 const events = require("sdk/event/core");
 
 // This will also add the "stylesheet" actor type for protocol.js to recognize
 const {UPDATE_PRESERVING_RULES, UPDATE_GENERAL} = require("devtools/server/actors/stylesheets");
 const {pageStyleSpec, styleRuleSpec, ELEMENT_STYLE} = require("devtools/shared/specs/styles");
 
-loader.lazyRequireGetter(this, "CSS", "CSS");
 loader.lazyGetter(this, "CssLogic", () => require("devtools/server/css-logic").CssLogic);
 loader.lazyGetter(this, "SharedCssLogic", () => require("devtools/shared/inspector/css-logic"));
 loader.lazyGetter(this, "DOMUtils", () => Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils));
 
 loader.lazyGetter(this, "PSEUDO_ELEMENTS", () => {
   return DOMUtils.getCSSPseudoElementNames();
 });
 
--- a/devtools/server/css-logic.js
+++ b/devtools/server/css-logic.js
@@ -30,20 +30,16 @@
 "use strict";
 
 const { Cc, Ci, Cu } = require("chrome");
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 const { getRootBindingParent } = require("devtools/shared/layout/utils");
 const nodeConstants = require("devtools/shared/dom-node-constants");
 const {l10n, isContentStylesheet, shortSource, FILTER, STATUS} = require("devtools/shared/inspector/css-logic");
 
-// This should be ok because none of the functions that use this should be used
-// on the worker thread, where Cu is not available.
-loader.lazyRequireGetter(this, "CSS", "CSS");
-
 loader.lazyRequireGetter(this, "CSSLexer", "devtools/shared/css-lexer");
 
 /**
  * @param {function} isInherited A function that determines if the CSS property
  *                   is inherited.
  */
 function CssLogic(isInherited) {
   // The cache of examined CSS properties.
--- a/devtools/shared/builtin-modules.js
+++ b/devtools/shared/builtin-modules.js
@@ -212,23 +212,16 @@ defineLazyGetter(exports.modules, "index
                    {wantGlobalProperties: ["indexedDB"]});
     return sandbox.indexedDB;
 
   } catch (e) {
     return {};
   }
 });
 
-defineLazyGetter(exports.modules, "CSS", () => {
-  let sandbox
-    = Cu.Sandbox(CC("@mozilla.org/systemprincipal;1", "nsIPrincipal")(),
-                 {wantGlobalProperties: ["CSS"]});
-  return sandbox.CSS;
-});
-
 defineLazyGetter(exports.modules, "FileReader", () => {
   let sandbox
     = Cu.Sandbox(CC("@mozilla.org/systemprincipal;1", "nsIPrincipal")(),
                  {wantGlobalProperties: ["FileReader"]});
   return sandbox.FileReader;
 });
 
 // List of all custom globals exposed to devtools modules.
@@ -288,8 +281,14 @@ defineLazyGetter(globals, "clearInterval
 });
 defineLazyGetter(globals, "setInterval", () => {
   return Cu.import("resource://gre/modules/Timer.jsm", {}).setInterval;
 });
 defineLazyGetter(globals, "CSSRule", () => Ci.nsIDOMCSSRule);
 defineLazyGetter(globals, "DOMParser", () => {
   return CC("@mozilla.org/xmlextras/domparser;1", "nsIDOMParser");
 });
+defineLazyGetter(globals, "CSS", () => {
+  let sandbox
+    = Cu.Sandbox(CC("@mozilla.org/systemprincipal;1", "nsIPrincipal")(),
+                 {wantGlobalProperties: ["CSS"]});
+  return sandbox.CSS;
+});
--- a/devtools/shared/css-parsing-utils.js
+++ b/devtools/shared/css-parsing-utils.js
@@ -9,17 +9,16 @@
 // parseDeclarations - parse a CSS rule into declarations
 // RuleRewriter - rewrite CSS rule text
 // parsePseudoClassesAndAttributes - parse selector and extract
 //     pseudo-classes
 // parseSingleValue - parse a single CSS property value
 
 "use strict";
 
-loader.lazyRequireGetter(this, "CSS", "CSS");
 const promise = require("promise");
 const {getCSSLexer} = require("devtools/shared/css-lexer");
 const {Task} = require("devtools/shared/task");
 
 const SELECTOR_ATTRIBUTE = exports.SELECTOR_ATTRIBUTE = 1;
 const SELECTOR_ELEMENT = exports.SELECTOR_ELEMENT = 2;
 const SELECTOR_PSEUDO_CLASS = exports.SELECTOR_PSEUDO_CLASS = 3;
 
--- a/devtools/shared/inspector/css-logic.js
+++ b/devtools/shared/inspector/css-logic.js
@@ -37,20 +37,16 @@
  * helps them understand:
  * - why their expectations may not have been fulfilled
  * - how browsers process CSS
  * @constructor
  */
 
 const Services = require("Services");
 
-// This should be ok because none of the functions that use this should be used
-// on the worker thread, where Cu is not available.
-loader.lazyRequireGetter(this, "CSS", "CSS");
-
 loader.lazyRequireGetter(this, "CSSLexer", "devtools/shared/css-lexer");
 
 /**
  * Special values for filter, in addition to an href these values can be used
  */
 exports.FILTER = {
   // show properties for all user style sheets.
   USER: "user",