merge fx-team to mozilla-central a=merge
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Fri, 22 Jul 2016 11:56:37 +0200
changeset 346193 81539328348ac4b64ec580c45e825353d00e96d8
parent 346171 35921a0c3857a29f4bfb37be6e34e681820af4d9 (current diff)
parent 346192 0c5094d6f5d13d671cccee6c343f87cab54243e3 (diff)
child 346263 e0bc88708ffed39aaab1fbc0ac461d93561195de
push id6389
push userraliiev@mozilla.com
push dateMon, 19 Sep 2016 13:38:22 +0000
treeherdermozilla-beta@01d67bfe6c81 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone50.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
merge fx-team to mozilla-central a=merge
devtools/client/inspector/inspector-panel.js
mobile/android/base/moz.build
mobile/android/moz.configure
--- a/addon-sdk/source/lib/dev/panel.js
+++ b/addon-sdk/source/lib/dev/panel.js
@@ -159,16 +159,20 @@ validate.define(Panel, contract({
     map: x => resolve(x.toString()),
     is: ["string"],
     ok: x => isLocalURL(x),
     msg: "The `options.url` must be a valid local URI."
   },
   invertIconForLightTheme: {
     is: ["boolean", "undefined"],
     msg: "The `options.invertIconForLightTheme` must be a boolean."
+  },
+  invertIconForDarkTheme: {
+    is: ["boolean", "undefined"],
+    msg: "The `options.invertIconForDarkTheme` must be a boolean."
   }
 }));
 
 setup.define(Panel, (panel, {window, toolbox, url}) => {
   // Hack: Given that iframe created by devtools API is no good for us,
   // we obtain original iframe and replace it with the one that has
   // desired configuration.
   const original = getFrameElement(window);
--- a/addon-sdk/source/lib/dev/toolbox.js
+++ b/addon-sdk/source/lib/dev/toolbox.js
@@ -37,27 +37,28 @@ const Tool = Class({
   setup: function(params={}) {
     const { panels } = validate(this, params);
     const { themes } = validate(this, params);
 
     this.panels = panels;
     this.themes = themes;
 
     each(([key, Panel]) => {
-      const { url, label, tooltip, icon,
-             invertIconForLightTheme } = validate(Panel.prototype);
+      const { url, label, tooltip, icon, invertIconForLightTheme,
+              invertIconForDarkTheme } = validate(Panel.prototype);
       const { id } = Panel.prototype;
 
       gDevTools.registerTool({
         id: id,
         url: "about:blank",
         label: label,
         tooltip: tooltip,
         icon: icon,
         invertIconForLightTheme: invertIconForLightTheme,
+        invertIconForDarkTheme: invertIconForDarkTheme,
         isTargetSupported: target => target.isLocalTab,
         build: (window, toolbox) => {
           const panel = new Panel();
           setup(panel, { window: window,
                          toolbox: toolbox,
                          url: url });
 
           return panel.ready();
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -1879,16 +1879,17 @@
                                              userContextId: aParams.userContextId});
             }
 
             let notificationbox = this.getNotificationBox(browser);
             let uniqueId = this._generateUniquePanelID();
             notificationbox.id = uniqueId;
             aTab.linkedPanel = uniqueId;
             aTab.linkedBrowser = browser;
+            aTab.hasBrowser = true;
             this._tabForBrowser.set(browser, aTab);
 
             // Inject the <browser> into the DOM if necessary.
             if (!notificationbox.parentNode) {
               // NB: this appendChild call causes us to run constructors for the
               // browser element, which fires off a bunch of notifications. Some
               // of those notifications can cause code to run that inspects our
               // state, so it is important that the tab element is fully
@@ -4465,16 +4466,17 @@
           this.mPanelContainer.childNodes[0].id = uniqueId;
           this.mCurrentTab.linkedPanel = uniqueId;
           this.mCurrentTab.permanentKey = this.mCurrentBrowser.permanentKey;
           this.mCurrentTab._tPos = 0;
           this.mCurrentTab._fullyOpen = true;
           this.mCurrentTab.lastAccessed = Infinity;
           this.mCurrentTab.cachePosition = 0;
           this.mCurrentTab.linkedBrowser = this.mCurrentBrowser;
+          this.mCurrentTab.hasBrowser = true;
           this._tabForBrowser.set(this.mCurrentBrowser, this.mCurrentTab);
 
           // set up the shared autoscroll popup
           this._autoScrollPopup = this.mCurrentBrowser._createAutoScrollPopup();
           this._autoScrollPopup.id = "autoscroller";
           this.appendChild(this._autoScrollPopup);
           this.mCurrentBrowser.setAttribute("autoscrollpopup", this._autoScrollPopup.id);
           this.mCurrentBrowser.droppedLinkHandler = handleDroppedLink;
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -2786,27 +2786,27 @@ ContentPermissionPrompt.prototype = {
 
     var requestingPrincipal = request.principal;
     var requestingURI = requestingPrincipal.URI;
 
     // Ignore requests from non-nsIStandardURLs
     if (!(requestingURI instanceof Ci.nsIStandardURL))
       return;
 
-    var autoAllow = false;
     var permissionKey = kFeatureKeys[perm.type];
     var result = Services.perms.testExactPermissionFromPrincipal(requestingPrincipal, permissionKey);
 
     if (result == Ci.nsIPermissionManager.DENY_ACTION) {
       request.cancel();
       return;
     }
 
     if (result == Ci.nsIPermissionManager.ALLOW_ACTION) {
-      autoAllow = true;
+      request.allow();
+      return;
     }
 
     var browser = this._getBrowserForRequest(request);
     var chromeWin = browser.ownerGlobal;
     if (!chromeWin.PopupNotifications)
       // Ignore requests from browsers hosted in windows that don't support
       // PopupNotifications.
       return;
--- a/devtools/client/definitions.js
+++ b/devtools/client/definitions.js
@@ -58,17 +58,17 @@ var Tools = {};
 exports.Tools = Tools;
 
 // Definitions
 Tools.options = {
   id: "options",
   ordinal: 0,
   url: "chrome://devtools/content/framework/toolbox-options.xhtml",
   icon: "chrome://devtools/skin/images/tool-options.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   bgTheme: "theme-body",
   label: l10n("options.label", toolboxStrings),
   iconOnly: true,
   panelLabel: l10n("options.panelLabel", toolboxStrings),
   tooltip: l10n("optionsButton.tooltip", toolboxStrings),
   inMenu: false,
 
   isTargetSupported: function () {
@@ -82,17 +82,17 @@ Tools.options = {
 
 Tools.inspector = {
   id: "inspector",
   accesskey: l10n("inspector.accesskey", inspectorStrings),
   key: l10n("inspector.commandkey", inspectorStrings),
   ordinal: 1,
   modifiers: osString == "Darwin" ? "accel,alt" : "accel,shift",
   icon: "chrome://devtools/skin/images/tool-inspector.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/inspector/inspector.xul",
   label: l10n("inspector.label", inspectorStrings),
   panelLabel: l10n("inspector.panelLabel", inspectorStrings),
   get tooltip() {
     return l10n("inspector.tooltip2", inspectorStrings,
     (osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+") + this.key);
   },
   inMenu: true,
@@ -118,17 +118,17 @@ Tools.inspector = {
 
 Tools.webConsole = {
   id: "webconsole",
   key: l10n("cmd.commandkey", webConsoleStrings),
   accesskey: l10n("webConsoleCmd.accesskey", webConsoleStrings),
   modifiers: Services.appinfo.OS == "Darwin" ? "accel,alt" : "accel,shift",
   ordinal: 2,
   icon: "chrome://devtools/skin/images/tool-webconsole.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/webconsole/webconsole.xul",
   label: l10n("ToolboxTabWebconsole.label", webConsoleStrings),
   menuLabel: l10n("MenuWebconsole.label", webConsoleStrings),
   panelLabel: l10n("ToolboxWebConsole.panelLabel", webConsoleStrings),
   get tooltip() {
     return l10n("ToolboxWebconsole.tooltip2", webConsoleStrings,
     (osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+") + this.key);
   },
@@ -156,17 +156,17 @@ Tools.webConsole = {
 
 Tools.jsdebugger = {
   id: "jsdebugger",
   key: l10n("debuggerMenu.commandkey", debuggerStrings),
   accesskey: l10n("debuggerMenu.accesskey", debuggerStrings),
   modifiers: osString == "Darwin" ? "accel,alt" : "accel,shift",
   ordinal: 3,
   icon: "chrome://devtools/skin/images/tool-debugger.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   highlightedicon: "chrome://devtools/skin/images/tool-debugger-paused.svg",
   url: "chrome://devtools/content/debugger/debugger.xul",
   label: l10n("ToolboxDebugger.label", debuggerStrings),
   panelLabel: l10n("ToolboxDebugger.panelLabel", debuggerStrings),
   get tooltip() {
     return l10n("ToolboxDebugger.tooltip2", debuggerStrings,
     (osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+") + this.key);
   },
@@ -185,17 +185,17 @@ Tools.jsdebugger = {
 Tools.styleEditor = {
   id: "styleeditor",
   key: l10n("open.commandkey", styleEditorStrings),
   ordinal: 4,
   visibilityswitch: "devtools.styleeditor.enabled",
   accesskey: l10n("open.accesskey", styleEditorStrings),
   modifiers: "shift",
   icon: "chrome://devtools/skin/images/tool-styleeditor.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/styleeditor/styleeditor.xul",
   label: l10n("ToolboxStyleEditor.label", styleEditorStrings),
   panelLabel: l10n("ToolboxStyleEditor.panelLabel", styleEditorStrings),
   get tooltip() {
     return l10n("ToolboxStyleEditor.tooltip3", styleEditorStrings,
     "Shift+" + functionkey(this.key));
   },
   inMenu: true,
@@ -210,17 +210,17 @@ Tools.styleEditor = {
   }
 };
 
 Tools.shaderEditor = {
   id: "shadereditor",
   ordinal: 5,
   visibilityswitch: "devtools.shadereditor.enabled",
   icon: "chrome://devtools/skin/images/tool-shadereditor.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/shadereditor/shadereditor.xul",
   label: l10n("ToolboxShaderEditor.label", shaderEditorStrings),
   panelLabel: l10n("ToolboxShaderEditor.panelLabel", shaderEditorStrings),
   tooltip: l10n("ToolboxShaderEditor.tooltip", shaderEditorStrings),
 
   isTargetSupported: function (target) {
     return target.hasActor("webgl") && !target.chrome;
   },
@@ -230,17 +230,17 @@ Tools.shaderEditor = {
   }
 };
 
 Tools.canvasDebugger = {
   id: "canvasdebugger",
   ordinal: 6,
   visibilityswitch: "devtools.canvasdebugger.enabled",
   icon: "chrome://devtools/skin/images/tool-canvas.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/canvasdebugger/canvasdebugger.xul",
   label: l10n("ToolboxCanvasDebugger.label", canvasDebuggerStrings),
   panelLabel: l10n("ToolboxCanvasDebugger.panelLabel", canvasDebuggerStrings),
   tooltip: l10n("ToolboxCanvasDebugger.tooltip", canvasDebuggerStrings),
 
   // Hide the Canvas Debugger in the Add-on Debugger and Browser Toolbox
   // (bug 1047520).
   isTargetSupported: function (target) {
@@ -251,17 +251,17 @@ Tools.canvasDebugger = {
     return new CanvasDebuggerPanel(iframeWindow, toolbox);
   }
 };
 
 Tools.performance = {
   id: "performance",
   ordinal: 7,
   icon: "chrome://devtools/skin/images/tool-profiler.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   highlightedicon: "chrome://devtools/skin/images/tool-profiler-active.svg",
   url: "chrome://devtools/content/performance/performance.xul",
   visibilityswitch: "devtools.performance.enabled",
   label: l10n("performance.label", performanceStrings),
   panelLabel: l10n("performance.panelLabel", performanceStrings),
   get tooltip() {
     return l10n("performance.tooltip", performanceStrings,
     "Shift+" + functionkey(this.key));
@@ -279,42 +279,42 @@ Tools.performance = {
     return new PerformancePanel(frame, target);
   }
 };
 
 Tools.memory = {
   id: "memory",
   ordinal: 8,
   icon: "chrome://devtools/skin/images/tool-memory.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   highlightedicon: "chrome://devtools/skin/images/tool-memory-active.svg",
   url: "chrome://devtools/content/memory/memory.xhtml",
   visibilityswitch: "devtools.memory.enabled",
   label: l10n("memory.label", memoryStrings),
   panelLabel: l10n("memory.panelLabel", memoryStrings),
   tooltip: l10n("memory.tooltip", memoryStrings),
 
   isTargetSupported: function (target) {
-    return target.getTrait("heapSnapshots");
+    return target.getTrait("heapSnapshots") && !target.isAddon;
   },
 
   build: function (frame, target) {
     return new MemoryPanel(frame, target);
   }
 };
 
 Tools.netMonitor = {
   id: "netmonitor",
   accesskey: l10n("netmonitor.accesskey", netMonitorStrings),
   key: l10n("netmonitor.commandkey", netMonitorStrings),
   ordinal: 9,
   modifiers: osString == "Darwin" ? "accel,alt" : "accel,shift",
   visibilityswitch: "devtools.netmonitor.enabled",
   icon: "chrome://devtools/skin/images/tool-network.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/netmonitor/netmonitor.xul",
   label: l10n("netmonitor.label", netMonitorStrings),
   panelLabel: l10n("netmonitor.panelLabel", netMonitorStrings),
   get tooltip() {
     return l10n("netmonitor.tooltip2", netMonitorStrings,
     (osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+") + this.key);
   },
   inMenu: true,
@@ -331,17 +331,17 @@ Tools.netMonitor = {
 Tools.storage = {
   id: "storage",
   key: l10n("storage.commandkey", storageStrings),
   ordinal: 10,
   accesskey: l10n("storage.accesskey", storageStrings),
   modifiers: "shift",
   visibilityswitch: "devtools.storage.enabled",
   icon: "chrome://devtools/skin/images/tool-storage.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/storage/storage.xul",
   label: l10n("storage.label", storageStrings),
   menuLabel: l10n("storage.menuLabel", storageStrings),
   panelLabel: l10n("storage.panelLabel", storageStrings),
   get tooltip() {
     return l10n("storage.tooltip3", storageStrings,
     "Shift+" + functionkey(this.key));
   },
@@ -357,17 +357,17 @@ Tools.storage = {
   }
 };
 
 Tools.webAudioEditor = {
   id: "webaudioeditor",
   ordinal: 11,
   visibilityswitch: "devtools.webaudioeditor.enabled",
   icon: "chrome://devtools/skin/images/tool-webaudio.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/webaudioeditor/webaudioeditor.xul",
   label: l10n("ToolboxWebAudioEditor1.label", webAudioEditorStrings),
   panelLabel: l10n("ToolboxWebAudioEditor1.panelLabel", webAudioEditorStrings),
   tooltip: l10n("ToolboxWebAudioEditor1.tooltip", webAudioEditorStrings),
 
   isTargetSupported: function (target) {
     return !target.chrome && target.hasActor("webaudio");
   },
@@ -377,17 +377,17 @@ Tools.webAudioEditor = {
   }
 };
 
 Tools.scratchpad = {
   id: "scratchpad",
   ordinal: 12,
   visibilityswitch: "devtools.scratchpad.enabled",
   icon: "chrome://devtools/skin/images/tool-scratchpad.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/scratchpad/scratchpad.xul",
   label: l10n("scratchpad.label", scratchpadStrings),
   panelLabel: l10n("scratchpad.panelLabel", scratchpadStrings),
   tooltip: l10n("scratchpad.tooltip", scratchpadStrings),
   inMenu: false,
   commands: "devtools/client/scratchpad/scratchpad-commands",
 
   isTargetSupported: function (target) {
@@ -402,17 +402,17 @@ Tools.scratchpad = {
 Tools.dom = {
   id: "dom",
   accesskey: l10n("dom.accesskey", domStrings),
   key: l10n("dom.commandkey", domStrings),
   ordinal: 13,
   modifiers: osString == "Darwin" ? "accel,alt" : "accel,shift",
   visibilityswitch: "devtools.dom.enabled",
   icon: "chrome://devtools/skin/images/tool-dom.svg",
-  invertIconForLightTheme: true,
+  invertIconForDarkTheme: true,
   url: "chrome://devtools/content/dom/dom.html",
   label: l10n("dom.label", domStrings),
   panelLabel: l10n("dom.panelLabel", domStrings),
   get tooltip() {
     return l10n("dom.tooltip", domStrings,
     (osString == "Darwin" ? "Cmd+Opt+" : "Ctrl+Shift+") + this.key);
   },
   inMenu: true,
--- a/devtools/client/framework/toolbox.js
+++ b/devtools/client/framework/toolbox.js
@@ -1098,17 +1098,19 @@ Toolbox.prototype = {
     // the devtools-tab class replaces the radio XBL binding with its base
     // binding (the control-item binding).
     radio.className = "devtools-tab";
     radio.id = "toolbox-tab-" + id;
     radio.setAttribute("toolid", id);
     radio.setAttribute("ordinal", toolDefinition.ordinal);
     radio.setAttribute("tooltiptext", toolDefinition.tooltip);
     if (toolDefinition.invertIconForLightTheme) {
-      radio.setAttribute("icon-invertable", "true");
+      radio.setAttribute("icon-invertable", "light-theme");
+    } else if (toolDefinition.invertIconForDarkTheme) {
+      radio.setAttribute("icon-invertable", "dark-theme");
     }
 
     radio.addEventListener("command", () => {
       this.selectTool(id);
     });
 
     // spacer lets us center the image and label, while allowing cropping
     let spacer = this.doc.createElement("spacer");
--- a/devtools/client/inspector/inspector-panel.js
+++ b/devtools/client/inspector/inspector-panel.js
@@ -94,18 +94,17 @@ function InspectorPanel(iframeWindow, to
   this._handleRejectionIfNotDestroyed = this._handleRejectionIfNotDestroyed.bind(this);
   this._onBeforeNavigate = this._onBeforeNavigate.bind(this);
   this.onNewRoot = this.onNewRoot.bind(this);
   this._onContextMenu = this._onContextMenu.bind(this);
   this._updateSearchResultsLabel = this._updateSearchResultsLabel.bind(this);
   this.onNewSelection = this.onNewSelection.bind(this);
   this.onBeforeNewSelection = this.onBeforeNewSelection.bind(this);
   this.onDetached = this.onDetached.bind(this);
-  this.onPaneToggleButtonActivated = this.onPaneToggleButtonActivated.bind(this);
-  this.onPaneToggleButtonPressed = this.onPaneToggleButtonPressed.bind(this);
+  this.onPaneToggleButtonClicked = this.onPaneToggleButtonClicked.bind(this);
   this._onMarkupFrameLoad = this._onMarkupFrameLoad.bind(this);
 
   let doc = this.panelDoc;
 
   // Handle 'Add Node' toolbar button.
   this.addNode = this.addNode.bind(this);
   this.addNodeButton = doc.getElementById("inspector-element-add-button");
   this.addNodeButton.addEventListener("click", this.addNode);
@@ -459,66 +458,75 @@ InspectorPanel.prototype = {
         strings.GetStringFromName("inspector.sidebar.fontInspectorTitle"),
         defaultTab == "fontinspector");
 
       this.fontInspector = new FontInspector(this, this.panelWin);
       this.sidebar.toggleTab(true, "fontinspector");
     }
 
     this.setupSidebarToggle();
-    this.setupSidebarWidth();
+    this.setupSidebarSize();
 
     this.sidebar.show(defaultTab);
   },
 
   /**
-   * Sidebar width is currently driven by vbox.inspector-sidebar-container
-   * element, which is located at the left side of the side bar splitter.
-   * It's width is changed by the splitter and stored into preferences.
+   * Sidebar size is currently driven by vbox.inspector-sidebar-container
+   * element, which is located at the left/bottom side of the side bar splitter.
+   * Its size is changed by the splitter and stored into preferences.
    * As soon as bug 1260552 is fixed and new HTML based splitter in place
-   * the width can be driven by div.inspector-sidebar element. This element
-   * represents the ToolSidebar and so, the entire logic related to width
+   * the size can be driven by div.inspector-sidebar element. This element
+   * represents the ToolSidebar and so, the entire logic related to size
    * persistence can be done inside the ToolSidebar.
    */
-  setupSidebarWidth: function () {
+  setupSidebarSize: function () {
     let sidePaneContainer = this.panelDoc.querySelector(
       "#inspector-sidebar-container");
 
     this.sidebar.on("show", () => {
       try {
         sidePaneContainer.width = Services.prefs.getIntPref(
           "devtools.toolsidebar-width.inspector");
+        sidePaneContainer.height = Services.prefs.getIntPref(
+          "devtools.toolsidebar-height.inspector");
       } catch (e) {
         // The default width is the min-width set in CSS
         // for #inspector-sidebar-container
+        // Set width and height of the sidebar container. Only one
+        // value is really useful at a time depending on the current
+        // toolbox orientation and having both doesn't break anything.
         sidePaneContainer.width = 450;
+        sidePaneContainer.height = 450;
       }
     });
 
     this.sidebar.on("hide", () => {
       Services.prefs.setIntPref("devtools.toolsidebar-width.inspector",
         sidePaneContainer.width);
+      Services.prefs.setIntPref("devtools.toolsidebar-height.inspector",
+        sidePaneContainer.height);
     });
 
     this.sidebar.on("destroy", () => {
       Services.prefs.setIntPref("devtools.toolsidebar-width.inspector",
         sidePaneContainer.width);
+      Services.prefs.setIntPref("devtools.toolsidebar-height.inspector",
+        sidePaneContainer.height);
     });
   },
 
   /**
    * Add the expand/collapse behavior for the sidebar panel.
    */
   setupSidebarToggle: function () {
     let SidebarToggle = this.React.createFactory(this.browserRequire(
       "devtools/client/shared/components/sidebar-toggle"));
 
     let sidebarToggle = SidebarToggle({
-      onClick: this.onPaneToggleButtonActivated,
-      onKeyDown: this.onPaneToggleButtonPressed,
+      onClick: this.onPaneToggleButtonClicked,
       collapsed: false,
       expandPaneTitle: strings.GetStringFromName("inspector.expandPane"),
       collapsePaneTitle: strings.GetStringFromName("inspector.collapsePane"),
     });
 
     let parentBox = this.panelDoc.getElementById("inspector-sidebar-toggle-box");
     this._sidebarToggle = this.ReactDOM.render(sidebarToggle, parentBox);
   },
@@ -1203,47 +1211,33 @@ InspectorPanel.prototype = {
     }
 
     this._markupBox = null;
 
     return destroyPromise;
   },
 
   /**
-  * When the pane toggle button is pressed with space and return keys toggle
-  * the pane, change the button state and tooltip.
-  */
-  onPaneToggleButtonPressed: function (event) {
-    if (ViewHelpers.isSpaceOrReturn(event)) {
-      this.onPaneToggleButtonActivated(event);
-    }
-  },
-
-  /**
-   * When the pane toggle button is clicked, toggle the pane, change the button
+   * When the pane toggle button is clicked or pressed, toggle the pane, change the button
    * state and tooltip.
    */
-  onPaneToggleButtonActivated: function (e) {
+  onPaneToggleButtonClicked: function (e) {
     let sidePaneContainer = this.panelDoc.querySelector("#inspector-sidebar-container");
     let isVisible = !this._sidebarToggle.state.collapsed;
-    let sidePane = this.panelDoc.querySelector(
-      "#inspector-sidebar .devtools-sidebar-tabs");
 
     // Make sure the sidebar has width and height attributes before collapsing
     // because ViewHelpers needs it.
     if (isVisible) {
       let rect = sidePaneContainer.getBoundingClientRect();
       if (!sidePaneContainer.hasAttribute("width")) {
         sidePaneContainer.setAttribute("width", rect.width);
-        sidePane.style.width = rect.width + "px";
       }
       // always refresh the height attribute before collapsing, it could have
       // been modified by resizing the container.
       sidePaneContainer.setAttribute("height", rect.height);
-      sidePane.style.height = rect.height + "px";
     }
 
     let onAnimationDone = () => {
       if (isVisible) {
         this._sidebarToggle.setState({collapsed: true});
       } else {
         this._sidebarToggle.setState({collapsed: false});
       }
--- a/devtools/client/preferences/devtools.js
+++ b/devtools/client/preferences/devtools.js
@@ -97,17 +97,17 @@ pref("devtools.debugger.promise", false)
 pref("devtools.debugger.ui.panes-workers-and-sources-width", 200);
 pref("devtools.debugger.ui.panes-instruments-width", 300);
 pref("devtools.debugger.ui.panes-visible-on-startup", false);
 pref("devtools.debugger.ui.variables-sorting-enabled", true);
 pref("devtools.debugger.ui.variables-only-enum-visible", false);
 pref("devtools.debugger.ui.variables-searchbox-visible", false);
 
 // Enable the Memory tools
-pref("devtools.memory.enabled", false);
+pref("devtools.memory.enabled", true);
 
 pref("devtools.memory.custom-census-displays", "{}");
 pref("devtools.memory.custom-label-displays", "{}");
 pref("devtools.memory.custom-tree-map-displays", "{}");
 
 pref("devtools.memory.max-individuals", 1000);
 pref("devtools.memory.max-retaining-paths", 10);
 
--- a/devtools/client/responsive.html/images/close.svg
+++ b/devtools/client/responsive.html/images/close.svg
@@ -1,11 +1,6 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="16px" height="16px" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#F5F5F5;}
-</style>
-<path class="st0" d="M9.1,9.2l4.6-4.6c0.3-0.3,0.3-0.6,0-0.9c-0.3-0.3-0.6-0.3-0.9,0L8.2,8.3L3.6,3.7C3.4,3.5,3,3.5,2.7,3.7
-	s-0.3,0.6,0,0.9l4.6,4.6l-4.6,4.6c-0.3,0.3-0.3,0.6,0,0.9s0.6,0.3,0.9,0l4.6-4.6l4.6,4.6c0.3,0.3,0.6,0.3,0.9,0
-	c0.3-0.3,0.3-0.6,0-0.9L9.1,9.2z"/>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="#0b0b0b">
+  <path d="M6.7 8l3.6-3.6c.2-.2.2-.5 0-.7-.2-.2-.5-.2-.7 0L6 7.3 2.4 3.7c-.2-.2-.5-.2-.7 0-.2.2-.2.5 0 .7L5.3 8l-3.6 3.6c-.2.2-.2.5 0 .7.2.2.5.2.7 0L6 8.7l3.6 3.6c.2.2.5.2.7 0 .2-.2.2-.5 0-.7L6.7 8z"/>
 </svg>
--- a/devtools/client/responsive.html/images/rotate-viewport.svg
+++ b/devtools/client/responsive.html/images/rotate-viewport.svg
@@ -1,16 +1,6 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="16px" height="16px" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#BABEC3;}
-</style>
-<path class="st0" d="M3.8,13.4c-1.2,0-3.4-0.6-3.7-2.8s1.3-3.3,2.1-3.5C2.4,7,2.6,7.2,2.7,7.4c0.1,0.2-0.1,0.4-0.3,0.5
-	c-0.1,0-1.8,0.6-1.6,2.7c0.2,1.5,1.6,1.9,2.4,2l-0.7-2.4c0-0.2,0.2-0.5,0.4-0.5c0.2-0.1,0.4,0,0.5,0.2l0.9,3c0,0.1,0,0.3-0.1,0.4
-	C4.1,13.4,4,13.4,3.8,13.4z"/>
-<path class="st0" d="M12.3,1.7c1.2,0,3.4,0.6,3.7,2.8c0.3,2.2-1.3,3.3-2.1,3.5c-0.2,0.1-0.4-0.1-0.5-0.3s0.1-0.4,0.3-0.5
-	c0.1,0,1.8-0.6,1.6-2.7c-0.2-1.5-1.6-1.9-2.4-2l0.7,2.4c0.1,0.2-0.1,0.4-0.3,0.5s-0.4-0.1-0.5-0.3l-0.9-3c0-0.1,0-0.3,0.1-0.4
-	C12,1.7,12.3,1.7,12.3,1.7z"/>
-<path class="st0" d="M9.6,2.5L4.3,4.1C4.1,4.2,3.9,4.5,4,4.9l2.5,8c0.1,0.3,0.4,0.6,0.8,0.5l5.2-1.6c0.3-0.1,0.6-0.5,0.4-0.8l-2.5-8
-	C10.4,2.9,9.7,2.4,9.6,2.5z M12.1,11.1l-5,1.5l-0.6-1.9l5-1.5L12.1,11.1z M11.3,8.5l-5,1.5L4.7,4.7l5-1.5L11.3,8.5z"/>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
+  <path d="M3.8 13.4c-1.2 0-3.4-.6-3.7-2.8s1.3-3.3 2.1-3.5c.2-.1.4.1.5.3.1.2-.1.4-.3.5-.1 0-1.8.6-1.6 2.7.2 1.5 1.6 1.9 2.4 2l-.7-2.4c0-.2.2-.5.4-.5.2-.1.4 0 .5.2l.9 3c0 .1 0 .3-.1.4-.1.1-.2.1-.4.1zM12.3 1.7c1.2 0 3.4.6 3.7 2.8.3 2.2-1.3 3.3-2.1 3.5-.2.1-.4-.1-.5-.3s.1-.4.3-.5c.1 0 1.8-.6 1.6-2.7-.2-1.5-1.6-1.9-2.4-2l.7 2.4c.1.2-.1.4-.3.5s-.4-.1-.5-.3l-.9-3c0-.1 0-.3.1-.4h.3zM9.6 2.5L4.3 4.1c-.2.1-.4.4-.3.8l2.5 8c.1.3.4.6.8.5l5.2-1.6c.3-.1.6-.5.4-.8l-2.5-8c0-.1-.7-.6-.8-.5zm2.5 8.6l-5 1.5-.6-1.9 5-1.5.6 1.9zm-.8-2.6l-5 1.5-1.6-5.3 5-1.5 1.6 5.3z"/>
 </svg>
--- a/devtools/client/responsive.html/images/screenshot.svg
+++ b/devtools/client/responsive.html/images/screenshot.svg
@@ -1,13 +1,7 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="16px" height="16px" viewBox="0 0 16 16" style="enable-background:new 0 0 16 16;" xml:space="preserve">
-<style type="text/css">
-	.st0{fill:#F5F5F5;}
-</style>
-<path class="st0" d="M14.4,4.1h-3l0-1.3c0-0.9-1.2-1.6-2.1-1.6H6.6c-0.9,0-1.9,0.7-1.9,1.6l0,1.3h-3c-0.9,0-1.6,0.7-1.6,1.6v7.4
-	c0,0.9,0.7,1.3,1.6,1.3h12.7c0.9,0,1.6-0.3,1.6-1.3V5.7C16,4.8,15.3,4.1,14.4,4.1z M14.8,13.2H1.2v-8h4.5l0-3h4.5l0,3h4.4L14.8,13.2
-	z"/>
-<path class="st0" d="M8,6.7c-1.3,0-2.4,1.1-2.4,2.4s1.1,2.4,2.4,2.4s2.4-1.1,2.4-2.4S9.3,6.7,8,6.7z M8,10.2c-0.7,0-1.2-0.5-1.2-1.1
-	S7.3,8,8,8s1.2,0.5,1.2,1.1S8.7,10.2,8,10.2z"/>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="#0b0b0b">
+  <path d="M14.4,4.1h-3l0-1.3c0-0.9-1.2-1.6-2.1-1.6H6.6c-0.9,0-1.9,0.7-1.9,1.6l0,1.3h-3c-0.9,0-1.6,0.7-1.6,1.6v7.4c0,0.9,0.7,1.3,1.6,1.3h12.7c0.9,0,1.6-0.3,1.6-1.3V5.7C16,4.8,15.3,4.1,14.4,4.1z M14.8,13.2H1.2v-8h4.5l0-3h4.5l0,3h4.4L14.8,13.2z"/>
+  <path d="M8,6.7c-1.3,0-2.4,1.1-2.4,2.4s1.1,2.4,2.4,2.4s2.4-1.1,2.4-2.4S9.3,6.7,8,6.7z M8,10.2c-0.7,0-1.2-0.5-1.2-1.1S7.3,8,8,8s1.2,0.5,1.2,1.1S8.7,10.2,8,10.2z"/>
 </svg>
--- a/devtools/client/responsive.html/images/touch-events.svg
+++ b/devtools/client/responsive.html/images/touch-events.svg
@@ -1,9 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
-  <style type="text/css">
-    .st0{fill:#F5F5F5;}
-  </style>
-  <path class="st0" d="M12.5 5.3c-.2 0-.4 0-.6.1-.2-.6-.8-1-1.4-1-.3 0-.5.1-.8.2C9.4 4.2 9 4 8.6 4h-.4V1.5C8.2.7 7.5 0 6.7 0S5.2.7 5.2 1.5v6.6l-.7-.6c-.6-.6-1.6-.6-2.2 0-.5.6-.5 1.4-.1 2.1.3.4.6 1.1 1 1.8C4.2 13.6 5.3 16 7 16h3.9s3.1-1 3.1-4V6.7c.1-.8-.7-1.4-1.5-1.4zm.6 6.7c0 2-2.1 3-2.4 3H7c-1 0-2.1-2.4-2.9-4-.3-.8-.7-1.6-1-2-.2-.3-.2-.5-.1-.7.1-.1.2-.1.3-.1.1 0 .2 0 .3.1l1.5 1.5c.3.2.6.2.7.1.1 0 .4-.2.4-.5V1.5c0-.2.2-.4.5-.4s.5.2.5.4v5.3c0 .3.2.5.5.5s.5-.2.5-.5V5.5c0-.4.2-.5.5-.5.2 0 .5.2.5.4v2c-.1.3.2.6.4.6.3 0 .5-.2.5-.5V5.8c0-.2.2-.4.5-.4s.5.2.5.4v2.3c0 .3.2.5.5.5s.5-.2.5-.5V6.7c0-.2.2-.4.5-.4s.5.2.5.4V12z"/>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="#0b0b0b">
+  <path d="M12.5 5.3c-.2 0-.4 0-.6.1-.2-.6-.8-1-1.4-1-.3 0-.5.1-.8.2C9.4 4.2 9 4 8.6 4h-.4V1.5C8.2.7 7.5 0 6.7 0S5.2.7 5.2 1.5v6.6l-.7-.6c-.6-.6-1.6-.6-2.2 0-.5.6-.5 1.4-.1 2.1.3.4.6 1.1 1 1.8C4.2 13.6 5.3 16 7 16h3.9s3.1-1 3.1-4V6.7c.1-.8-.7-1.4-1.5-1.4zm.6 6.7c0 2-2.1 3-2.4 3H7c-1 0-2.1-2.4-2.9-4-.3-.8-.7-1.6-1-2-.2-.3-.2-.5-.1-.7.1-.1.2-.1.3-.1.1 0 .2 0 .3.1l1.5 1.5c.3.2.6.2.7.1.1 0 .4-.2.4-.5V1.5c0-.2.2-.4.5-.4s.5.2.5.4v5.3c0 .3.2.5.5.5s.5-.2.5-.5V5.5c0-.4.2-.5.5-.5.2 0 .5.2.5.4v2c-.1.3.2.6.4.6.3 0 .5-.2.5-.5V5.8c0-.2.2-.4.5-.4s.5.2.5.4v2.3c0 .3.2.5.5.5s.5-.2.5-.5V6.7c0-.2.2-.4.5-.4s.5.2.5.4V12z"/>
 </svg>
--- a/devtools/client/shared/components/reps/grip.js
+++ b/devtools/client/shared/components/reps/grip.js
@@ -34,28 +34,20 @@ define(function (require, exports, modul
       if (this.props.objectLink) {
         return this.props.objectLink({
           object: object
         }, object.class);
       }
       return object.class || "Object";
     },
 
-    longPropIterator: function (object) {
+    safePropIterator: function (object, max) {
+      max = (typeof max === "undefined") ? 3 : max;
       try {
-        return this.propIterator(object, 100);
-      } catch (err) {
-        console.error(err);
-      }
-      return [];
-    },
-
-    shortPropIterator: function (object) {
-      try {
-        return this.propIterator(object, 3);
+        return this.propIterator(object, max);
       } catch (err) {
         console.error(err);
       }
       return [];
     },
 
     propIterator: function (object, max) {
       // Property filter. Show only interesting properties to the user.
@@ -147,19 +139,18 @@ define(function (require, exports, modul
         console.error(err);
       }
 
       return props;
     },
 
     render: function () {
       let object = this.props.object;
-      let props = (this.props.mode == "long") ?
-        this.longPropIterator(object) :
-        this.shortPropIterator(object);
+      let props = this.safePropIterator(object,
+        (this.props.mode == "long") ? 100 : 3);
 
       let objectLink = this.props.objectLink || span;
       if (this.props.mode == "tiny" || !props.length) {
         return (
           ObjectBox({className: "object"},
             this.getTitle(object),
             objectLink({
               className: "objectLeftBrace",
--- a/devtools/client/shared/components/reps/object.js
+++ b/devtools/client/shared/components/reps/object.js
@@ -31,28 +31,20 @@ define(function (require, exports, modul
       if (this.props.objectLink) {
         return this.props.objectLink({
           object: object
         }, object.class);
       }
       return "Object";
     },
 
-    longPropIterator: function (object) {
+    safePropIterator: function (object, max) {
+      max = (typeof max === "undefined") ? 3 : max;
       try {
-        return this.propIterator(object, 100);
-      } catch (err) {
-        console.error(err);
-      }
-      return [];
-    },
-
-    shortPropIterator: function (object) {
-      try {
-        return this.propIterator(object, 3);
+        return this.propIterator(object, max);
       } catch (err) {
         console.error(err);
       }
       return [];
     },
 
     propIterator: function (object, max) {
       let isInterestingProp = (t, value) => {
@@ -136,17 +128,17 @@ define(function (require, exports, modul
         console.error(err);
       }
 
       return props;
     },
 
     render: function () {
       let object = this.props.object;
-      let props = this.shortPropIterator(object);
+      let props = this.safePropIterator(object);
       let objectLink = this.props.objectLink || span;
 
       if (this.props.mode == "tiny" || !props.length) {
         return (
           ObjectBox({className: "object"},
             objectLink({className: "objectTitle"}, this.getTitle())
           )
         );
--- a/devtools/client/shared/widgets/spectrum.css
+++ b/devtools/client/shared/widgets/spectrum.css
@@ -1,14 +1,15 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 #eyedropper-button {
   margin-inline-start: 5px;
+  display: block;
 }
 
 #eyedropper-button::before {
   background-image: url("chrome://devtools/skin/images/command-eyedropper.svg");
 }
 
 /* Mix-in classes */
 
--- a/devtools/client/styleeditor/styleeditor.css
+++ b/devtools/client/styleeditor/styleeditor.css
@@ -126,26 +126,8 @@ li:hover > hgroup > .stylesheet-more > h
     -moz-box-orient: horizontal;
     -moz-box-flex: 1;
   }
 
   .stylesheet-more > spacer {
     -moz-box-flex: 0;
   }
 }
-
-.csscoverage-report-container {
-  -moz-box-flex: 1;
-  overflow-x: hidden;
-  overflow-y: auto;
-}
-
-.csscoverage-report-content > * {
-  display: inline-block;
-}
-
-.csscoverage-report {
-  -moz-box-orient: horizontal;
-}
-
-.csscoverage-report .pie-table-chart-container {
-  -moz-box-orient: vertical;
-}
--- a/devtools/client/themes/firebug-theme.css
+++ b/devtools/client/themes/firebug-theme.css
@@ -7,33 +7,16 @@
 @import url(common.css);
 @import url(light-theme.css);
 
 :root {
   font-size: 11px;
   font-family: var(--proportional-font-family);
 }
 
-/* Remove filters on firebug specific images */
-
-.theme-firebug .devtools-tabbar .devtools-button::before,
-.theme-firebug .devtools-option-toolbarbutton > image,
-.theme-firebug .command-button-invertable::before,
-.theme-firebug #sources-toolbar image,
-.theme-firebug [id$="pane-toggle"] > image,
-.theme-firebug [id$="pane-toggle"]::before,
-.theme-firebug .sidebar-toggle::before,
-.theme-firebug #element-picker::before,
-.theme-firebug #rewind-timeline::before,
-.theme-firebug #pause-resume-timeline::before,
-.theme-firebug #debugger-controls .toolbarbutton-icon,
-.theme-firebug #filter-button .toolbarbutton-icon {
-  filter: none !important;
-}
-
 /* CodeMirror Color Syntax */
 
 .theme-firebug .cm-keyword {color: BlueViolet; font-weight: bold;}
 .theme-firebug .cm-atom {color: #219;}
 .theme-firebug .cm-number {color: #164;}
 .theme-firebug .cm-def {color: #00f;}
 .theme-firebug .cm-variable {color: black;}
 .theme-firebug .cm-variable-2 {color: black;}
--- a/devtools/client/themes/images/add.svg
+++ b/devtools/client/themes/images/add.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M8.5 8.5V14a.5.5 0 1 1-1 0V8.5H2a.5.5 0 0 1 0-1h5.5V2a.5.5 0 0 1 1 0v5.5H14a.5.5 0 1 1 0 1H8.5z"/>
 </svg>
index 9ce5dd74eb33658133583ec6374e977ee155910f..3eed133af4d706589203ee96f6bcb80b11a26c09
GIT binary patch
literal 213
zc$@*%04o29P)<h;3K|Lk000e1NJLTq000;O001xu1^@s63y8X-0001-Nkl<ZScUD@
zAx^|l6ouihNe!uM#y2=pF(iy^JqrMbf`r-s5>PnouXtwx=M(SdzRSqS$X|J=feDuy
znekX73!Z9Z#dD2pc&U*cw;DNXWWsBW%y_Sn1s^rC;;TkBeAmd1dySkm@;km6k^@Is
zo<4FqrYk<H@^n?qc&p0ub$yiO>6e*)`YWzgd3t!Ir(=Hn=I8s!$bZWZ1_%z2O=?fK
P00000NkvXXu0mjfCmmUC
index 5f28c8b22468d19f16acd8852e9156287592a5b4..19af4c042e5f2184d8101b4724586b9ce4ad7671
GIT binary patch
literal 260
zc$@(Q0sH=mP)<h;3K|Lk000e1NJLTq000gE000mO1^@s6CX`M(0002XNkl<ZD3QgI
z!485j5Jblq4?t)s-5Rh&5J+z(CLa87J`fLDXbBbL#YuXayk=*2fWND0nj%f2!5BkJ
z@636t;{B*|RGwjsp)`pG`&>`ws8qZk?VAk^=|V&(rw=8x3ss8s001EbccCmpZK1v>
zlnb>&TweyjT!?et&ZD2mg|td;(};`ljGN0FkFkfhke|V2KE>X_SMpJOxPOGdT2APO
zQc4}Vp(gSoq3gP1r~sD?^=bjEh)^yIU{xvBdj(k0E@W(Y+j;^hGEC=k(LWpj0000<
KMNUMnLSTZM-)D^g
index 22c3c8667a06175365d75c2055ef74a7fd17763b..04370240132d434144f80e168e1e668fc2573c98
GIT binary patch
literal 627
zc$@)q0*w8MP)<h;3K|Lk000e1NJLTq000~S001Be1^@s60ks%H0006yNkl<ZNQv#$
zF>4e-6bJBs+?&~*d2eTTF}Hh{Q$Ip11T8ESEhL3Do*)WI8iP6P1UW=)B&LvnHW7O(
zQ6#xeu$B0MEClgvaw%@#%-zP)y#CLRnR)LGa8mzG5hbh4rr$KzP4%lP)5AugoRZa)
z%qS%@YJyg&-fG)u+_uqpZj{;dCs-4-%Jgu8&5dSkZck$=nNd#3S}3=a=_k`z+eYIq
z>1}Vwxp;+)-miga@*sruGP_w)>rV}2^(KHh5p&iK04(@&-ON6eu#(j~Z*DQquQHpx
z`c=k{0i5z;F1cS)>vs(!^#MR6hH_4>h?q^DhOjfv+>@{l>(5@Sa_$nd`BLjhtDggC
z`LMHje5<6^uiBfD-oFEAG31=PC}AnvEda3(TPot45>}G>b^)+rs3?kMHu}>vM#j7j
zVZGCQt)kY?+N`nq?!^E=#^N1>LI5PJB=w^xkcDz0=;+ws!A!6$>AduQj^ds5btJyr
zxs0xR-tS-;pdjk&&{<96>(F4+9G$c<m!%nWY+oWU7M)D@r5UVPef5sTq<mY(Ci+<j
z^==u~doxiYx*_e+jLZ<B)n?U(xU^055x#9RDd*x9>06q$PkWi&l)k0lKAn{G@up-(
z1)E0*{20>5+qTho(W>{M+~G<2u7o;g2ccYt^$YQ&R_z8s0LUp>YYGBDm-P0rKmf2-
zZA@X|t2wNS)!Qj-t{ea?IA;e<ut~18YPTtN6h@#!XXL^idQ$&Ve*v4<0-ZPc<u?ET
N002ovPDHLkV1m7^E{^~J
--- a/devtools/client/themes/images/clear.svg
+++ b/devtools/client/themes/images/clear.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M5 3h3V2c0-.003-3 0-3 0-.002 0 0 1 0 1zm-5 .5A.5.5 0 0 1 .494 3h12.012a.5.5 0 0 1 0 1H.494A.502.502 0 0 1 0 3.5zM4 3V2c0-.553.444-1 1-1h3c.552 0 1 .443 1 1v1H4zM5 11V6a.5.5 0 0 0-1 0v5a.5.5 0 1 0 1 0zM7 11V6a.5.5 0 0 0-1 0v5a.5.5 0 1 0 1 0zM9 11V6a.5.5 0 0 0-1 0v5a.5.5 0 1 0 1 0z"/>
   <path d="M3 4v9h7V4H3zm0-1h7a1 1 0 0 1 1 1v9a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/>
 </svg>
--- a/devtools/client/themes/images/close.svg
+++ b/devtools/client/themes/images/close.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M6.7 8l3.6-3.6c.2-.2.2-.5 0-.7-.2-.2-.5-.2-.7 0L6 7.3 2.4 3.7c-.2-.2-.5-.2-.7 0-.2.2-.2.5 0 .7L5.3 8l-3.6 3.6c-.2.2-.2.5 0 .7.2.2.5.2.7 0L6 8.7l3.6 3.6c.2.2.5.2.7 0 .2-.2.2-.5 0-.7L6.7 8z"/>
 </svg>
--- a/devtools/client/themes/images/command-console.svg
+++ b/devtools/client/themes/images/command-console.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M6.8 9.7c0-.2 0-.3-.2-.4L4.9 7.6c-.3-.3-.7-.3-.9 0s-.3.6 0 .9l1.3 1.4L4 11.3c-.3.3-.3.6 0 .9s.6.3.9 0l1.8-1.8c.1-.2.2-.5.1-.7z"/>
   <path d="M14.2 2H1.8c-.4 0-.8.4-.8.9v11.2c0 .4.3.9.8.9h12.4c.4 0 .8-.4.8-.9V2.9c0-.7-.6-.9-.8-.9zM14 14H2V6h12v8zm0-9H2V3h12v2z"/>
 </svg>
--- a/devtools/client/themes/images/command-eyedropper.svg
+++ b/devtools/client/themes/images/command-eyedropper.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M8.3 2.9l4.9 4.9c.2.2.5.4.8.1.2-.2.1-.5-.1-.8L11.6 5l1.8-1.8c.2-.2.4-.5.1-.8-.2-.2-.5-.1-.8.1L11 4.3l-2.1-2c-.2-.3-.5-.4-.8-.2-.2.3-.1.6.2.8zM10.4 7.4l-6.1 6-2.4.8.7-2.4 6.2-6.1-.7-.7L2 11c-.1.1-.2.3-.2.4L1 13.7s-.1.7.1 1c.3.3.9.3 1.2.2l2.3-.8c.2-.1.3-.1.4-.3L11 8l-.6-.6z"/>
   <path opacity="0.5" d="M7.1 7.1l-4.2 3.8-1.4 3.5 2.9-.6 2.8-2.7z"/>
 </svg>
--- a/devtools/client/themes/images/command-frames.svg
+++ b/devtools/client/themes/images/command-frames.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M14.2 2H1.8c-.4 0-.8.4-.8.9v11.2c0 .4.3.9.8.9h12.4c.4 0 .8-.4.8-.9V2.9s-.6-.9-.8-.9zM8 14H2v-4h6v4zm6 0H9v-4h5v4zm0-5H2V3h12v6z"/>
 </svg>
--- a/devtools/client/themes/images/command-measure.svg
+++ b/devtools/client/themes/images/command-measure.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M1 11h14V6H1v5zm15 .2c0 .5-.4.8-.8.8H.8c-.4 0-.8-.4-.8-.8V5.8c0-.4.4-.8.8-.8h14.3c.5 0 .9.4.9.8v5.4z"/>
   <path d="M9 6v3c0 .2.3.4.5.4s.5-.2.5-.4V6H9zM13 6v3c0 .2.3.4.5.4.2-.1.5-.2.5-.4V6h-1zM5.1 5.7L4 6v2.8c0 .2.4.4.6.4s.5-.2.5-.4V5.7zM11 5v2.7c0 .2.3.4.5.4s.5-.2.5-.4V5h-1zM6 5.1v2.6c0 .2.5.4.7.4.2 0 .6-.2.6-.4l-.1-2.6H6zM2 5.1v2.6c0 .2.3.4.5.4s.5-.2.5-.4V5.1H2z"/>
 </svg>
--- a/devtools/client/themes/images/command-noautohide.svg
+++ b/devtools/client/themes/images/command-noautohide.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M2 1.99v4.02C2 6 2 6 1.99 6h4.02C6 6 6 6 6 6.01V1.99C6 2 6 2 6.01 2H1.99C2 2 2 2 2 1.99zm-1 0c0-.546.451-.99.99-.99h4.02c.546 0 .99.451.99.99v4.02c0 .546-.451.99-.99.99H1.99A.996.996 0 0 1 1 6.01V1.99zM10 1.99v4.02C10 6 10 6 9.99 6h4.02C14 6 14 6 14 6.01V1.99c0 .01 0 .01.01.01H9.99C10 2 10 2 10 1.99zm-1 0c0-.546.451-.99.99-.99h4.02c.546 0 .99.451.99.99v4.02c0 .546-.451.99-.99.99H9.99A.996.996 0 0 1 9 6.01V1.99zM10 9.99v4.02c0-.01 0-.01-.01-.01h4.02c-.01 0-.01 0-.01.01V9.99c0 .01 0 .01.01.01H9.99c.01 0 .01 0 .01-.01zm-1 0c0-.546.451-.99.99-.99h4.02c.546 0 .99.451.99.99v4.02c0 .546-.451.99-.99.99H9.99a.996.996 0 0 1-.99-.99V9.99zM2 9.99v4.02C2 14 2 14 1.99 14h4.02C6 14 6 14 6 14.01V9.99c0 .01 0 .01.01.01H1.99C2 10 2 10 2 9.99zm-1 0c0-.546.451-.99.99-.99h4.02c.546 0 .99.451.99.99v4.02c0 .546-.451.99-.99.99H1.99a.996.996 0 0 1-.99-.99V9.99z"/>
 </svg>
--- a/devtools/client/themes/images/command-paintflashing.svg
+++ b/devtools/client/themes/images/command-paintflashing.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M3 6.997v6.006c0-.006.003-.003.002-.003h9.996c-.001 0 .002-.003.002.003V6.997c0 .006-.003.003-.002.003H3.002C3.003 7 3 7.003 3 6.997zm-1 0C2 6.447 2.456 6 3.002 6h9.996C13.55 6 14 6.453 14 6.997v6.006c0 .55-.456.997-1.002.997H3.002A1.004 1.004 0 0 1 2 13.003V6.997zM8.5 4V1.5a.5.5 0 0 0-1 0V4H4a.5.5 0 0 0 0 1h8a.5.5 0 1 0 0-1H8.5z"/>
   <path fill-opacity=".3" d="M13 10v3H3v-3z"/>
 </svg>
--- a/devtools/client/themes/images/command-pick.svg
+++ b/devtools/client/themes/images/command-pick.svg
@@ -1,9 +1,9 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M15 7.667V3.002A1.01 1.01 0 0 0 13.993 2H2.007C1.45 2 1 2.449 1 3.002v9.996C1 13.544 1.45 14 2.007 14h6.818l-.37-1H2V3h12v4.334l1 .333z"/>
   <path fill-opacity=".3" d="M9 8l1.981 5.843 4.044-3.966z"/>
   <path d="M8.526 8.16l1.982 5.844a.5.5 0 0 0 .824.196l4.043-3.966a.5.5 0 0 0-.202-.835L9.15 7.523a.5.5 0 0 0-.623.638zm.948-.32l-.623.637 6.025 1.877-.201-.834-4.044 3.966.824.197-1.981-5.844z"/>
   <path d="M12.674 12.39l1.973 1.964a.5.5 0 1 0 .706-.708L13.38 11.68a.5.5 0 0 0-.706.709z"/>
 </svg>
--- a/devtools/client/themes/images/command-responsivemode.svg
+++ b/devtools/client/themes/images/command-responsivemode.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M11.1 2H3.8c-.4 0-.8.4-.8.9v11.2c0 .4.3.9.8.9h7.3c.4 0 .9-.4.9-.9V2.9s-.7-.9-.9-.9zM11 14H4v-3h7v3zm0-4H4V3h7v7z"/>
 </svg>
--- a/devtools/client/themes/images/command-rulers.svg
+++ b/devtools/client/themes/images/command-rulers.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M11.4 3c-.2 0-.4.2-.4.4v2.5c0 .2.3.4.5.4s.5-.2.5-.4V3.4c0-.2-.3-.4-.5-.4M13.5 3.2c-.2 0-.5.2-.5.4v1.5c0 .2.3.4.5.4s.5-.2.5-.4V3.6c0-.2-.3-.4-.5-.4M9.6 3.2c-.2 0-.6.2-.6.4v1.5c0 .2.3.4.6.4.2 0 .4-.2.4-.4V3.6c0-.2-.2-.4-.4-.4M7.4 3c-.2 0-.4.2-.4.4v2.5c0 .2.3.4.5.4s.5-.2.5-.4V3.4c0-.2-.2-.4-.6-.4M5.5 3.2c-.3 0-.5.2-.5.4v1.5c0 .2.3.4.5.4s.5-.2.5-.4V3.6c0-.2-.3-.4-.5-.4M4.3 8.5c0-.2-.2-.5-.4-.5H2.4c-.2 0-.4.3-.4.5s.2.5.4.5h1.5c.2 0 .4-.3.4-.5M4.3 12.5c0-.2-.2-.5-.4-.5H2.4c-.2 0-.4.3-.4.5s.2.5.4.5h1.5c.2 0 .4-.3.4-.5M5.1 10.5c0-.2-.2-.5-.4-.5H3.2c-.2 0-.4.3-.4.5s.2.5.4.5h1.5c.2 0 .4-.3.4-.5M5.1 6.5c0-.2-.2-.5-.4-.5H3.2c-.2 0-.4.3-.4.5s.2.5.4.5h1.5c.2 0 .4-.3.4-.5"/>
   <path d="M15.1 3H3.5C2.9 3 2 3.6 2 4.1V14c0 .6 1 1 1.5 1h3.2c.6 0 1.3-.5 1.3-1V9h7c.6 0 1-.4 1-.9v-4c0-1-.4-1.1-.9-1.1zM15 8H7.4c-.6 0-.5.1-.4 0v6H3V4h12v4z"/>
 </svg>
--- a/devtools/client/themes/images/command-scratchpad.svg
+++ b/devtools/client/themes/images/command-scratchpad.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M5 1.5a.5.5 0 0 0-1 0v2a.5.5 0 0 0 1 0v-2zM8.5 3.5v-2a.5.5 0 0 0-1 0v2a.5.5 0 0 0 1 0zM12 3.5v-2a.5.5 0 1 0-1 0v2a.5.5 0 1 0 1 0zM5 7h4a.5.5 0 0 0 0-1H5a.5.5 0 0 0 0 1zM5 11h2a.5.5 0 1 0 0-1H5a.5.5 0 1 0 0 1zM6 9h5a.5.5 0 1 0 0-1H6a.5.5 0 0 0 0 1z"/>
   <path d="M3 3.996v9.008c0-.003 0-.004.002-.004h9.996c-.001 0 .002-.003.002.004V3.996c0 .003 0 .004-.002.004H3.002C3.003 4 3 4.003 3 3.996zm-1 0C2 3.446 2.456 3 3.002 3h9.996A.998.998 0 0 1 14 3.996v9.008c0 .55-.456.996-1.002.996H3.002A.998.998 0 0 1 2 13.004V3.996z"/>
 </svg>
--- a/devtools/client/themes/images/command-screenshot.svg
+++ b/devtools/client/themes/images/command-screenshot.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M13.6 5H11V3.5C11 2.7 10 2 9.2 2H6.8C6 2 5 2.7 5 3.5V5H2.4C1.6 5 1 5.6 1 6.4v6.5c0 .8.6 1.1 1.4 1.1h11.2c.8 0 1.4-.3 1.4-1.1V6.4c0-.8-.6-1.4-1.4-1.4zm.4 8H2V6h4V3h4v3h3.9l.1 7z"/>
   <path d="M8 6.8c-1.3 0-2.4 1.1-2.4 2.4s1.1 2.4 2.4 2.4 2.4-1.1 2.4-2.4c0-1.3-1.1-2.4-2.4-2.4zm0 3.5c-.7 0-1.2-.5-1.2-1.1S7.3 8.1 8 8.1s1.2.5 1.2 1.1-.5 1.1-1.2 1.1z"/>
 </svg>
--- a/devtools/client/themes/images/debugger-blackbox.svg
+++ b/devtools/client/themes/images/debugger-blackbox.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <circle cx="8" cy="8.5" r="1.5"/>
   <path d="M15.498 8.28l-.001-.03v-.002-.004l-.002-.018-.004-.031c0-.002 0-.002 0 0l-.004-.035.006.082c-.037-.296-.133-.501-.28-.661-.4-.522-.915-1.042-1.562-1.604-1.36-1.182-2.74-1.975-4.178-2.309a6.544 6.544 0 0 0-2.755-.042c-.78.153-1.565.462-2.369.91C3.252 5.147 2.207 6 1.252 7.035c-.216.233-.36.398-.499.577-.338.437-.338 1 0 1.437.428.552.941 1.072 1.59 1.635 1.359 1.181 2.739 1.975 4.177 2.308.907.21 1.829.223 2.756.043.78-.153 1.564-.462 2.369-.91 1.097-.612 2.141-1.464 3.097-2.499.217-.235.36-.398.498-.578.12-.128.216-.334.248-.554 0 .01 0 .01-.008.04l.013-.079-.001.011.003-.031.001-.017v.005l.001-.02v.008l.002-.03.001-.05-.001-.044v-.004-.004zm-.954.045v.007l.001.004V8.33v.012l-.001.01v-.005-.005l.002-.015-.001.008c-.002.014-.002.014 0 0l-.007.084c.003-.057-.004-.041-.014-.031-.143.182-.27.327-.468.543-.89.963-1.856 1.752-2.86 2.311-.724.404-1.419.677-2.095.81a5.63 5.63 0 0 1-2.374-.036c-1.273-.295-2.523-1.014-3.774-2.101-.604-.525-1.075-1.001-1.457-1.496-.054-.07-.054-.107 0-.177.117-.152.244-.298.442-.512.89-.963 1.856-1.752 2.86-2.311.724-.404 1.419-.678 2.095-.81a5.631 5.631 0 0 1 2.374.036c1.272.295 2.523 1.014 3.774 2.101.603.524 1.074 1 1.457 1.496.035.041.043.057.046.076 0 .01 0 .01.008.043l-.009-.047.003.02-.002-.013v-.008.016c0-.004 0-.004 0 0v-.004z"/>
 </svg>
--- a/devtools/client/themes/images/debugger-prettyprint.svg
+++ b/devtools/client/themes/images/debugger-prettyprint.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M5.5 2C3.565 2 2.806 3.12 3.065 4.587c.239 1.346.117 1.76-.435 2.39l-.054.06c-.252.288-.39.474-.523.74L1.94 8l.112.224c.132.265.27.45.523.739l.054.06c.552.63.674 1.044.435 2.39C2.802 12.904 3.527 14 5.5 14a.5.5 0 1 0 0-1c-1.291 0-1.614-.487-1.45-1.413.292-1.65.081-2.37-.669-3.223l-.053-.06c-.2-.229-.296-.357-.38-.528v.448c.084-.17.18-.299.38-.528l.053-.06c.75-.854.961-1.573.67-3.223C3.89 3.515 4.24 3 5.5 3a.5.5 0 1 0 0-1zM10.5 3c1.26 0 1.609.515 1.45 1.413-.292 1.65-.081 2.37.669 3.223l.053.06c.2.229.296.357.38.528v-.448c-.084.17-.18.299-.38.528l-.053.06c-.75.854-.961 1.573-.67 3.223.165.926-.158 1.413-1.449 1.413a.5.5 0 1 0 0 1c1.973 0 2.698-1.096 2.435-2.587-.239-1.346-.117-1.76.435-2.39l.054-.06c.252-.288.39-.474.523-.74L14.06 8l-.112-.224c-.132-.265-.27-.45-.523-.739l-.054-.06c-.552-.63-.674-1.044-.435-2.39C13.194 3.12 12.435 2 10.5 2a.5.5 0 0 0 0 1z"/>
 </svg>
--- a/devtools/client/themes/images/debugger-step-in.svg
+++ b/devtools/client/themes/images/debugger-step-in.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M1.5 14.042h4.095a.5.5 0 0 0 0-1H1.5a.5.5 0 1 0 0 1zM7.5 3v6.983L4.364 6.657a.5.5 0 0 0-.728.686l4 4.243a.51.51 0 0 0 .021.02.5.5 0 0 0 .71-.024l3.997-4.239a.5.5 0 1 0-.728-.686L8.5 9.983V2.5a.5.5 0 0 0-.536-.5H1.536C1.24 2 1 2.224 1 2.5s.24.5.536.5H7.5zM10.5 14.042h4.095a.5.5 0 0 0 0-1H10.5a.5.5 0 1 0 0 1z"/>
 </svg>
--- a/devtools/client/themes/images/debugger-step-out.svg
+++ b/devtools/client/themes/images/debugger-step-out.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M5 13.5H1a.5.5 0 1 0 0 1h4a.5.5 0 1 0 0-1zM12 13.5H8a.5.5 0 1 0 0 1h4a.5.5 0 1 0 0-1zM6.11 5.012A.427.427 0 0 1 6.21 5h7.083L9.646 1.354a.5.5 0 1 1 .708-.708l4.5 4.5a.498.498 0 0 1 0 .708l-4.5 4.5a.5.5 0 0 1-.708-.708L13.293 6H6.5v5.5a.5.5 0 1 1-1 0v-6a.5.5 0 0 1 .61-.488z"/>
 </svg>
--- a/devtools/client/themes/images/debugger-step-over.svg
+++ b/devtools/client/themes/images/debugger-step-over.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M13.297 6.912C12.595 4.39 10.167 2.5 7.398 2.5A5.898 5.898 0 0 0 1.5 8.398a.5.5 0 0 0 1 0A4.898 4.898 0 0 1 7.398 3.5c2.75 0 5.102 2.236 5.102 4.898v.004L8.669 7.029a.5.5 0 0 0-.338.942l4.462 1.598a.5.5 0 0 0 .651-.34.506.506 0 0 0 .02-.043l2-5a.5.5 0 1 0-.928-.372l-1.24 3.098z"/>
   <circle cx="7" cy="12" r="1"/>
 </svg>
--- a/devtools/client/themes/images/debugger-toggleBreakpoints.svg
+++ b/devtools/client/themes/images/debugger-toggleBreakpoints.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="32" height="16" viewBox="0 0 32 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="32" height="16" viewBox="0 0 32 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M3.233 11.25l-.417 1H1.712C.763 12.25 0 11.574 0 10.747V6.503C0 5.675.755 5 1.712 5h4.127l-.417 1H1.597C1.257 6 1 6.225 1 6.503v4.244c0 .277.267.503.597.503h1.636zM7.405 11.02L7 12.056c.865.01 2.212-.024 2.315-.04.112-.016.112-.016.185-.035.075-.02.156-.046.251-.082.152-.056.349-.138.592-.244.415-.182.962-.435 1.612-.744l.138-.066a179.35 179.35 0 0 0 2.255-1.094c1.191-.546 1.191-2.074-.025-2.632l-.737-.34A3547.554 3547.554 0 0 0 9.732 5c-.029.11-.065.222-.11.336l-.232.596c.894.408 4.56 2.107 4.56 2.107.458.21.458.596 0 .806L9.197 11.02H7.405zM20.462 14.192l5-12a.5.5 0 0 0-.924-.384l-5 12a.5.5 0 0 0 .924.384zM19.233 11.25l-.417 1h-1.104c-.949 0-1.712-.676-1.712-1.503V6.503C16 5.675 16.755 5 17.712 5h4.127l-.417 1h-3.825c-.34 0-.597.225-.597.503v4.244c0 .277.267.503.597.503h1.636zM23.405 11.02L23 12.056c.865.01 2.212-.024 2.315-.04.112-.016.112-.016.185-.035.075-.02.156-.046.251-.082.152-.056.349-.138.592-.244.415-.182.962-.435 1.612-.744l.138-.066a179.35 179.35 0 0 0 2.255-1.094c1.191-.546 1.191-2.074-.025-2.632l-.737-.34A3547.554 3547.554 0 0 0 25.732 5c-.029.11-.065.222-.11.336l-.232.596c.894.408 4.56 2.107 4.56 2.107.458.21.458.596 0 .806l-4.753 2.174h-1.792z"/>
 </svg>
--- a/devtools/client/themes/images/diff.svg
+++ b/devtools/client/themes/images/diff.svg
@@ -1,9 +1,9 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M6 13A5 5 0 1 0 6 3a5 5 0 0 0 0 10zm0-.91a4.09 4.09 0 1 1 0-8.18 4.09 4.09 0 0 1 0 8.18z"/>
   <path d="M10 13a5 5 0 1 0 0-10 5 5 0 0 0 0 10zm0-.91a4.09 4.09 0 1 1 0-8.18 4.09 4.09 0 0 1 0 8.18z"/>
   <path d="M7.146 8.854l1 1a.5.5 0 0 0 .708-.708l-1-1a.5.5 0 1 0-.708.708zM7.146 6.854l1 1a.5.5 0 1 0 .708-.708l-1-1a.5.5 0 1 0-.708.708z"/>
   <path d="M12.656 11.723c-2.044 1.169-3.872 1.015-4.282.577-.41-.438 2.115-1.269 2.115-3.925 0-2.657-2.115-4.827-2.115-4.827s2.919-.47 4.282.624c1.364 1.094 2.12 1.975 1.85 3.828-.103.703.194 2.555-1.85 3.723z" fill-opacity=".3"/>
 </svg>
--- a/devtools/client/themes/images/dock-bottom.svg
+++ b/devtools/client/themes/images/dock-bottom.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M10.004 3H.996C.999 3 1 3 1 3.002v9.996c0-.001.003.002-.004.002h9.008c-.003 0-.004 0-.004-.002V3.002c0 .001-.003-.002.004-.002zm0-1c.55 0 .996.456.996 1.002v9.996A.998.998 0 0 1 10.004 14H.996C.446 14 0 13.544 0 12.998V3.002A.998.998 0 0 1 .996 2h9.008zm-.41 8H.996v1h9.01v-1h-.41z"/>
 </svg>
--- a/devtools/client/themes/images/dock-side.svg
+++ b/devtools/client/themes/images/dock-side.svg
@@ -1,3 +1,3 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M1 2.996v9.008c0-.003 0-.004.002-.004h9.996c-.001 0 .002-.003.002.004V2.996c0 .003 0 .004-.002.004H1.002C1.003 3 1 3.003 1 2.996zm-1 0C0 2.446.456 2 1.002 2h9.996A.998.998 0 0 1 12 2.996v9.008c0 .55-.456.996-1.002.996H1.002A.998.998 0 0 1 0 12.004V2.996zm8 .413V12h1V3H8v.41z"/>
 </svg>
--- a/devtools/client/themes/images/dock-undock.svg
+++ b/devtools/client/themes/images/dock-undock.svg
@@ -1,8 +1,8 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M13.003 1.941H6.997c.008 0 .003.004.003.008v6.102c0 .004.004.008-.003.008h6.006c-.008 0-.003-.004-.003-.008V1.949c0-.004-.004-.008.003-.008zm0-.941c.55 0 .997.43.997.95v6.1c0 .525-.453.95-.997.95H6.997C6.447 9 6 8.57 6 8.05v-6.1c0-.525.453-.95.997-.95h6.006z"/>
   <path d="M9 9.91v-.278h1v1.183c0 .516-.453.935-.997.935H2.997c-.55 0-.997-.43-.997-.95V4.7c0-.525.444-.95 1.006-.95h2.288v.941H3.006C3 4.691 3 4.691 3 4.7v6.102c0 .004.004.008-.003.008h6.006c-.004 0-.003-.001-.003.006v-.248-.657-.278h1v1.183c0 .516-.453.935-.997.935H2.997c-.55 0-.997-.43-.997-.95V4.7c0-.525.444-.95 1.006-.95h2.288v.941H3.006C3 4.691 3 4.691 3 4.7v6.102c0 .004.004.008-.003.008h6.006c-.004 0-.003-.001-.003.006v-.248-.657z"/>
   <path d="M12.52 5H6.976v1h6.046V5zM6.5 7H2.975v1H7V7z"/>
 </svg>
--- a/devtools/client/themes/images/fast-forward.svg
+++ b/devtools/client/themes/images/fast-forward.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M4 12.5l8-5-8-5v10zm-1 0v-10a1 1 0 0 1 1.53-.848l8 5a1 1 0 0 1 0 1.696l-8 5A1 1 0 0 1 3 12.5zM15 12.497l-.04-7.342-.01-1.658A.488.488 0 0 0 14.474 3a.488.488 0 0 0-.473.503l.05 9a.488.488 0 0 0 .477.497.488.488 0 0 0 .473-.503z"/>
 </svg>
--- a/devtools/client/themes/images/geometry-editor.svg
+++ b/devtools/client/themes/images/geometry-editor.svg
@@ -1,4 +1,7 @@
-<svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" fill="#babec3">
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M14,8 L12,8 L12,11.25 L12,12 L11.5,12 L3.5,12 L3,12 L3,11.75 L3,11.5 L3,8 L1,8 L1,8 L1,8.5 L1,9 L0,9 L0,8.5 L0,6.5 L0,6 L1,6 L1,6.5 L1,7 L3,7 L3,3.5 L3,3 L3.72222222,3 L3.72222222,3 L10.5555556,3 L11,3 L11,4 L10.5555556,4 L4,4 L4,11 L11,11 L11,3.5 L11,3 L12,3 L12,3.5 L12,7 L14,7 L14,6.5 L14,6 L15,6 L15,6.5 L15,8.5 L15,9 L14,9 L14,8.5 L14,8 Z M8,14 L8.5,14 L9,14 L9,15 L8.5,15 L6.5,15 L6,15 L6,14 L6.5,14 L7,14 L7,11.5 L7,11 L8,11 L8,11.5 L8,14 Z M7,1 L6.5,1 L6,1 L6,0 L6.5,0 L8.5,0 L9,0 L9,1 L8.5,1 L8,1 L8,3.5 L8,4 L7,4 L7,3.5 L7,1 L7,1 Z"/>
   <path d="M3.5,9 C4.32842712,9 5,8.32842712 5,7.5 C5,6.67157288 4.32842712,6 3.5,6 C2.67157288,6 2,6.67157288 2,7.5 C2,8.32842712 2.67157288,9 3.5,9 Z M7.5,13 C8.32842712,13 9,12.3284271 9,11.5 C9,10.6715729 8.32842712,10 7.5,10 C6.67157288,10 6,10.6715729 6,11.5 C6,12.3284271 6.67157288,13 7.5,13 Z M11.5,9 C12.3284271,9 13,8.32842712 13,7.5 C13,6.67157288 12.3284271,6 11.5,6 C10.6715729,6 10,6.67157288 10,7.5 C10,8.32842712 10.6715729,9 11.5,9 Z M7.5,5 C8.32842712,5 9,4.32842712 9,3.5 C9,2.67157288 8.32842712,2 7.5,2 C6.67157288,2 6,2.67157288 6,3.5 C6,4.32842712 6.67157288,5 7.5,5 Z"/>
 </svg>
\ No newline at end of file
--- a/devtools/client/themes/images/import.svg
+++ b/devtools/client/themes/images/import.svg
@@ -1,8 +1,8 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M7.864 1.417c-.123-.13-.305-.185-.48-.144-.173.04-.312.172-.363.343-.05.17-.007.357.116.487l4 4.243c.19.2.506.21.707.02.2-.188.21-.505.02-.706l-4-4.243z"/>
   <path d="M7.136 1.414l-4 4.243c-.19.2-.18.518.02.707.202.19.52.18.708-.02l4-4.244c.123-.13.166-.316.115-.487-.052-.17-.19-.302-.365-.343-.174-.04-.356.014-.48.144zM1.5 8c-.276 0-.5.224-.5.5v5c0 .2.224.5.5.5h12c.276 0 .5-.3.5-.5v-5c0-.276-.224-.5-.5-.5h-3c-.28 0-.5.224-.5.5s.22.5.5.5H13v4H2V9h2.5c.27 0 .5-.224.5-.5S4.77 8 4.5 8h-3z"/>
   <path d="M7 2v9c0 .276.224.5.5.5s.5-.224.5-.5V2c0-.276-.224-.5-.5-.5S7 1.724 7 2z"/>
 </svg>
--- a/devtools/client/themes/images/itemToggle.svg
+++ b/devtools/client/themes/images/itemToggle.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <circle cx="8" cy="8.5" r="1.5"/>
   <path d="M15.498 8.28l-.001-.03v-.002-.004l-.002-.018-.004-.031c0-.002 0-.002 0 0l-.004-.035.006.082c-.037-.296-.133-.501-.28-.661-.4-.522-.915-1.042-1.562-1.604-1.36-1.182-2.74-1.975-4.178-2.309a6.544 6.544 0 0 0-2.755-.042c-.78.153-1.565.462-2.369.91C3.252 5.147 2.207 6 1.252 7.035c-.216.233-.36.398-.499.577-.338.437-.338 1 0 1.437.428.552.941 1.072 1.59 1.635 1.359 1.181 2.739 1.975 4.177 2.308.907.21 1.829.223 2.756.043.78-.153 1.564-.462 2.369-.91 1.097-.612 2.141-1.464 3.097-2.499.217-.235.36-.398.498-.578.12-.128.216-.334.248-.554 0 .01 0 .01-.008.04l.013-.079-.001.011.003-.031.001-.017v.005l.001-.02v.008l.002-.03.001-.05-.001-.044v-.004-.004zm-.954.045v.007l.001.004V8.33v.012l-.001.01v-.005-.005l.002-.015-.001.008c-.002.014-.002.014 0 0l-.007.084c.003-.057-.004-.041-.014-.031-.143.182-.27.327-.468.543-.89.963-1.856 1.752-2.86 2.311-.724.404-1.419.677-2.095.81a5.63 5.63 0 0 1-2.374-.036c-1.273-.295-2.523-1.014-3.774-2.101-.604-.525-1.075-1.001-1.457-1.496-.054-.07-.054-.107 0-.177.117-.152.244-.298.442-.512.89-.963 1.856-1.752 2.86-2.311.724-.404 1.419-.678 2.095-.81a5.631 5.631 0 0 1 2.374.036c1.272.295 2.523 1.014 3.774 2.101.603.524 1.074 1 1.457 1.496.035.041.043.057.046.076 0 .01 0 .01.008.043l-.009-.047.003.02-.002-.013v-.008.016c0-.004 0-.004 0 0v-.004z"/>
 </svg>
--- a/devtools/client/themes/images/pane-collapse.svg
+++ b/devtools/client/themes/images/pane-collapse.svg
@@ -1,9 +1,9 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path fill-opacity=".3" d="M12 3h2v10h-2z"/>
   <path d="M2 3.002v9.996c0-.004.006.002.007.002h11.986c.005 0 .007-.002.007-.002V3.002c0 .004-.006-.002-.007-.002H2.007C2.002 3 2 3.002 2 3.002zm-1 0C1 2.45 1.45 2 2.007 2h11.986A1.01 1.01 0 0 1 15 3.002v9.996C15 13.55 14.55 14 13.993 14H2.007A1.01 1.01 0 0 1 1 12.998V3.002zm10 .453V13h1V3h-1v.455z"/>
   <path d="M5 10.25l3-1.875L5 6.5v3.75zm-1 0V6.5a1 1 0 0 1 1.53-.848l3 1.875a1 1 0 0 1 0 1.696l-3 1.875A1 1 0 0 1 4 10.25z"/>
   <path fill-opacity=".3" d="M4.5 10.75V6L9 8.375z"/>
 </svg>
--- a/devtools/client/themes/images/pane-expand.svg
+++ b/devtools/client/themes/images/pane-expand.svg
@@ -1,9 +1,9 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path fill-opacity=".3" d="M12 3h2v10h-2z"/>
   <path d="M2 3.002v9.996c0-.004.006.002.007.002h11.986c.005 0 .007-.002.007-.002V3.002c0 .004-.006-.002-.007-.002H2.007C2.002 3 2 3.002 2 3.002zm-1 0C1 2.45 1.45 2 2.007 2h11.986A1.01 1.01 0 0 1 15 3.002v9.996C15 13.55 14.55 14 13.993 14H2.007A1.01 1.01 0 0 1 1 12.998V3.002zm10 .453V13h1V3h-1v.455z"/>
   <path d="M8 6.5L5 8.375l3 1.875V6.5zm1 0v3.75a1 1 0 0 1-1.53.848l-3-1.875a1 1 0 0 1 0-1.696l3-1.875A1 1 0 0 1 9 6.5z"/>
   <path fill-opacity=".3" d="M8.5 6v4.75L4 8.375z"/>
 </svg>
--- a/devtools/client/themes/images/pause.svg
+++ b/devtools/client/themes/images/pause.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M5 12.503l.052-9a.5.5 0 0 0-1-.006l-.052 9a.5.5 0 0 0 1 .006zM12 12.497l-.05-9A.488.488 0 0 0 11.474 3a.488.488 0 0 0-.473.503l.05 9a.488.488 0 0 0 .477.497.488.488 0 0 0 .473-.503z"/>
 </svg>
--- a/devtools/client/themes/images/performance-icons.svg
+++ b/devtools/client/themes/images/performance-icons.svg
@@ -1,12 +1,12 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#0b0b0b">
   <style>
     g:not(:target) {
       display: none;
     }
   </style>
   <g id="overview-markers">
     <rect x="0" y="4" width="5" height="1"/>
     <rect x="7" y="4" width="9" height="1"/>
--- a/devtools/client/themes/images/play.svg
+++ b/devtools/client/themes/images/play.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M4 12.5l8-5-8-5v10zm-1 0v-10a1 1 0 0 1 1.53-.848l8 5a1 1 0 0 1 0 1.696l-8 5A1 1 0 0 1 3 12.5z" fill-rule="evenodd"/>
 </svg>
--- a/devtools/client/themes/images/power.svg
+++ b/devtools/client/themes/images/power.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M8 14.5a5.5 5.5 0 1 0 0-11 5.5 5.5 0 0 0 0 11zm0-1a4.5 4.5 0 1 1 0-9 4.5 4.5 0 0 1 0 9z"/>
   <path d="M8.5 7.5v-6a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/>
 </svg>
--- a/devtools/client/themes/images/profiler-stopwatch.svg
+++ b/devtools/client/themes/images/profiler-stopwatch.svg
@@ -1,11 +1,11 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <g fill-rule="evenodd">
     <path d="M15 9.004C14.51 12.394 11.578 15 8.035 15 4.15 15 1 11.866 1 8s3.15-7 7.036-7c1.941 0 3.7.783 4.972 2.048l-.709.709A6.027 6.027 0 0 0 8.036 2c-3.33 0-6.03 2.686-6.03 6s2.7 6 6.03 6a6.023 6.023 0 0 0 5.946-4.993l1.017-.003z"/>
     <path d="M4.137 9H3.1a5.002 5.002 0 0 0 9.8 0h-.965a4.023 4.023 0 0 1-3.9 3 4.023 4.023 0 0 1-3.898-3z" fill-opacity=".5"/>
     <path d="M8.036 11a2.994 2.994 0 0 0 2.987-3c0-1.657-1.338-3-2.987-3a2.994 2.994 0 0 0-2.988 3c0 1.657 1.338 3 2.988 3zm0-1c1.11 0 2.011-.895 2.011-2s-.9-2-2.011-2c-1.111 0-2.012.895-2.012 2s.9 2 2.012 2z"/>
     <path d="M10.354 6.354l4-4a.5.5 0 0 0-.708-.708l-4 4a.5.5 0 1 0 .708.708z"/>
   </g>
 </svg>
--- a/devtools/client/themes/images/pseudo-class.svg
+++ b/devtools/client/themes/images/pseudo-class.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="whitesmoke">
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="#0b0b0b">
   <path d="M11 7V5.5c0-.3-.2-.5-.5-.5h-5c-.3 0-.5.2-.5.5v5c0 .3.2.5.5.5h1.9V7.5c0-.3.2-.5.5-.5H11zM3 7H.8c-.1 0-.6 0-.7-.7-.1-.2-.1-.4-.1-.6v-5C0 .5 0 .3.2.1.4 0 .6 0 .7 0h5.2c.3 0 .6 0 .8.2.2.1.3.3.3.5V3H3v4zM1 6h1V2.7c0-.2.1-.4.2-.5.3-.2.6-.2.8-.2h3V1H1v5z"/>
   <path d="M9 9h1v1H9V9zm5 1h-1V9h1v1zm-2 0h-1V9h1v1zm3-1h1v1h-1V9zm1 5h-1v-1h1v1zm0-2h-1v-1h1v1zm-1 3h1v1h-1v-1zm-1 1h-1v-1h1v1zm-2 0h-1v-1h1v1zm-3-1h1v1H9v-1zm1-1H9v-1h1v1zm0-2H9v-1h1v1z"/>
 </svg>
--- a/devtools/client/themes/images/rewind.svg
+++ b/devtools/client/themes/images/rewind.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M13 2.5l-8 5 8 5v-10zm1 0v10a1 1 0 0 1-1.53.848l-8-5a1 1 0 0 1 0-1.696l8-5A1 1 0 0 1 14 2.5zM2 12.497l-.04-7.342-.01-1.658A.488.488 0 0 0 1.474 3 .488.488 0 0 0 1 3.503l.05 9a.488.488 0 0 0 .477.497.488.488 0 0 0 .473-.503z"/>
 </svg>
--- a/devtools/client/themes/images/tool-canvas.svg
+++ b/devtools/client/themes/images/tool-canvas.svg
@@ -1,9 +1,9 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <g fill-rule="evenodd">
     <path d="M1 2.007C1 1.45 1.45 1 2.007 1h11.986C14.55 1 15 1.45 15 2.007v11.986C15 14.55 14.55 15 13.993 15H2.007C1.45 15 1 14.55 1 13.993V2.007zM2 2h12v12H2V2z"/>
     <path d="M3 3h2v2H3zM11 3h2v2h-2zM7 3h2v2H7zM3 7h2v2H3zM11 7h2v2h-2zM7 7h2v2H7zM5 5h2v2H5zM9 5h2v2H9zM3 11h2v2H3zM11 11h2v2h-2zM7 11h2v2H7zM5 9h2v2H5zM9 9h2v2H9z" opacity="0.5"/>
   </g>
 </svg>
--- a/devtools/client/themes/images/tool-debugger.svg
+++ b/devtools/client/themes/images/tool-debugger.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M2 5v6c0 .109.039.342.144.553.15.297.374.447.856.447h9l-.78.375 4-5v1.25l-4-5L12 4H3c-.482 0-.707.15-.856.447A1.403 1.403 0 0 0 2 5zM1 5s0-2 2-2h9l4 5-4 5H3c-2 0-2-2-2-2V5z"/>
 </svg>
--- a/devtools/client/themes/images/tool-dom.svg
+++ b/devtools/client/themes/images/tool-dom.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M6.052 1.13L1.164 5.57a.5.5 0 0 0 0 .74l5 4.56a.5.5 0 0 0 .673-.74l-5-4.559v.74l4.887-4.44a.5.5 0 0 0-.672-.741zM10.948 14.87l4.888-4.44a.5.5 0 0 0 0-.74l-5-4.56a.5.5 0 1 0-.673.74l5 4.559v-.74l-4.887 4.44a.5.5 0 0 0 .672.741z"/>
 </svg>
--- a/devtools/client/themes/images/tool-inspector.svg
+++ b/devtools/client/themes/images/tool-inspector.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M3 3.995v8.01c0-.01.005-.005.002-.005h9.996c-.001 0 .002-.003.002.005v-8.01c0 .01-.005.005-.002.005H3.002C3.003 4 3 4.003 3 3.995zm-1 0C2 3.445 2.456 3 3.002 3h9.996C13.55 3 14 3.456 14 3.995v8.01c0 .55-.456.995-1.002.995H3.002A1.005 1.005 0 0 1 2 12.005v-8.01z"/>
   <path d="M8.5 3.5V2a.5.5 0 0 0-1 0v1.5a.5.5 0 0 0 1 0zM1 8.5h1a.5.5 0 0 0 0-1H1a.5.5 0 0 0 0 1zM14 8.5h1a.5.5 0 1 0 0-1h-1a.5.5 0 1 0 0 1zM8.5 14v-1.5a.5.5 0 1 0-1 0V14a.5.5 0 1 0 1 0z"/>
 </svg>
--- a/devtools/client/themes/images/tool-memory.svg
+++ b/devtools/client/themes/images/tool-memory.svg
@@ -1,10 +1,10 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M4.727 8.055l-1.96-1a.5.5 0 0 0-.573.083L.655 8.602a.5.5 0 1 0 .69.725l1.539-1.465-.572.083 1.96 1a.5.5 0 1 0 .455-.89z"/>
   <path d="M4.727 10.055l-1.96-1a.5.5 0 0 0-.573.083L.655 10.602a.5.5 0 1 0 .69.725l1.539-1.465-.572.083 1.96 1a.5.5 0 1 0 .455-.89zM11.727 10.945l1.961-1-.572-.083 1.54 1.465a.5.5 0 1 0 .689-.725l-1.54-1.464a.5.5 0 0 0-.571-.083l-1.961 1a.5.5 0 1 0 .454.89z"/>
   <path d="M11.727 8.945l1.961-1-.572-.083 1.54 1.465a.5.5 0 1 0 .689-.725l-1.54-1.464a.5.5 0 0 0-.571-.083l-1.961 1a.5.5 0 1 0 .454.89z"/>
   <path d="M11.727 6.945l1.961-1-.572-.083 1.54 1.465a.5.5 0 1 0 .689-.725l-1.54-1.464a.5.5 0 0 0-.571-.083l-1.961 1a.5.5 0 1 0 .454.89zM4.727 6.055l-1.96-1a.5.5 0 0 0-.573.083L.655 6.602a.5.5 0 1 0 .69.725l1.539-1.465-.572.083 1.96 1a.5.5 0 1 0 .455-.89z"/>
   <path d="M5 3.002v9.996c0-.001.003.002-.003.002h6.006c-.006 0-.003-.003-.003-.002V3.002c0 .001-.003-.002.003-.002H4.997c.006 0 .003.003.003.002zm-1 0C4 2.45 4.453 2 4.997 2h6.006c.55 0 .997.456.997 1.002v9.996c0 .553-.453 1.002-.997 1.002H4.997C4.447 14 4 13.544 4 12.998V3.002z"/>
 </svg>
--- a/devtools/client/themes/images/tool-network.svg
+++ b/devtools/client/themes/images/tool-network.svg
@@ -1,9 +1,9 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <rect fill-opacity=".5" x="2" y="3" width="8" height="1" rx=".5"/>
   <rect x="6" y="6" width="8" height="1" rx=".5"/>
   <rect fill-opacity=".5" x="4" y="9" width="8" height="1" rx=".5"/>
   <rect x="2" y="12" width="5" height="1" rx=".5"/>
 </svg>
--- a/devtools/client/themes/images/tool-options.svg
+++ b/devtools/client/themes/images/tool-options.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M8.513 3.416v-.918A.502.502 0 0 0 8.012 2h-.999c-.273 0-.5.226-.5.498V4.07l-.6.262c-.274.12-.534.27-.775.449l-.527.39-.567-.328-.796-.46a.502.502 0 0 0-.682.185l-.5.864a.504.504 0 0 0 .182.683l.795.46.567.326-.073.65a4.055 4.055 0 0 0 0 .898l.073.65-.567.327-.795.459a.502.502 0 0 0-.181.683l.499.864c.137.237.446.32.682.185l.796-.46.567-.327.527.39c.24.177.5.328.775.448l.6.262v1.572c0 .272.225.498.5.498h.999c.273 0 .5-.226.5-.498V11.93l.6-.262c.274-.12.534-.27.775-.449l.527-.39.567.328.796.46a.502.502 0 0 0 .682-.185l.5-.864a.504.504 0 0 0-.182-.683l-.795-.46-.567-.326.073-.65a4.055 4.055 0 0 0 0-.898l-.073-.65.567-.327.795-.459a.502.502 0 0 0 .181-.683l-.499-.864a.504.504 0 0 0-.682-.185l-.796.46-.567.327-.527-.39c-.24-.177-.5-.328-.775-.448l-.6-.262v-.654zm1 0c.345.15.67.34.968.56l.796-.459a1.504 1.504 0 0 1 2.048.55l.5.865a1.502 1.502 0 0 1-.548 2.05l-.795.459a5.055 5.055 0 0 1 0 1.118l.795.46c.717.414.958 1.337.547 2.049l-.499.864a1.502 1.502 0 0 1-2.048.55l-.796-.458c-.299.22-.623.41-.968.56v.918c0 .827-.679 1.498-1.501 1.498h-.999c-.829 0-1.5-.675-1.5-1.498v-.918c-.345-.15-.67-.34-.97-.56l-.795.459a1.504 1.504 0 0 1-2.048-.55l-.5-.865a1.502 1.502 0 0 1 .548-2.05l.795-.459a5.055 5.055 0 0 1 0-1.118l-.795-.46A1.504 1.504 0 0 1 1.2 4.932l.499-.864a1.502 1.502 0 0 1 2.048-.55l.796.458c.299-.22.624-.41.969-.56v-.918c0-.827.678-1.498 1.5-1.498h.999c.829 0 1.5.675 1.5 1.498v.918z"/>
     <path d="M7.5 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 1a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/>
 </svg>
--- a/devtools/client/themes/images/tool-profiler.svg
+++ b/devtools/client/themes/images/tool-profiler.svg
@@ -1,9 +1,9 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke" fill-rule="evenodd">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b" fill-rule="evenodd">
   <path d="M15 9.004C14.51 12.394 11.578 15 8.035 15 4.15 15 1 11.866 1 8s3.15-7 7.036-7c1.941 0 3.7.783 4.972 2.048l-.709.709A6.027 6.027 0 0 0 8.036 2c-3.33 0-6.03 2.686-6.03 6s2.7 6 6.03 6a6.023 6.023 0 0 0 5.946-4.993l1.017-.003z"/>
   <path d="M4.137 9H3.1a5.002 5.002 0 0 0 9.8 0h-.965a4.023 4.023 0 0 1-3.9 3 4.023 4.023 0 0 1-3.898-3z" fill-opacity=".5"/>
   <path d="M8.036 11a2.994 2.994 0 0 0 2.987-3c0-1.657-1.338-3-2.987-3a2.994 2.994 0 0 0-2.988 3c0 1.657 1.338 3 2.988 3zm0-1c1.11 0 2.011-.895 2.011-2s-.9-2-2.011-2c-1.111 0-2.012.895-2.012 2s.9 2 2.012 2z"/>
   <path d="M10.354 6.354l4-4a.5.5 0 0 0-.708-.708l-4 4a.5.5 0 1 0 .708.708z"/>
 </svg>
--- a/devtools/client/themes/images/tool-scratchpad.svg
+++ b/devtools/client/themes/images/tool-scratchpad.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M5 1.5a.5.5 0 0 0-1 0v2a.5.5 0 0 0 1 0v-2zM8.5 3.5v-2a.5.5 0 0 0-1 0v2a.5.5 0 0 0 1 0zM12 3.5v-2a.5.5 0 1 0-1 0v2a.5.5 0 1 0 1 0zM5 7h4a.5.5 0 0 0 0-1H5a.5.5 0 0 0 0 1zM5 11h2a.5.5 0 1 0 0-1H5a.5.5 0 1 0 0 1zM6 9h5a.5.5 0 1 0 0-1H6a.5.5 0 0 0 0 1z"/>
   <path d="M3 3.996v9.008c0-.003 0-.004.002-.004h9.996c-.001 0 .002-.003.002.004V3.996c0 .003 0 .004-.002.004H3.002C3.003 4 3 4.003 3 3.996zm-1 0C2 3.446 2.456 3 3.002 3h9.996A.998.998 0 0 1 14 3.996v9.008c0 .55-.456.996-1.002.996H3.002A.998.998 0 0 1 2 13.004V3.996z"/>
 </svg>
--- a/devtools/client/themes/images/tool-shadereditor.svg
+++ b/devtools/client/themes/images/tool-shadereditor.svg
@@ -1,12 +1,12 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M2 4v8h12V4H2zm0-1h12a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/>
   <circle cx="1" cy="3" r="1"/>
   <circle cx="1" cy="13" r="1"/>
   <circle cx="15" cy="13" r="1"/>
   <circle cx="15" cy="3" r="1"/>
   <path d="M1.215 3.911l13 9 .411.285.57-.822-.411-.285-13-9-.411-.285-.57.822z"/>
   <path fill-opacity=".3" d="M8 5h2v2H8zM8 8h2v2L9 8.711zM5 5.962V5h2v2h-.828l-.729-.368zM11 5h2v2h-2zM11 8h2v2h-2z"/>
 </svg>
--- a/devtools/client/themes/images/tool-storage.svg
+++ b/devtools/client/themes/images/tool-storage.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M7.5 7.556c3.006 0 5.5-1.136 5.5-2.778C13 3.136 10.506 2 7.5 2S2 3.136 2 4.778C2 6.42 4.494 7.556 7.5 7.556zm0-1c-2.517 0-4.5-.903-4.5-1.778S4.983 3 7.5 3s4.5.903 4.5 1.778-1.983 1.778-4.5 1.778zM7.5 14.445c3.006 0 5.5-1.137 5.5-2.778 0-.878-.595-1.606-1.657-2.081-.244-.11-.473-.107-.778-.033-.056.014-.565.158-.765.205-.626.148-1.342.231-2.3.231-.973 0-1.683-.082-2.273-.225a18.574 18.574 0 0 1-.673-.193c-.277-.076-.479-.089-.707-.005l-.035.014C2.638 10.064 2 10.756 2 11.667c0 1.641 2.494 2.778 5.5 2.778zm0-1c-2.517 0-4.5-.904-4.5-1.778 0-.432.354-.816 1.194-1.163h-.002c-.012.005.003.006.097.032-.056-.016.474.144.702.2.669.162 1.458.253 2.509.253 1.035 0 1.828-.092 2.53-.257.228-.054.74-.2.77-.207a.756.756 0 0 1 .134-.027c.734.329 1.066.735 1.066 1.169 0 .874-1.983 1.778-4.5 1.778z"/>
   <path d="M7.5 10.945c3.006 0 5.5-1.137 5.5-2.778 0-.873-.62-1.601-1.693-2.082-.244-.109-.472-.106-.773-.032-.051.013-.551.158-.75.206-.615.147-1.326.23-2.284.23-.973 0-1.68-.082-2.265-.225a17.077 17.077 0 0 1-.66-.19c-.27-.076-.467-.092-.692-.015l-.054.02C2.65 6.568 2 7.259 2 8.168c0 1.641 2.494 2.778 5.5 2.778zm0-1C4.983 9.945 3 9.04 3 8.167c0-.426.364-.813 1.21-1.163l-.003.001c-.011.004.005.005.099.032-.079-.022.465.143.69.198.665.163 1.452.254 2.504.254 1.036 0 1.825-.092 2.517-.258.228-.054.733-.2.758-.207a.766.766 0 0 1 .124-.026c.748.335 1.101.75 1.101 1.169 0 .874-1.983 1.778-4.5 1.778z"/>
 </svg>
--- a/devtools/client/themes/images/tool-styleeditor.svg
+++ b/devtools/client/themes/images/tool-styleeditor.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b">
   <path d="M5.5 2C3.565 2 2.806 3.12 3.065 4.587c.239 1.346.117 1.76-.435 2.39l-.054.06c-.252.288-.39.474-.523.74L1.94 8l.112.224c.132.265.27.45.523.739l.054.06c.552.63.674 1.044.435 2.39C2.802 12.904 3.527 14 5.5 14a.5.5 0 1 0 0-1c-1.291 0-1.614-.487-1.45-1.413.292-1.65.081-2.37-.669-3.223l-.053-.06c-.2-.229-.296-.357-.38-.528v.448c.084-.17.18-.299.38-.528l.053-.06c.75-.854.961-1.573.67-3.223C3.89 3.515 4.24 3 5.5 3a.5.5 0 1 0 0-1zM10.5 3c1.26 0 1.609.515 1.45 1.413-.292 1.65-.081 2.37.669 3.223l.053.06c.2.229.296.357.38.528v-.448c-.084.17-.18.299-.38.528l-.053.06c-.75.854-.961 1.573-.67 3.223.165.926-.158 1.413-1.449 1.413a.5.5 0 1 0 0 1c1.973 0 2.698-1.096 2.435-2.587-.239-1.346-.117-1.76.435-2.39l.054-.06c.252-.288.39-.474.523-.74L14.06 8l-.112-.224c-.132-.265-.27-.45-.523-.739l-.054-.06c-.552-.63-.674-1.044-.435-2.39C13.194 3.12 12.435 2 10.5 2a.5.5 0 0 0 0 1z"/>
 </svg>
--- a/devtools/client/themes/images/tool-webaudio.svg
+++ b/devtools/client/themes/images/tool-webaudio.svg
@@ -1,6 +1,6 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
-  <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke="whitesmoke" d="M2.7 8.6c-.1-2.9.2-4.1 1.4-4.1 1.8 0 .6 6.6 2.5 6.6s1-6.4 3-6.4.7 6.4 2.7 6.4c1.4 0 1.5-3.5 1.5-3.5"/>
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" stroke="#0b0b0b">
+  <path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" d="M2.7 8.6c-.1-2.9.2-4.1 1.4-4.1 1.8 0 .6 6.6 2.5 6.6s1-6.4 3-6.4.7 6.4 2.7 6.4c1.4 0 1.5-3.5 1.5-3.5"/>
 </svg>
--- a/devtools/client/themes/images/tool-webconsole.svg
+++ b/devtools/client/themes/images/tool-webconsole.svg
@@ -1,7 +1,7 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="whitesmoke" fill-rule="evenodd">
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="#0b0b0b" fill-rule="evenodd">
   <path d="M14 4V3H2v1h12zm0 1v8H2V5h12zM1 3.002C1 2.45 1.45 2 2.007 2h11.986A1.01 1.01 0 0 1 15 3.002v9.996C15 13.55 14.55 14 13.993 14H2.007A1.01 1.01 0 0 1 1 12.998V3.002z"/>
   <path d="M4.09 7.859l2.062 2-.006-.713-2.061 2.062a.5.5 0 0 0 .707.707l2.062-2.061a.5.5 0 0 0-.006-.713l-2.061-2a.5.5 0 1 0-.697.718z"/>
 </svg>
--- a/devtools/client/themes/styleeditor.css
+++ b/devtools/client/themes/styleeditor.css
@@ -110,24 +110,25 @@
   margin: 0 8px;
   background-image: url(images/itemToggle.svg);
   background-repeat: no-repeat;
   background-clip: content-box;
   background-position: center;
   background-size: 16px;
   width: 24px;
   height: 40px;
+  filter: var(--icon-filter);
 }
 
 .disabled > .stylesheet-enabled {
   opacity: 0.3;
 }
 
-/* Invert all toggle icons but the one in the active row for light theme */
-.theme-light .splitview-nav > li:not(.splitview-active) .stylesheet-enabled {
+/* Invert the toggle icon in the active row for light theme */
+.theme-light .splitview-nav > li.splitview-active .stylesheet-enabled {
   filter: invert(1);
 }
 
 .splitview-nav > li > .stylesheet-enabled:focus,
 .splitview-nav > li:hover > .stylesheet-enabled {
   outline: 0;
 }
 
@@ -197,29 +198,58 @@ h3 {
     -moz-box-align: baseline;
   }
 
   .stylesheet-sidebar {
     width: 180px;
   }
 }
 
+/* CSS coverage */
 .csscoverage-report {
   background-color: var(--theme-toolbar-background);
+  -moz-box-orient: horizontal;
 }
 
 .csscoverage-report-container {
   height: 100vh;
-  padding: 0 30px;
+  padding: 0 10px;
+  overflow-x: hidden;
+  overflow-y: auto;
+  -moz-box-flex: 1;
 }
 
 .csscoverage-report-content {
   margin: 20px auto;
   -moz-column-width: 300px;
   font-size: 13px;
+  -moz-user-select: text;
+}
+
+.csscoverage-report-summary,
+.csscoverage-report-unused,
+.csscoverage-report-optimize {
+  display: inline-block;
+}
+
+.csscoverage-report-unused,
+.csscoverage-report-optimize {
+  flex: 1;
+  min-width: 0;
+}
+
+@media (max-width: 950px) {
+  .csscoverage-report-content {
+    display: block;
+  }
+
+  .csscoverage-report-summary {
+    display: block;
+    text-align: center;
+  }
 }
 
 .csscoverage-report h1 {
   font-size: 120%;
 }
 
 .csscoverage-report h2 {
   font-size: 110%;
@@ -227,16 +257,22 @@ h3 {
 
 .csscoverage-report h1,
 .csscoverage-report h2,
 .csscoverage-report h3 {
   font-weight: bold;
   margin: 10px 0;
 }
 
+.csscoverage-report code,
+.csscoverage-report textarea {
+  font-family: var(--monospace-font-family);
+  font-size: inherit;
+}
+
 .csscoverage-list:after {
   content: ', ';
 }
 
 .csscoverage-list:last-child:after {
   display: none;
 }
 
@@ -262,19 +298,24 @@ h3 {
   margin: 0;
   padding: 0;
   border-radius: 0;
   border-top: none;
   border-bottom: none;
   border-inline-start: none;
 }
 
+.csscoverage-report .pie-table-chart-container {
+  -moz-box-orient: vertical;
+  text-align: start;
+}
+
 .chart-colored-blob[name="Used Preload"] {
   fill: var(--theme-highlight-pink);
-  background: var(--theme-highlight-pink);;
+  background: var(--theme-highlight-pink);
 }
 
 .chart-colored-blob[name=Used] {
   fill: var(--theme-highlight-green);
   background: var(--theme-highlight-green);
 }
 
 .chart-colored-blob[name=Unused] {
@@ -293,10 +334,10 @@ h3 {
   stroke: rgba(255,255,255,0.8);
 }
 
 .csscoverage-report .pie-chart-slice {
   cursor: default;
 }
 
 .csscoverage-report-chart {
-  margin: 0 50px;
+  margin: 0 20px;
 }
--- a/devtools/client/themes/toolbars.css
+++ b/devtools/client/themes/toolbars.css
@@ -9,38 +9,41 @@
   --toolbar-tab-hover-active: rgba(170, 170, 170, .4);
   --searchbox-background-color: #ffee99;
   --searchbox-border-color: #ffbf00;
   --searcbox-no-match-background-color: #ffe5e5;
   --searcbox-no-match-border-color: #e52e2e;
   --magnifying-glass-image: url(images/search.svg);
   --filter-image: url(images/filter.svg);
   --tool-options-image: url(images/tool-options.svg);
-  --icon-filter: invert(1);
+  --icon-filter: none;
+  --checked-icon-filter: url(images/filters.svg#checked-icon-state);
   --toolbar-button-border-color: rgba(170, 170, 170, .5);
 }
 
 .theme-dark {
   --toolbar-tab-hover: hsla(206, 37%, 4%, .2);
   --toolbar-tab-hover-active: hsla(206, 37%, 4%, .4);
   --searchbox-background-color: #4d4222;
   --searchbox-border-color: #d99f2b;
   --searcbox-no-match-background-color: #402325;
   --searcbox-no-match-border-color: #cc3d3d;
   --magnifying-glass-image: url(images/search.svg);
   --filter-image: url(images/filter.svg);
   --tool-options-image: url(images/tool-options.svg);
-  --icon-filter: none;
+  --icon-filter: invert(1);
+  --checked-icon-filter: url(images/filters.svg#checked-icon-state);
   --toolbar-button-border-color: rgba(0, 0, 0, .4);
 }
 
 .theme-firebug {
   --magnifying-glass-image: url(images/search.svg);
   --tool-options-image: url(images/firebug/tool-options.svg);
-  --icon-filter: invert(1);
+  --icon-filter: none;
+  --checked-icon-filter: none;
   --toolbar-button-border-color: rgba(170, 170, 170, .5);
 }
 
 
 /* Toolbars */
 .devtools-toolbar,
 .devtools-sidebar-tabs tabs {
   -moz-appearance: none;
@@ -175,21 +178,16 @@
 #toolbox-buttons {
   display: flex;
 }
 
 #toolbox-picker-container {
   display: flex;
 }
 
-/* Invert toolbox button icons in Firebug theme. */
-.theme-firebug #toolbox-buttons toolbarbutton image {
-  filter: invert(1);
-}
-
 .devtools-toolbarbutton:not([label]) > .toolbarbutton-text {
   display: none;
 }
 
 .devtools-toolbarbutton > .toolbarbutton-icon {
   margin: 0;
 }
 
@@ -247,17 +245,17 @@
 .devtools-toolbarbutton[disabled] {
   opacity: 0.5 !important;
 }
 
 .devtools-button[checked]:empty::before,
 .devtools-button[open]:empty::before,
 .devtools-toolbarbutton:not([label])[checked=true] > image,
 .devtools-toolbarbutton:not([label])[open=true] > image {
-  filter: url(images/filters.svg#checked-icon-state);
+  filter: var(--checked-icon-filter);
 }
 
 /* Icon-and-text buttons */
 .devtools-toolbarbutton.icon-and-text .toolbarbutton-text {
   margin-inline-start: .5em !important;
   font-weight: 600;
 }
 
@@ -592,45 +590,33 @@
 }
 
 .devtools-sidebar-tabs tabs > tab[selected],
 .devtools-sidebar-tabs tabs > tab[selected]:hover:active {
   color: var(--theme-selection-color);
   background: var(--theme-selection-background);
 }
 
-/* Invert the colors of certain dark theme images for displaying
- * inside of the light theme.
+/* Invert the colors of certain light theme images for displaying
+ * inside of the dark theme.
  */
-.theme-light .devtools-tab[icon-invertable] > image,
-.theme-light .devtools-toolbarbutton > image,
-.theme-light .devtools-button::before,
-.theme-light #breadcrumb-separator-normal,
-.theme-light .scrollbutton-up > .toolbarbutton-icon,
-.theme-light .scrollbutton-down > .toolbarbutton-icon,
-.theme-light #black-boxed-message-button .button-icon,
-.theme-light #requests-menu-perf-notice-button .button-icon,
-.theme-light #requests-menu-network-summary-button .button-icon,
-.theme-light #toggle-breakpoints[checked] > image,
-.theme-light .event-tooltip-debugger-icon {
+.devtools-tab[icon-invertable] > image,
+.devtools-toolbarbutton > image,
+.devtools-button::before,
+#breadcrumb-separator-normal,
+.scrollbutton-up > .toolbarbutton-icon,
+.scrollbutton-down > .toolbarbutton-icon,
+#black-boxed-message-button .button-icon,
+#requests-menu-perf-notice-button .button-icon,
+#canvas-debugging-empty-notice-button .button-icon,
+#toggle-breakpoints[checked] > image,
+.event-tooltip-debugger-icon {
   filter: var(--icon-filter);
 }
 
-/* Reset the filter defined above */
-.theme-light .command-button:not(.command-button-invertable) {
-  filter: none !important;
-}
-
-/* Since selected backgrounds are blue, we want to use the normal
- * (light) icons. */
-.theme-light .devtools-tab[icon-invertable][selected] > image,
-.theme-light .devtools-tab[icon-invertable][highlighted] > image {
-  filter: none !important;
-}
-
 .hidden-labels-box:not(.visible) > label,
 .hidden-labels-box.visible ~ .hidden-labels-box > label:last-child {
   display: none;
 }
 
 .devtools-invisible-splitter {
   border-color: transparent;
   background-color: transparent;
--- a/devtools/client/themes/toolbox.css
+++ b/devtools/client/themes/toolbox.css
@@ -129,16 +129,31 @@
   border: none;
   margin: 0;
   margin-inline-start: 4px;
   opacity: 0.6;
   max-height: 16px;
   width: 16px; /* Prevents collapse during theme switching */
 }
 
+/* Support invertable icon flags and make icon white when it's on a blue background */
+.theme-light .devtools-tab[icon-invertable="light-theme"]:not([selected]) > image,
+.devtools-tab[icon-invertable="dark-theme"][selected] > image {
+  filter: invert(1);
+}
+
+/* Don't apply any filter to non-invertable command button icons */
+.command-button:not(.command-button-invertable),
+/* [icon-invertable="light-theme"] icons are white, so do not invert them for the dark theme */
+.theme-dark .devtools-tab[icon-invertable="light-theme"] > image,
+/* Since "highlighted" icons are green, we should omit the filter */
+.devtools-tab[icon-invertable][highlighted]:not([selected]) > image {
+  filter: none;
+}
+
 .devtools-tab > label {
   white-space: nowrap;
   margin: 0 4px;
 }
 
 .devtools-tab:hover > image {
   opacity: 0.8;
 }
--- a/devtools/docs/svgs.md
+++ b/devtools/docs/svgs.md
@@ -2,17 +2,17 @@
 These are the guidelines for creating devtools SVGs to make sure they're as small and neatly formatted as possible. The Mozilla Developer SVG guidelines can be found [here](https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/SVG_Guidelines).
 
 ## Explanation of Pixel Grid
 Since so many of our SVGs appear so small, designing them on the pixel grid will help them not appear fuzzy when they're sized down to 16x16 pixels. There is program-specific documentation in both the [Illustrator](#illustrator) and [Sketch](#sketch) sections.
 
 ## Panel Icon Requirements
 The devtools panel icons do a couple of things in a specific way; following these guidelines will help stick your patch:
 
-1. **Inline fill colors.** Devtools panel icons all use ```fill="whitesmoke"``` in the ```<svg>``` tag.
+1. **Inline fill colors.** Devtools panel icons all use ```fill="#0b0b0b"``` in the ```<svg>``` tag.
 2. **Inline opacities.** Devtools panel icons also inline opacities on their relevant path.
 
 ## Illustrator
 For Illustrator you'll want the following document settings:
 
 - **Document settings**: ```Units: pixels```, ```Advanced``` > check ```Align New Objects to Pixel Grid```
 - **Transform Panel**: for existing artwork not on pixel grid, select shape and then within ```Transform``` > ```Advanced``` > check ```Align to Pixel Grid```
 
--- a/devtools/server/actors/css-properties.js
+++ b/devtools/server/actors/css-properties.js
@@ -62,16 +62,17 @@ function generateCssProperties() {
       isInherited: DOMUtils.isInheritedProperty(name),
       supports
     };
     properties[name] = Object.assign(clientDefinition, serverDefinition);
   });
 
   return properties;
 }
+exports.generateCssProperties = generateCssProperties;
 
 /**
  * Test if a CSS is property is known using server-code.
  *
  * @param {string} name
  * @return {Boolean}
  */
 function isCssPropertyKnown(name) {
--- a/devtools/shared/css-properties-db.js
+++ b/devtools/shared/css-properties-db.js
@@ -1,1765 +1,103 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 "use strict";
 
 /**
- * All CSS types that properties can support.
+ * This file contains static lists of CSS properties and values. Some of the small lists
+ * are edited manually, while the larger ones are generated by a script. The comments
+ * above each list indicates how it should be updated.
+ */
+
+/**
+ * All CSS types that properties can support. This list can be manually edited.
  */
 exports.CSS_TYPES = {
   "ANGLE": 1,
   "COLOR": 2,
   "FREQUENCY": 3,
   "GRADIENT": 4,
   "IMAGE_RECT": 5,
   "LENGTH": 6,
   "NUMBER": 7,
   "PERCENTAGE": 8,
   "TIME": 9,
   "TIMING_FUNCTION": 10,
   "URL": 11,
 };
 
 /**
- * All cubic-bezier CSS timing-function names.
+ * All cubic-bezier CSS timing-function names. This list can be manually edited.
  */
 exports.BEZIER_KEYWORDS = ["linear", "ease-in-out", "ease-in", "ease-out", "ease"];
 
 /**
- * Functions that accept a color argument.
+ * Functions that accept a color argument. This list can be manually edited.
  */
 exports.COLOR_TAKING_FUNCTIONS = ["linear-gradient", "-moz-linear-gradient",
                                   "repeating-linear-gradient",
                                   "-moz-repeating-linear-gradient", "radial-gradient",
                                   "-moz-radial-gradient", "repeating-radial-gradient",
                                   "-moz-repeating-radial-gradient", "drop-shadow"];
 
 /**
- * Functions that accept an angle argument.
+ * Functions that accept an angle argument. This list can be manually edited.
  */
 exports.ANGLE_TAKING_FUNCTIONS = ["linear-gradient", "-moz-linear-gradient",
                                   "repeating-linear-gradient",
                                   "-moz-repeating-linear-gradient", "rotate", "rotateX",
                                   "rotateY", "rotateZ", "rotate3d", "skew", "skewX",
                                   "skewY", "hue-rotate"];
 
 /**
- * The list of all CSS Pseudo Elements. This list can be generated from:
+ * The list of all CSS Pseudo Elements. This list MUST be automatically generated.
  *
- * let domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
- * domUtils.getCSSPseudoElementNames();
+ * The following script will copy the pseudo-elements to your clipboard if run from the
+ * Browser Console, which can be launched from Tools -> Web Developer -> Browser Console.
+
+var domUtils = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
+var json = JSON.stringify(domUtils.getCSSPseudoElementNames(), null, 0);
+copy(`exports.PSEUDO_ELEMENTS = ${json};\n`);
+console.log("The PSEUDO_ELEMENTS have been copied to your clipboard.")
  */
-exports.PSEUDO_ELEMENTS = [":after", ":before", ":backdrop", ":first-letter",
-                           ":first-line", ":-moz-selection", ":-moz-focus-inner",
-                           ":-moz-focus-outer", ":-moz-list-bullet",
-                           ":-moz-list-number", ":-moz-math-anonymous",
-                           ":-moz-progress-bar", ":-moz-range-track",
-                           ":-moz-range-progress", ":-moz-range-thumb",
-                           ":-moz-meter-bar", ":-moz-placeholder",
-                           ":-moz-color-swatch"];
+
+/*eslint-disable */
+exports.PSEUDO_ELEMENTS = [":after",":before",":backdrop",":first-letter",":first-line",":-moz-selection",":-moz-focus-inner",":-moz-focus-outer",":-moz-list-bullet",":-moz-list-number",":-moz-math-anonymous",":-moz-progress-bar",":-moz-range-track",":-moz-range-progress",":-moz-range-thumb",":-moz-meter-bar",":-moz-placeholder",":-moz-color-swatch"];
+/*eslint-enable */
 
 /**
- * This list is generated from the output of the CssPropertiesActor. If a server
- * does not support the actor, this is loaded as a backup. This list does not
- * guarantee that the server actually supports these CSS properties.
+ * A list of CSS Properties and their various characteristics. This is used on the
+ * client-side when the CssPropertiesActor is not found, or when the client and server
+ * are the same version. A single property takes the form:
+ *
+ *  "animation": {
+ *    "isInherited": false,
+ *    "supports": [ 7, 9, 10 ]
+ *  }
+ *
+ * The following script will copy the CSS properties to your clipboard if run from the
+ * Browser Console, which can be launched from Tools -> Web Developer -> Browser Console.
+
+var {require} = Components.utils.import("resource://devtools/shared/Loader.jsm", {});
+var {generateCssProperties} = require("devtools/server/actors/css-properties");
+var cssProperties = generateCssProperties();
+for (var key in cssProperties) {
+  // Ignore OS-specific properties
+  if (key.indexOf('-moz-osx-') !== -1) {
+    cssProperties[key] = undefined;
+  }
+}
+var json = JSON.stringify(cssProperties, null, 0);
+copy(`exports.CSS_PROPERTIES = ${json};\n`);
+console.log("The CSS_PROPERTIES have been copied to your clipboard.");
  */
-exports.CSS_PROPERTIES = {
-  "align-content": {
-    isInherited: false,
-    supports: []
-  },
-  "align-items": {
-    isInherited: false,
-    supports: []
-  },
-  "align-self": {
-    isInherited: false,
-    supports: []
-  },
-  "animation-delay": {
-    isInherited: false,
-    supports: [9]
-  },
-  "animation-direction": {
-    isInherited: false,
-    supports: []
-  },
-  "animation-duration": {
-    isInherited: false,
-    supports: [9]
-  },
-  "animation-fill-mode": {
-    isInherited: false,
-    supports: []
-  },
-  "animation-iteration-count": {
-    isInherited: false,
-    supports: [7]
-  },
-  "animation-name": {
-    isInherited: false,
-    supports: []
-  },
-  "animation-play-state": {
-    isInherited: false,
-    supports: []
-  },
-  "animation-timing-function": {
-    isInherited: false,
-    supports: [10]
-  },
-  "-moz-appearance": {
-    isInherited: false,
-    supports: []
-  },
-  "backface-visibility": {
-    isInherited: false,
-    supports: []
-  },
-  "background-attachment": {
-    isInherited: false,
-    supports: []
-  },
-  "background-blend-mode": {
-    isInherited: false,
-    supports: []
-  },
-  "background-clip": {
-    isInherited: false,
-    supports: []
-  },
-  "background-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "background-image": {
-    isInherited: false,
-    supports: [4, 5, 11]
-  },
-  "background-origin": {
-    isInherited: false,
-    supports: []
-  },
-  "background-position-x": {
-    isInherited: false,
-    supports: []
-  },
-  "background-position-y": {
-    isInherited: false,
-    supports: []
-  },
-  "background-repeat": {
-    isInherited: false,
-    supports: []
-  },
-  "background-size": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-binding": {
-    isInherited: false,
-    supports: [11]
-  },
-  "block-size": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "border-block-end-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-block-end-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-block-end-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "border-block-start-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-block-start-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-block-start-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "border-bottom-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "-moz-border-bottom-colors": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-bottom-left-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "border-bottom-right-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "border-bottom-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-bottom-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "border-collapse": {
-    isInherited: true,
-    supports: []
-  },
-  "border-image-outset": {
-    isInherited: false,
-    supports: [6, 7]
-  },
-  "border-image-repeat": {
-    isInherited: false,
-    supports: []
-  },
-  "border-image-slice": {
-    isInherited: false,
-    supports: [7, 8]
-  },
-  "border-image-source": {
-    isInherited: false,
-    supports: [4, 5, 11]
-  },
-  "border-image-width": {
-    isInherited: false,
-    supports: [6, 7, 8]
-  },
-  "border-inline-end-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-inline-end-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-inline-end-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "border-inline-start-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-inline-start-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-inline-start-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "border-left-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "-moz-border-left-colors": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-left-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-left-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "border-right-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "-moz-border-right-colors": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-right-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-right-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "border-spacing": {
-    isInherited: true,
-    supports: [6]
-  },
-  "border-top-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "-moz-border-top-colors": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-top-left-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "border-top-right-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "border-top-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-top-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "bottom": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-box-align": {
-    isInherited: false,
-    supports: []
-  },
-  "box-decoration-break": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-box-direction": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-box-flex": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-moz-box-ordinal-group": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-moz-box-orient": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-box-pack": {
-    isInherited: false,
-    supports: []
-  },
-  "box-shadow": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "box-sizing": {
-    isInherited: false,
-    supports: []
-  },
-  "caption-side": {
-    isInherited: true,
-    supports: []
-  },
-  "clear": {
-    isInherited: false,
-    supports: []
-  },
-  "clip": {
-    isInherited: false,
-    supports: []
-  },
-  "clip-path": {
-    isInherited: false,
-    supports: [11]
-  },
-  "clip-rule": {
-    isInherited: true,
-    supports: []
-  },
-  "color": {
-    isInherited: true,
-    supports: [2]
-  },
-  "color-adjust": {
-    isInherited: true,
-    supports: []
-  },
-  "color-interpolation": {
-    isInherited: true,
-    supports: []
-  },
-  "color-interpolation-filters": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-column-count": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-moz-column-fill": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-column-gap": {
-    isInherited: false,
-    supports: [6]
-  },
-  "-moz-column-rule-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "-moz-column-rule-style": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-column-rule-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "-moz-column-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "content": {
-    isInherited: false,
-    supports: [11]
-  },
-  "-moz-control-character-visibility": {
-    isInherited: true,
-    supports: []
-  },
-  "counter-increment": {
-    isInherited: false,
-    supports: []
-  },
-  "counter-reset": {
-    isInherited: false,
-    supports: []
-  },
-  "cursor": {
-    isInherited: true,
-    supports: [11]
-  },
-  "direction": {
-    isInherited: true,
-    supports: []
-  },
-  "display": {
-    isInherited: false,
-    supports: []
-  },
-  "dominant-baseline": {
-    isInherited: false,
-    supports: []
-  },
-  "empty-cells": {
-    isInherited: true,
-    supports: []
-  },
-  "fill": {
-    isInherited: true,
-    supports: [2, 11]
-  },
-  "fill-opacity": {
-    isInherited: true,
-    supports: [7]
-  },
-  "fill-rule": {
-    isInherited: true,
-    supports: []
-  },
-  "filter": {
-    isInherited: false,
-    supports: [11]
-  },
-  "flex-basis": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "flex-direction": {
-    isInherited: false,
-    supports: []
-  },
-  "flex-grow": {
-    isInherited: false,
-    supports: [7]
-  },
-  "flex-shrink": {
-    isInherited: false,
-    supports: [7]
-  },
-  "flex-wrap": {
-    isInherited: false,
-    supports: []
-  },
-  "float": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-float-edge": {
-    isInherited: false,
-    supports: []
-  },
-  "flood-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "flood-opacity": {
-    isInherited: false,
-    supports: [7]
-  },
-  "font-family": {
-    isInherited: true,
-    supports: []
-  },
-  "font-feature-settings": {
-    isInherited: true,
-    supports: []
-  },
-  "font-kerning": {
-    isInherited: true,
-    supports: []
-  },
-  "font-language-override": {
-    isInherited: true,
-    supports: []
-  },
-  "font-size": {
-    isInherited: true,
-    supports: [6, 8]
-  },
-  "font-size-adjust": {
-    isInherited: true,
-    supports: [7]
-  },
-  "font-stretch": {
-    isInherited: true,
-    supports: []
-  },
-  "font-style": {
-    isInherited: true,
-    supports: []
-  },
-  "font-synthesis": {
-    isInherited: true,
-    supports: []
-  },
-  "font-variant-alternates": {
-    isInherited: true,
-    supports: []
-  },
-  "font-variant-caps": {
-    isInherited: true,
-    supports: []
-  },
-  "font-variant-east-asian": {
-    isInherited: true,
-    supports: []
-  },
-  "font-variant-ligatures": {
-    isInherited: true,
-    supports: []
-  },
-  "font-variant-numeric": {
-    isInherited: true,
-    supports: []
-  },
-  "font-variant-position": {
-    isInherited: true,
-    supports: []
-  },
-  "font-weight": {
-    isInherited: true,
-    supports: [7]
-  },
-  "-moz-force-broken-image-icon": {
-    isInherited: false,
-    supports: [7]
-  },
-  "grid-auto-columns": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "grid-auto-flow": {
-    isInherited: false,
-    supports: []
-  },
-  "grid-auto-rows": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "grid-column-end": {
-    isInherited: false,
-    supports: [7]
-  },
-  "grid-column-gap": {
-    isInherited: false,
-    supports: [6]
-  },
-  "grid-column-start": {
-    isInherited: false,
-    supports: [7]
-  },
-  "grid-row-end": {
-    isInherited: false,
-    supports: [7]
-  },
-  "grid-row-gap": {
-    isInherited: false,
-    supports: [6]
-  },
-  "grid-row-start": {
-    isInherited: false,
-    supports: [7]
-  },
-  "grid-template-areas": {
-    isInherited: false,
-    supports: []
-  },
-  "grid-template-columns": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "grid-template-rows": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "height": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "hyphens": {
-    isInherited: true,
-    supports: []
-  },
-  "image-orientation": {
-    isInherited: true,
-    supports: [1]
-  },
-  "-moz-image-region": {
-    isInherited: true,
-    supports: []
-  },
-  "image-rendering": {
-    isInherited: true,
-    supports: []
-  },
-  "ime-mode": {
-    isInherited: false,
-    supports: []
-  },
-  "inline-size": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "isolation": {
-    isInherited: false,
-    supports: []
-  },
-  "justify-content": {
-    isInherited: false,
-    supports: []
-  },
-  "justify-items": {
-    isInherited: false,
-    supports: []
-  },
-  "justify-self": {
-    isInherited: false,
-    supports: []
-  },
-  "left": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "letter-spacing": {
-    isInherited: true,
-    supports: [6]
-  },
-  "lighting-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "line-height": {
-    isInherited: true,
-    supports: [6, 7, 8]
-  },
-  "list-style-image": {
-    isInherited: true,
-    supports: [11]
-  },
-  "list-style-position": {
-    isInherited: true,
-    supports: []
-  },
-  "list-style-type": {
-    isInherited: true,
-    supports: []
-  },
-  "margin-block-end": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "margin-block-start": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "margin-bottom": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "margin-inline-end": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "margin-inline-start": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "margin-left": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "margin-right": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "margin-top": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "marker-end": {
-    isInherited: true,
-    supports: [11]
-  },
-  "marker-mid": {
-    isInherited: true,
-    supports: [11]
-  },
-  "marker-offset": {
-    isInherited: false,
-    supports: [6]
-  },
-  "marker-start": {
-    isInherited: true,
-    supports: [11]
-  },
-  "mask": {
-    isInherited: false,
-    supports: [11]
-  },
-  "mask-type": {
-    isInherited: false,
-    supports: []
-  },
-  "max-block-size": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "max-height": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "max-inline-size": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "max-width": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "min-block-size": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "min-height": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "min-inline-size": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "min-width": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "mix-blend-mode": {
-    isInherited: false,
-    supports: []
-  },
-  "object-fit": {
-    isInherited: false,
-    supports: []
-  },
-  "object-position": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "offset-block-end": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "offset-block-start": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "offset-inline-end": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "offset-inline-start": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "opacity": {
-    isInherited: false,
-    supports: [7]
-  },
-  "order": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-moz-orient": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-osx-font-smoothing": {
-    isInherited: true,
-    supports: []
-  },
-  "outline-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "outline-offset": {
-    isInherited: false,
-    supports: [6]
-  },
-  "-moz-outline-radius-bottomleft": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-outline-radius-bottomright": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-outline-radius-topleft": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-outline-radius-topright": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "outline-style": {
-    isInherited: false,
-    supports: []
-  },
-  "outline-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "overflow-x": {
-    isInherited: false,
-    supports: []
-  },
-  "overflow-y": {
-    isInherited: false,
-    supports: []
-  },
-  "padding-block-end": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "padding-block-start": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "padding-bottom": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "padding-inline-end": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "padding-inline-start": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "padding-left": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "padding-right": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "padding-top": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "page-break-after": {
-    isInherited: false,
-    supports: []
-  },
-  "page-break-before": {
-    isInherited: false,
-    supports: []
-  },
-  "page-break-inside": {
-    isInherited: false,
-    supports: []
-  },
-  "paint-order": {
-    isInherited: true,
-    supports: []
-  },
-  "perspective": {
-    isInherited: false,
-    supports: [6]
-  },
-  "perspective-origin": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "pointer-events": {
-    isInherited: true,
-    supports: []
-  },
-  "position": {
-    isInherited: false,
-    supports: []
-  },
-  "quotes": {
-    isInherited: true,
-    supports: []
-  },
-  "resize": {
-    isInherited: false,
-    supports: []
-  },
-  "right": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "ruby-align": {
-    isInherited: true,
-    supports: []
-  },
-  "ruby-position": {
-    isInherited: true,
-    supports: []
-  },
-  "scroll-behavior": {
-    isInherited: false,
-    supports: []
-  },
-  "scroll-snap-coordinate": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "scroll-snap-destination": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "scroll-snap-points-x": {
-    isInherited: false,
-    supports: []
-  },
-  "scroll-snap-points-y": {
-    isInherited: false,
-    supports: []
-  },
-  "scroll-snap-type-x": {
-    isInherited: false,
-    supports: []
-  },
-  "scroll-snap-type-y": {
-    isInherited: false,
-    supports: []
-  },
-  "shape-rendering": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-stack-sizing": {
-    isInherited: false,
-    supports: []
-  },
-  "stop-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "stop-opacity": {
-    isInherited: false,
-    supports: [7]
-  },
-  "stroke": {
-    isInherited: true,
-    supports: [2, 11]
-  },
-  "stroke-dasharray": {
-    isInherited: true,
-    supports: [6, 7, 8]
-  },
-  "stroke-dashoffset": {
-    isInherited: true,
-    supports: [6, 7, 8]
-  },
-  "stroke-linecap": {
-    isInherited: true,
-    supports: []
-  },
-  "stroke-linejoin": {
-    isInherited: true,
-    supports: []
-  },
-  "stroke-miterlimit": {
-    isInherited: true,
-    supports: [7]
-  },
-  "stroke-opacity": {
-    isInherited: true,
-    supports: [7]
-  },
-  "stroke-width": {
-    isInherited: true,
-    supports: [6, 7, 8]
-  },
-  "-moz-tab-size": {
-    isInherited: true,
-    supports: [7]
-  },
-  "table-layout": {
-    isInherited: false,
-    supports: []
-  },
-  "text-align": {
-    isInherited: true,
-    supports: []
-  },
-  "text-align-last": {
-    isInherited: true,
-    supports: []
-  },
-  "text-anchor": {
-    isInherited: true,
-    supports: []
-  },
-  "text-combine-upright": {
-    isInherited: true,
-    supports: []
-  },
-  "text-decoration-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "text-decoration-line": {
-    isInherited: false,
-    supports: []
-  },
-  "text-decoration-style": {
-    isInherited: false,
-    supports: []
-  },
-  "text-emphasis-color": {
-    isInherited: true,
-    supports: [2]
-  },
-  "text-emphasis-position": {
-    isInherited: true,
-    supports: []
-  },
-  "text-emphasis-style": {
-    isInherited: true,
-    supports: []
-  },
-  "-webkit-text-fill-color": {
-    isInherited: true,
-    supports: [2]
-  },
-  "text-indent": {
-    isInherited: true,
-    supports: [6, 8]
-  },
-  "text-orientation": {
-    isInherited: true,
-    supports: []
-  },
-  "text-overflow": {
-    isInherited: false,
-    supports: []
-  },
-  "text-rendering": {
-    isInherited: true,
-    supports: []
-  },
-  "text-shadow": {
-    isInherited: true,
-    supports: [2, 6]
-  },
-  "-moz-text-size-adjust": {
-    isInherited: true,
-    supports: []
-  },
-  "-webkit-text-stroke-color": {
-    isInherited: true,
-    supports: [2]
-  },
-  "-webkit-text-stroke-width": {
-    isInherited: true,
-    supports: [6]
-  },
-  "text-transform": {
-    isInherited: true,
-    supports: []
-  },
-  "top": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "transform": {
-    isInherited: false,
-    supports: []
-  },
-  "transform-box": {
-    isInherited: false,
-    supports: []
-  },
-  "transform-origin": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "transform-style": {
-    isInherited: false,
-    supports: []
-  },
-  "transition-delay": {
-    isInherited: false,
-    supports: [9]
-  },
-  "transition-duration": {
-    isInherited: false,
-    supports: [9]
-  },
-  "transition-property": {
-    isInherited: false,
-    supports: []
-  },
-  "transition-timing-function": {
-    isInherited: false,
-    supports: [10]
-  },
-  "unicode-bidi": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-user-focus": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-user-input": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-user-modify": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-user-select": {
-    isInherited: false,
-    supports: []
-  },
-  "vector-effect": {
-    isInherited: false,
-    supports: []
-  },
-  "vertical-align": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "visibility": {
-    isInherited: true,
-    supports: []
-  },
-  "white-space": {
-    isInherited: true,
-    supports: []
-  },
-  "width": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "will-change": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-window-dragging": {
-    isInherited: false,
-    supports: []
-  },
-  "word-break": {
-    isInherited: true,
-    supports: []
-  },
-  "word-spacing": {
-    isInherited: true,
-    supports: [6, 8]
-  },
-  "overflow-wrap": {
-    isInherited: true,
-    supports: []
-  },
-  "writing-mode": {
-    isInherited: true,
-    supports: []
-  },
-  "z-index": {
-    isInherited: false,
-    supports: [7]
-  },
-  "all": {
-    isInherited: false,
-    supports: [1, 2, 4, 5, 6, 7, 8, 9, 10, 11]
-  },
-  "animation": {
-    isInherited: false,
-    supports: [7, 9, 10]
-  },
-  "background": {
-    isInherited: false,
-    supports: [2, 4, 5, 6, 8, 11]
-  },
-  "background-position": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "border": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-block-end": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-block-start": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-bottom": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "border-image": {
-    isInherited: false,
-    supports: [4, 5, 6, 7, 8, 11]
-  },
-  "border-inline-end": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-inline-start": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-left": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "border-right": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-style": {
-    isInherited: false,
-    supports: []
-  },
-  "border-top": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "border-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "-moz-column-rule": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "-moz-columns": {
-    isInherited: false,
-    supports: [6, 7]
-  },
-  "flex": {
-    isInherited: false,
-    supports: [6, 7, 8]
-  },
-  "flex-flow": {
-    isInherited: false,
-    supports: []
-  },
-  "font": {
-    isInherited: true,
-    supports: [6, 7, 8]
-  },
-  "font-variant": {
-    isInherited: true,
-    supports: []
-  },
-  "grid": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "grid-area": {
-    isInherited: false,
-    supports: [7]
-  },
-  "grid-column": {
-    isInherited: false,
-    supports: [7]
-  },
-  "grid-gap": {
-    isInherited: false,
-    supports: [6]
-  },
-  "grid-row": {
-    isInherited: false,
-    supports: [7]
-  },
-  "grid-template": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "list-style": {
-    isInherited: true,
-    supports: [11]
-  },
-  "margin": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "marker": {
-    isInherited: true,
-    supports: [11]
-  },
-  "outline": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "-moz-outline-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "overflow": {
-    isInherited: false,
-    supports: []
-  },
-  "padding": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "scroll-snap-type": {
-    isInherited: false,
-    supports: []
-  },
-  "text-decoration": {
-    isInherited: false,
-    supports: [2]
-  },
-  "text-emphasis": {
-    isInherited: true,
-    supports: [2]
-  },
-  "-webkit-text-stroke": {
-    isInherited: true,
-    supports: [2, 6]
-  },
-  "-moz-transform": {
-    isInherited: false,
-    supports: []
-  },
-  "transition": {
-    isInherited: false,
-    supports: [9, 10]
-  },
-  "word-wrap": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-transform-origin": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-perspective-origin": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-perspective": {
-    isInherited: false,
-    supports: [6]
-  },
-  "-moz-transform-style": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-backface-visibility": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-border-image": {
-    isInherited: false,
-    supports: [4, 5, 6, 7, 8, 11]
-  },
-  "-moz-transition": {
-    isInherited: false,
-    supports: [9, 10]
-  },
-  "-moz-transition-delay": {
-    isInherited: false,
-    supports: [9]
-  },
-  "-moz-transition-duration": {
-    isInherited: false,
-    supports: [9]
-  },
-  "-moz-transition-property": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-transition-timing-function": {
-    isInherited: false,
-    supports: [10]
-  },
-  "-moz-animation": {
-    isInherited: false,
-    supports: [7, 9, 10]
-  },
-  "-moz-animation-delay": {
-    isInherited: false,
-    supports: [9]
-  },
-  "-moz-animation-direction": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-animation-duration": {
-    isInherited: false,
-    supports: [9]
-  },
-  "-moz-animation-fill-mode": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-animation-iteration-count": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-moz-animation-name": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-animation-play-state": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-animation-timing-function": {
-    isInherited: false,
-    supports: [10]
-  },
-  "-moz-box-sizing": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-font-feature-settings": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-font-language-override": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-padding-end": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-padding-start": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-margin-end": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-margin-start": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-moz-border-end": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "-moz-border-end-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "-moz-border-end-style": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-border-end-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "-moz-border-start": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "-moz-border-start-color": {
-    isInherited: false,
-    supports: [2]
-  },
-  "-moz-border-start-style": {
-    isInherited: false,
-    supports: []
-  },
-  "-moz-border-start-width": {
-    isInherited: false,
-    supports: [6]
-  },
-  "-moz-hyphens": {
-    isInherited: true,
-    supports: []
-  },
-  "-moz-text-align-last": {
-    isInherited: true,
-    supports: []
-  },
-  "-webkit-animation": {
-    isInherited: false,
-    supports: [7, 9, 10]
-  },
-  "-webkit-animation-delay": {
-    isInherited: false,
-    supports: [9]
-  },
-  "-webkit-animation-direction": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-animation-duration": {
-    isInherited: false,
-    supports: [9]
-  },
-  "-webkit-animation-fill-mode": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-animation-iteration-count": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-webkit-animation-name": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-animation-play-state": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-animation-timing-function": {
-    isInherited: false,
-    supports: [10]
-  },
-  "-webkit-filter": {
-    isInherited: false,
-    supports: [11]
-  },
-  "-webkit-text-size-adjust": {
-    isInherited: true,
-    supports: []
-  },
-  "-webkit-transform": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-transform-origin": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-transform-style": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-backface-visibility": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-perspective": {
-    isInherited: false,
-    supports: [6]
-  },
-  "-webkit-perspective-origin": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-transition": {
-    isInherited: false,
-    supports: [9, 10]
-  },
-  "-webkit-transition-delay": {
-    isInherited: false,
-    supports: [9]
-  },
-  "-webkit-transition-duration": {
-    isInherited: false,
-    supports: [9]
-  },
-  "-webkit-transition-property": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-transition-timing-function": {
-    isInherited: false,
-    supports: [10]
-  },
-  "-webkit-border-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-border-top-left-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-border-top-right-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-border-bottom-left-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-border-bottom-right-radius": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-background-clip": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-background-origin": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-background-size": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-border-image": {
-    isInherited: false,
-    supports: [4, 5, 6, 7, 8, 11]
-  },
-  "-webkit-box-shadow": {
-    isInherited: false,
-    supports: [2, 6]
-  },
-  "-webkit-box-sizing": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-box-flex": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-webkit-box-ordinal-group": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-webkit-box-orient": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-box-direction": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-box-align": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-box-pack": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-flex-direction": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-flex-wrap": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-flex-flow": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-order": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-webkit-flex": {
-    isInherited: false,
-    supports: [6, 7, 8]
-  },
-  "-webkit-flex-grow": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-webkit-flex-shrink": {
-    isInherited: false,
-    supports: [7]
-  },
-  "-webkit-flex-basis": {
-    isInherited: false,
-    supports: [6, 8]
-  },
-  "-webkit-justify-content": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-align-items": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-align-self": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-align-content": {
-    isInherited: false,
-    supports: []
-  },
-  "-webkit-user-select": {
-    isInherited: false,
-    supports: []
-  }
-};
+
+/*eslint-disable */
+exports.CSS_PROPERTIES = {"align-content":{"isInherited":false,"supports":[]},"align-items":{"isInherited":false,"supports":[]},"align-self":{"isInherited":false,"supports":[]},"animation-delay":{"isInherited":false,"supports":[9]},"animation-direction":{"isInherited":false,"supports":[]},"animation-duration":{"isInherited":false,"supports":[9]},"animation-fill-mode":{"isInherited":false,"supports":[]},"animation-iteration-count":{"isInherited":false,"supports":[7]},"animation-name":{"isInherited":false,"supports":[]},"animation-play-state":{"isInherited":false,"supports":[]},"animation-timing-function":{"isInherited":false,"supports":[10]},"-moz-appearance":{"isInherited":false,"supports":[]},"backface-visibility":{"isInherited":false,"supports":[]},"background-attachment":{"isInherited":false,"supports":[]},"background-blend-mode":{"isInherited":false,"supports":[]},"background-clip":{"isInherited":false,"supports":[]},"background-color":{"isInherited":false,"supports":[2]},"background-image":{"isInherited":false,"supports":[4,5,11]},"background-origin":{"isInherited":false,"supports":[]},"background-position-x":{"isInherited":false,"supports":[6,8]},"background-position-y":{"isInherited":false,"supports":[6,8]},"background-repeat":{"isInherited":false,"supports":[]},"background-size":{"isInherited":false,"supports":[6,8]},"-moz-binding":{"isInherited":false,"supports":[11]},"block-size":{"isInherited":false,"supports":[6,8]},"border-block-end-color":{"isInherited":false,"supports":[2]},"border-block-end-style":{"isInherited":false,"supports":[]},"border-block-end-width":{"isInherited":false,"supports":[6]},"border-block-start-color":{"isInherited":false,"supports":[2]},"border-block-start-style":{"isInherited":false,"supports":[]},"border-block-start-width":{"isInherited":false,"supports":[6]},"border-bottom-color":{"isInherited":false,"supports":[2]},"-moz-border-bottom-colors":{"isInherited":false,"supports":[2]},"border-bottom-left-radius":{"isInherited":false,"supports":[6,8]},"border-bottom-right-radius":{"isInherited":false,"supports":[6,8]},"border-bottom-style":{"isInherited":false,"supports":[]},"border-bottom-width":{"isInherited":false,"supports":[6]},"border-collapse":{"isInherited":true,"supports":[]},"border-image-outset":{"isInherited":false,"supports":[6,7]},"border-image-repeat":{"isInherited":false,"supports":[]},"border-image-slice":{"isInherited":false,"supports":[7,8]},"border-image-source":{"isInherited":false,"supports":[4,5,11]},"border-image-width":{"isInherited":false,"supports":[6,7,8]},"border-inline-end-color":{"isInherited":false,"supports":[2]},"border-inline-end-style":{"isInherited":false,"supports":[]},"border-inline-end-width":{"isInherited":false,"supports":[6]},"border-inline-start-color":{"isInherited":false,"supports":[2]},"border-inline-start-style":{"isInherited":false,"supports":[]},"border-inline-start-width":{"isInherited":false,"supports":[6]},"border-left-color":{"isInherited":false,"supports":[2]},"-moz-border-left-colors":{"isInherited":false,"supports":[2]},"border-left-style":{"isInherited":false,"supports":[]},"border-left-width":{"isInherited":false,"supports":[6]},"border-right-color":{"isInherited":false,"supports":[2]},"-moz-border-right-colors":{"isInherited":false,"supports":[2]},"border-right-style":{"isInherited":false,"supports":[]},"border-right-width":{"isInherited":false,"supports":[6]},"border-spacing":{"isInherited":true,"supports":[6]},"border-top-color":{"isInherited":false,"supports":[2]},"-moz-border-top-colors":{"isInherited":false,"supports":[2]},"border-top-left-radius":{"isInherited":false,"supports":[6,8]},"border-top-right-radius":{"isInherited":false,"supports":[6,8]},"border-top-style":{"isInherited":false,"supports":[]},"border-top-width":{"isInherited":false,"supports":[6]},"bottom":{"isInherited":false,"supports":[6,8]},"-moz-box-align":{"isInherited":false,"supports":[]},"box-decoration-break":{"isInherited":false,"supports":[]},"-moz-box-direction":{"isInherited":false,"supports":[]},"-moz-box-flex":{"isInherited":false,"supports":[7]},"-moz-box-ordinal-group":{"isInherited":false,"supports":[7]},"-moz-box-orient":{"isInherited":false,"supports":[]},"-moz-box-pack":{"isInherited":false,"supports":[]},"box-shadow":{"isInherited":false,"supports":[2,6]},"box-sizing":{"isInherited":false,"supports":[]},"caption-side":{"isInherited":true,"supports":[]},"clear":{"isInherited":false,"supports":[]},"clip":{"isInherited":false,"supports":[]},"clip-path":{"isInherited":false,"supports":[11]},"clip-rule":{"isInherited":true,"supports":[]},"color":{"isInherited":true,"supports":[2]},"color-adjust":{"isInherited":true,"supports":[]},"color-interpolation":{"isInherited":true,"supports":[]},"color-interpolation-filters":{"isInherited":true,"supports":[]},"-moz-column-count":{"isInherited":false,"supports":[7]},"-moz-column-fill":{"isInherited":false,"supports":[]},"-moz-column-gap":{"isInherited":false,"supports":[6]},"-moz-column-rule-color":{"isInherited":false,"supports":[2]},"-moz-column-rule-style":{"isInherited":false,"supports":[]},"-moz-column-rule-width":{"isInherited":false,"supports":[6]},"-moz-column-width":{"isInherited":false,"supports":[6]},"content":{"isInherited":false,"supports":[11]},"-moz-control-character-visibility":{"isInherited":true,"supports":[]},"counter-increment":{"isInherited":false,"supports":[]},"counter-reset":{"isInherited":false,"supports":[]},"cursor":{"isInherited":true,"supports":[11]},"direction":{"isInherited":true,"supports":[]},"display":{"isInherited":false,"supports":[]},"dominant-baseline":{"isInherited":false,"supports":[]},"empty-cells":{"isInherited":true,"supports":[]},"fill":{"isInherited":true,"supports":[2,11]},"fill-opacity":{"isInherited":true,"supports":[7]},"fill-rule":{"isInherited":true,"supports":[]},"filter":{"isInherited":false,"supports":[11]},"flex-basis":{"isInherited":false,"supports":[6,8]},"flex-direction":{"isInherited":false,"supports":[]},"flex-grow":{"isInherited":false,"supports":[7]},"flex-shrink":{"isInherited":false,"supports":[7]},"flex-wrap":{"isInherited":false,"supports":[]},"float":{"isInherited":false,"supports":[]},"-moz-float-edge":{"isInherited":false,"supports":[]},"flood-color":{"isInherited":false,"supports":[2]},"flood-opacity":{"isInherited":false,"supports":[7]},"font-family":{"isInherited":true,"supports":[]},"font-feature-settings":{"isInherited":true,"supports":[]},"font-kerning":{"isInherited":true,"supports":[]},"font-language-override":{"isInherited":true,"supports":[]},"font-size":{"isInherited":true,"supports":[6,8]},"font-size-adjust":{"isInherited":true,"supports":[7]},"font-stretch":{"isInherited":true,"supports":[]},"font-style":{"isInherited":true,"supports":[]},"font-synthesis":{"isInherited":true,"supports":[]},"font-variant-alternates":{"isInherited":true,"supports":[]},"font-variant-caps":{"isInherited":true,"supports":[]},"font-variant-east-asian":{"isInherited":true,"supports":[]},"font-variant-ligatures":{"isInherited":true,"supports":[]},"font-variant-numeric":{"isInherited":true,"supports":[]},"font-variant-position":{"isInherited":true,"supports":[]},"font-weight":{"isInherited":true,"supports":[7]},"-moz-force-broken-image-icon":{"isInherited":false,"supports":[7]},"grid-auto-columns":{"isInherited":false,"supports":[6,8]},"grid-auto-flow":{"isInherited":false,"supports":[]},"grid-auto-rows":{"isInherited":false,"supports":[6,8]},"grid-column-end":{"isInherited":false,"supports":[7]},"grid-column-gap":{"isInherited":false,"supports":[6,8]},"grid-column-start":{"isInherited":false,"supports":[7]},"grid-row-end":{"isInherited":false,"supports":[7]},"grid-row-gap":{"isInherited":false,"supports":[6,8]},"grid-row-start":{"isInherited":false,"supports":[7]},"grid-template-areas":{"isInherited":false,"supports":[]},"grid-template-columns":{"isInherited":false,"supports":[6,8]},"grid-template-rows":{"isInherited":false,"supports":[6,8]},"height":{"isInherited":false,"supports":[6,8]},"hyphens":{"isInherited":true,"supports":[]},"image-orientation":{"isInherited":true,"supports":[1]},"-moz-image-region":{"isInherited":true,"supports":[]},"image-rendering":{"isInherited":true,"supports":[]},"ime-mode":{"isInherited":false,"supports":[]},"inline-size":{"isInherited":false,"supports":[6,8]},"isolation":{"isInherited":false,"supports":[]},"justify-content":{"isInherited":false,"supports":[]},"justify-items":{"isInherited":false,"supports":[]},"justify-self":{"isInherited":false,"supports":[]},"left":{"isInherited":false,"supports":[6,8]},"letter-spacing":{"isInherited":true,"supports":[6]},"lighting-color":{"isInherited":false,"supports":[2]},"line-height":{"isInherited":true,"supports":[6,7,8]},"list-style-image":{"isInherited":true,"supports":[11]},"list-style-position":{"isInherited":true,"supports":[]},"list-style-type":{"isInherited":true,"supports":[]},"margin-block-end":{"isInherited":false,"supports":[6,8]},"margin-block-start":{"isInherited":false,"supports":[6,8]},"margin-bottom":{"isInherited":false,"supports":[6,8]},"margin-inline-end":{"isInherited":false,"supports":[6,8]},"margin-inline-start":{"isInherited":false,"supports":[6,8]},"margin-left":{"isInherited":false,"supports":[6,8]},"margin-right":{"isInherited":false,"supports":[6,8]},"margin-top":{"isInherited":false,"supports":[6,8]},"marker-end":{"isInherited":true,"supports":[11]},"marker-mid":{"isInherited":true,"supports":[11]},"marker-offset":{"isInherited":false,"supports":[6]},"marker-start":{"isInherited":true,"supports":[11]},"mask":{"isInherited":false,"supports":[11]},"mask-type":{"isInherited":false,"supports":[]},"max-block-size":{"isInherited":false,"supports":[6,8]},"max-height":{"isInherited":false,"supports":[6,8]},"max-inline-size":{"isInherited":false,"supports":[6,8]},"max-width":{"isInherited":false,"supports":[6,8]},"min-block-size":{"isInherited":false,"supports":[6,8]},"min-height":{"isInherited":false,"supports":[6,8]},"min-inline-size":{"isInherited":false,"supports":[6,8]},"min-width":{"isInherited":false,"supports":[6,8]},"mix-blend-mode":{"isInherited":false,"supports":[]},"object-fit":{"isInherited":false,"supports":[]},"object-position":{"isInherited":false,"supports":[6,8]},"offset-block-end":{"isInherited":false,"supports":[6,8]},"offset-block-start":{"isInherited":false,"supports":[6,8]},"offset-inline-end":{"isInherited":false,"supports":[6,8]},"offset-inline-start":{"isInherited":false,"supports":[6,8]},"opacity":{"isInherited":false,"supports":[7]},"order":{"isInherited":false,"supports":[7]},"-moz-orient":{"isInherited":false,"supports":[]},"outline-color":{"isInherited":false,"supports":[2]},"outline-offset":{"isInherited":false,"supports":[6]},"-moz-outline-radius-bottomleft":{"isInherited":false,"supports":[6,8]},"-moz-outline-radius-bottomright":{"isInherited":false,"supports":[6,8]},"-moz-outline-radius-topleft":{"isInherited":false,"supports":[6,8]},"-moz-outline-radius-topright":{"isInherited":false,"supports":[6,8]},"outline-style":{"isInherited":false,"supports":[]},"outline-width":{"isInherited":false,"supports":[6]},"overflow-x":{"isInherited":false,"supports":[]},"overflow-y":{"isInherited":false,"supports":[]},"padding-block-end":{"isInherited":false,"supports":[6,8]},"padding-block-start":{"isInherited":false,"supports":[6,8]},"padding-bottom":{"isInherited":false,"supports":[6,8]},"padding-inline-end":{"isInherited":false,"supports":[6,8]},"padding-inline-start":{"isInherited":false,"supports":[6,8]},"padding-left":{"isInherited":false,"supports":[6,8]},"padding-right":{"isInherited":false,"supports":[6,8]},"padding-top":{"isInherited":false,"supports":[6,8]},"page-break-after":{"isInherited":false,"supports":[]},"page-break-before":{"isInherited":false,"supports":[]},"page-break-inside":{"isInherited":false,"supports":[]},"paint-order":{"isInherited":true,"supports":[]},"perspective":{"isInherited":false,"supports":[6]},"perspective-origin":{"isInherited":false,"supports":[6,8]},"pointer-events":{"isInherited":true,"supports":[]},"position":{"isInherited":false,"supports":[]},"quotes":{"isInherited":true,"supports":[]},"resize":{"isInherited":false,"supports":[]},"right":{"isInherited":false,"supports":[6,8]},"ruby-align":{"isInherited":true,"supports":[]},"ruby-position":{"isInherited":true,"supports":[]},"scroll-behavior":{"isInherited":false,"supports":[]},"scroll-snap-coordinate":{"isInherited":false,"supports":[6,8]},"scroll-snap-destination":{"isInherited":false,"supports":[6,8]},"scroll-snap-points-x":{"isInherited":false,"supports":[]},"scroll-snap-points-y":{"isInherited":false,"supports":[]},"scroll-snap-type-x":{"isInherited":false,"supports":[]},"scroll-snap-type-y":{"isInherited":false,"supports":[]},"shape-rendering":{"isInherited":true,"supports":[]},"-moz-stack-sizing":{"isInherited":false,"supports":[]},"stop-color":{"isInherited":false,"supports":[2]},"stop-opacity":{"isInherited":false,"supports":[7]},"stroke":{"isInherited":true,"supports":[2,11]},"stroke-dasharray":{"isInherited":true,"supports":[6,7,8]},"stroke-dashoffset":{"isInherited":true,"supports":[6,7,8]},"stroke-linecap":{"isInherited":true,"supports":[]},"stroke-linejoin":{"isInherited":true,"supports":[]},"stroke-miterlimit":{"isInherited":true,"supports":[7]},"stroke-opacity":{"isInherited":true,"supports":[7]},"stroke-width":{"isInherited":true,"supports":[6,7,8]},"-moz-tab-size":{"isInherited":true,"supports":[7]},"table-layout":{"isInherited":false,"supports":[]},"text-align":{"isInherited":true,"supports":[]},"text-align-last":{"isInherited":true,"supports":[]},"text-anchor":{"isInherited":true,"supports":[]},"text-combine-upright":{"isInherited":true,"supports":[]},"text-decoration-color":{"isInherited":false,"supports":[2]},"text-decoration-line":{"isInherited":false,"supports":[]},"text-decoration-style":{"isInherited":false,"supports":[]},"text-emphasis-color":{"isInherited":true,"supports":[2]},"text-emphasis-position":{"isInherited":true,"supports":[]},"text-emphasis-style":{"isInherited":true,"supports":[]},"-webkit-text-fill-color":{"isInherited":true,"supports":[2]},"text-indent":{"isInherited":true,"supports":[6,8]},"text-orientation":{"isInherited":true,"supports":[]},"text-overflow":{"isInherited":false,"supports":[]},"text-rendering":{"isInherited":true,"supports":[]},"text-shadow":{"isInherited":true,"supports":[2,6]},"-moz-text-size-adjust":{"isInherited":true,"supports":[]},"-webkit-text-stroke-color":{"isInherited":true,"supports":[2]},"-webkit-text-stroke-width":{"isInherited":true,"supports":[6]},"text-transform":{"isInherited":true,"supports":[]},"top":{"isInherited":false,"supports":[6,8]},"touch-action":{"isInherited":false,"supports":[]},"transform":{"isInherited":false,"supports":[]},"transform-box":{"isInherited":false,"supports":[]},"transform-origin":{"isInherited":false,"supports":[6,8]},"transform-style":{"isInherited":false,"supports":[]},"transition-delay":{"isInherited":false,"supports":[9]},"transition-duration":{"isInherited":false,"supports":[9]},"transition-property":{"isInherited":false,"supports":[]},"transition-timing-function":{"isInherited":false,"supports":[10]},"unicode-bidi":{"isInherited":false,"supports":[]},"-moz-user-focus":{"isInherited":true,"supports":[]},"-moz-user-input":{"isInherited":true,"supports":[]},"-moz-user-modify":{"isInherited":true,"supports":[]},"-moz-user-select":{"isInherited":false,"supports":[]},"vector-effect":{"isInherited":false,"supports":[]},"vertical-align":{"isInherited":false,"supports":[6,8]},"visibility":{"isInherited":true,"supports":[]},"white-space":{"isInherited":true,"supports":[]},"width":{"isInherited":false,"supports":[6,8]},"will-change":{"isInherited":false,"supports":[]},"-moz-window-dragging":{"isInherited":false,"supports":[]},"word-break":{"isInherited":true,"supports":[]},"word-spacing":{"isInherited":true,"supports":[6,8]},"overflow-wrap":{"isInherited":true,"supports":[]},"writing-mode":{"isInherited":true,"supports":[]},"z-index":{"isInherited":false,"supports":[7]},"all":{"isInherited":false,"supports":[1,2,4,5,6,7,8,9,10,11]},"animation":{"isInherited":false,"supports":[7,9,10]},"background":{"isInherited":false,"supports":[2,4,5,6,8,11]},"background-position":{"isInherited":false,"supports":[6,8]},"border":{"isInherited":false,"supports":[2,6]},"border-block-end":{"isInherited":false,"supports":[2,6]},"border-block-start":{"isInherited":false,"supports":[2,6]},"border-bottom":{"isInherited":false,"supports":[2,6]},"border-color":{"isInherited":false,"supports":[2]},"border-image":{"isInherited":false,"supports":[4,5,6,7,8,11]},"border-inline-end":{"isInherited":false,"supports":[2,6]},"border-inline-start":{"isInherited":false,"supports":[2,6]},"border-left":{"isInherited":false,"supports":[2,6]},"border-radius":{"isInherited":false,"supports":[6,8]},"border-right":{"isInherited":false,"supports":[2,6]},"border-style":{"isInherited":false,"supports":[]},"border-top":{"isInherited":false,"supports":[2,6]},"border-width":{"isInherited":false,"supports":[6]},"-moz-column-rule":{"isInherited":false,"supports":[2,6]},"-moz-columns":{"isInherited":false,"supports":[6,7]},"flex":{"isInherited":false,"supports":[6,7,8]},"flex-flow":{"isInherited":false,"supports":[]},"font":{"isInherited":true,"supports":[6,7,8]},"font-variant":{"isInherited":true,"supports":[]},"grid":{"isInherited":false,"supports":[6,8]},"grid-area":{"isInherited":false,"supports":[7]},"grid-column":{"isInherited":false,"supports":[7]},"grid-gap":{"isInherited":false,"supports":[6,8]},"grid-row":{"isInherited":false,"supports":[7]},"grid-template":{"isInherited":false,"supports":[6,8]},"list-style":{"isInherited":true,"supports":[11]},"margin":{"isInherited":false,"supports":[6,8]},"marker":{"isInherited":true,"supports":[11]},"outline":{"isInherited":false,"supports":[2,6]},"-moz-outline-radius":{"isInherited":false,"supports":[6,8]},"overflow":{"isInherited":false,"supports":[]},"padding":{"isInherited":false,"supports":[6,8]},"scroll-snap-type":{"isInherited":false,"supports":[]},"text-decoration":{"isInherited":false,"supports":[2]},"text-emphasis":{"isInherited":true,"supports":[2]},"-webkit-text-stroke":{"isInherited":true,"supports":[2,6]},"-moz-transform":{"isInherited":false,"supports":[]},"transition":{"isInherited":false,"supports":[9,10]},"word-wrap":{"isInherited":true,"supports":[]},"-moz-transform-origin":{"isInherited":false,"supports":[6,8]},"-moz-perspective-origin":{"isInherited":false,"supports":[6,8]},"-moz-perspective":{"isInherited":false,"supports":[6]},"-moz-transform-style":{"isInherited":false,"supports":[]},"-moz-backface-visibility":{"isInherited":false,"supports":[]},"-moz-border-image":{"isInherited":false,"supports":[4,5,6,7,8,11]},"-moz-transition":{"isInherited":false,"supports":[9,10]},"-moz-transition-delay":{"isInherited":false,"supports":[9]},"-moz-transition-duration":{"isInherited":false,"supports":[9]},"-moz-transition-property":{"isInherited":false,"supports":[]},"-moz-transition-timing-function":{"isInherited":false,"supports":[10]},"-moz-animation":{"isInherited":false,"supports":[7,9,10]},"-moz-animation-delay":{"isInherited":false,"supports":[9]},"-moz-animation-direction":{"isInherited":false,"supports":[]},"-moz-animation-duration":{"isInherited":false,"supports":[9]},"-moz-animation-fill-mode":{"isInherited":false,"supports":[]},"-moz-animation-iteration-count":{"isInherited":false,"supports":[7]},"-moz-animation-name":{"isInherited":false,"supports":[]},"-moz-animation-play-state":{"isInherited":false,"supports":[]},"-moz-animation-timing-function":{"isInherited":false,"supports":[10]},"-moz-box-sizing":{"isInherited":false,"supports":[]},"-moz-font-feature-settings":{"isInherited":true,"supports":[]},"-moz-font-language-override":{"isInherited":true,"supports":[]},"-moz-padding-end":{"isInherited":false,"supports":[6,8]},"-moz-padding-start":{"isInherited":false,"supports":[6,8]},"-moz-margin-end":{"isInherited":false,"supports":[6,8]},"-moz-margin-start":{"isInherited":false,"supports":[6,8]},"-moz-border-end":{"isInherited":false,"supports":[2,6]},"-moz-border-end-color":{"isInherited":false,"supports":[2]},"-moz-border-end-style":{"isInherited":false,"supports":[]},"-moz-border-end-width":{"isInherited":false,"supports":[6]},"-moz-border-start":{"isInherited":false,"supports":[2,6]},"-moz-border-start-color":{"isInherited":false,"supports":[2]},"-moz-border-start-style":{"isInherited":false,"supports":[]},"-moz-border-start-width":{"isInherited":false,"supports":[6]},"-moz-hyphens":{"isInherited":true,"supports":[]},"-moz-text-align-last":{"isInherited":true,"supports":[]},"-webkit-animation":{"isInherited":false,"supports":[7,9,10]},"-webkit-animation-delay":{"isInherited":false,"supports":[9]},"-webkit-animation-direction":{"isInherited":false,"supports":[]},"-webkit-animation-duration":{"isInherited":false,"supports":[9]},"-webkit-animation-fill-mode":{"isInherited":false,"supports":[]},"-webkit-animation-iteration-count":{"isInherited":false,"supports":[7]},"-webkit-animation-name":{"isInherited":false,"supports":[]},"-webkit-animation-play-state":{"isInherited":false,"supports":[]},"-webkit-animation-timing-function":{"isInherited":false,"supports":[10]},"-webkit-filter":{"isInherited":false,"supports":[11]},"-webkit-text-size-adjust":{"isInherited":true,"supports":[]},"-webkit-transform":{"isInherited":false,"supports":[]},"-webkit-transform-origin":{"isInherited":false,"supports":[6,8]},"-webkit-transform-style":{"isInherited":false,"supports":[]},"-webkit-backface-visibility":{"isInherited":false,"supports":[]},"-webkit-perspective":{"isInherited":false,"supports":[6]},"-webkit-perspective-origin":{"isInherited":false,"supports":[6,8]},"-webkit-transition":{"isInherited":false,"supports":[9,10]},"-webkit-transition-delay":{"isInherited":false,"supports":[9]},"-webkit-transition-duration":{"isInherited":false,"supports":[9]},"-webkit-transition-property":{"isInherited":false,"supports":[]},"-webkit-transition-timing-function":{"isInherited":false,"supports":[10]},"-webkit-border-radius":{"isInherited":false,"supports":[6,8]},"-webkit-border-top-left-radius":{"isInherited":false,"supports":[6,8]},"-webkit-border-top-right-radius":{"isInherited":false,"supports":[6,8]},"-webkit-border-bottom-left-radius":{"isInherited":false,"supports":[6,8]},"-webkit-border-bottom-right-radius":{"isInherited":false,"supports":[6,8]},"-webkit-background-clip":{"isInherited":false,"supports":[]},"-webkit-background-origin":{"isInherited":false,"supports":[]},"-webkit-background-size":{"isInherited":false,"supports":[6,8]},"-webkit-border-image":{"isInherited":false,"supports":[4,5,6,7,8,11]},"-webkit-box-shadow":{"isInherited":false,"supports":[2,6]},"-webkit-box-sizing":{"isInherited":false,"supports":[]},"-webkit-box-flex":{"isInherited":false,"supports":[7]},"-webkit-box-ordinal-group":{"isInherited":false,"supports":[7]},"-webkit-box-orient":{"isInherited":false,"supports":[]},"-webkit-box-direction":{"isInherited":false,"supports":[]},"-webkit-box-align":{"isInherited":false,"supports":[]},"-webkit-box-pack":{"isInherited":false,"supports":[]},"-webkit-flex-direction":{"isInherited":false,"supports":[]},"-webkit-flex-wrap":{"isInherited":false,"supports":[]},"-webkit-flex-flow":{"isInherited":false,"supports":[]},"-webkit-order":{"isInherited":false,"supports":[7]},"-webkit-flex":{"isInherited":false,"supports":[6,7,8]},"-webkit-flex-grow":{"isInherited":false,"supports":[7]},"-webkit-flex-shrink":{"isInherited":false,"supports":[7]},"-webkit-flex-basis":{"isInherited":false,"supports":[6,8]},"-webkit-justify-content":{"isInherited":false,"supports":[]},"-webkit-align-items":{"isInherited":false,"supports":[]},"-webkit-align-self":{"isInherited":false,"supports":[]},"-webkit-align-content":{"isInherited":false,"supports":[]},"-webkit-user-select":{"isInherited":false,"supports":[]}};
+/*eslint-enable */
 
 exports.CSS_PROPERTIES_DB = {
   properties: exports.CSS_PROPERTIES,
   pseudoElements: exports.PSEUDO_ELEMENTS
 };
--- a/devtools/shared/tests/unit/test_css-properties-db.js
+++ b/devtools/shared/tests/unit/test_css-properties-db.js
@@ -1,36 +1,48 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
-// Test that css-properties-db matches platform.
+// Test that the devtool's client-side css-properties-db matches the values on the
+// platform.
 
 "use strict";
 
 const DOMUtils = Components.classes["@mozilla.org/inspector/dom-utils;1"]
                            .getService(Components.interfaces.inIDOMUtils);
 
-const {PSEUDO_ELEMENTS} = require("devtools/shared/css-properties-db");
+const {PSEUDO_ELEMENTS, CSS_PROPERTIES} = require("devtools/shared/css-properties-db");
+const {generateCssProperties} = require("devtools/server/actors/css-properties");
 
 function run_test() {
   // Check that the platform and client match for pseudo elements.
-  let foundPseudoElements = 0;
-  const platformPseudoElements = DOMUtils.getCSSPseudoElementNames();
-  const instructions = "If this assertion fails then it means that pseudo elements " +
-                       "have been added, removed, or changed on the platform and need " +
-                       "to be updated on the static client-side list of pseudo " +
-                       "elements within the devtools. " +
-                       "See devtools/shared/css-properties-db.js and " +
-                       "exports.PSEUDO_ELEMENTS for information on how to update the " +
-                       "list of pseudo elements to fix this test.";
+  deepEqual(PSEUDO_ELEMENTS, DOMUtils.getCSSPseudoElementNames(),
+            "If this assertion fails, then the client side CSS pseudo elements list in " +
+            "devtools is out of date with the pseudo elements on the platform. To fix " +
+            "this assertion open devtools/shared/css-properties-db.js and follow the " +
+            "instructions above the CSS_PSEUDO_ELEMENTS on how to re-generate the list.");
 
-  for (let element of PSEUDO_ELEMENTS) {
-    const hasElement = platformPseudoElements.includes(element);
-    ok(hasElement,
-       `"${element}" pseudo element from the client-side CSS properties database was ` +
-       `found on the platform. ${instructions}`);
-    foundPseudoElements += hasElement ? 1 : 0;
+  const propertiesErrorMessage = "If this assertion fails, then the client side CSS " +
+                                 "properties list in devtools is out of date with the " +
+                                 "CSS properties on the platform. To fix this " +
+                                 "assertion open devtools/shared/css-properties-db.js " +
+                                 "and follow the instructions above the CSS_PROPERTIES " +
+                                 "on how to re-generate the list.";
+
+  // Check that the platform and client match for CSS properties. Enumerate each property
+  // to aid in debugging.
+  const platformProperties = generateCssProperties();
+  for (let propertyName in CSS_PROPERTIES) {
+    const platformProperty = platformProperties[propertyName];
+    const clientProperty = CSS_PROPERTIES[propertyName];
+    deepEqual(platformProperty, clientProperty,
+      `Client and server match for "${propertyName}". ${propertiesErrorMessage}\n`);
   }
 
-  equal(foundPseudoElements, platformPseudoElements.length,
-        `The client side CSS properties database of psuedo element names should match ` +
-        `those found on the platform. ${instructions}`);
+  // Filter out OS-specific properties.
+  const platformPropertyNames = Object.keys(platformProperties).filter(
+    name => name.indexOf("-moz-osx-") === -1);
+  const clientPlatformNames = Object.keys(CSS_PROPERTIES);
+
+  deepEqual(platformPropertyNames, clientPlatformNames,
+        `The client side CSS properties database names match those found on the ` +
+        `platform. ${propertiesErrorMessage}`);
 }
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java
@@ -45,16 +45,17 @@ import org.mozilla.gecko.home.HomeBanner
 import org.mozilla.gecko.home.HomeConfig;
 import org.mozilla.gecko.home.HomeConfig.PanelType;
 import org.mozilla.gecko.home.HomeConfigPrefsBackend;
 import org.mozilla.gecko.home.HomeFragment;
 import org.mozilla.gecko.home.HomePager;
 import org.mozilla.gecko.home.HomePager.OnUrlOpenInBackgroundListener;
 import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
 import org.mozilla.gecko.home.HomePanelsManager;
+import org.mozilla.gecko.home.HomeScreen;
 import org.mozilla.gecko.home.SearchEngine;
 import org.mozilla.gecko.javaaddons.JavaAddonManager;
 import org.mozilla.gecko.media.AudioFocusAgent;
 import org.mozilla.gecko.menu.GeckoMenu;
 import org.mozilla.gecko.menu.GeckoMenuItem;
 import org.mozilla.gecko.mozglue.SafeIntent;
 import org.mozilla.gecko.overlays.ui.ShareDialog;
 import org.mozilla.gecko.permissions.Permissions;
@@ -167,18 +168,16 @@ import android.animation.ObjectAnimator;
 import org.json.JSONException;
 import org.json.JSONObject;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.net.URLEncoder;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
@@ -234,19 +233,24 @@ public class BrowserApp extends GeckoApp
     public ViewFlipper mActionBarFlipper;
     public ActionModeCompatView mActionBar;
     private BrowserToolbar mBrowserToolbar;
     private View mDoorhangerOverlay;
     // We can't name the TabStrip class because it's not included on API 9.
     private TabStripInterface mTabStrip;
     private ToolbarProgressView mProgressView;
     private FirstrunAnimationContainer mFirstrunAnimationContainer;
-    private HomePager mHomePager;
+    private HomeScreen mHomeScreen;
     private TabsPanel mTabsPanel;
-    private ViewGroup mHomePagerContainer;
+    /**
+     * Container for the home screen implementation. This will be populated with any valid
+     * home screen implementation (currently that is just the HomePager, but that will be extended
+     * to permit further experimental replacement panels such as the activity-stream panel).
+     */
+    private ViewGroup mHomeScreenContainer;
     private ActionModeCompat mActionMode;
     private TabHistoryController tabHistoryController;
     private ZoomedView mZoomedView;
 
     private static final int GECKO_TOOLS_MENU = -1;
     private static final int ADDON_MENU_OFFSET = 1000;
     public static final String TAB_HISTORY_FRAGMENT_TAG = "tabHistoryFragment";
 
@@ -631,31 +635,31 @@ public class BrowserApp extends GeckoApp
 
         ((GeckoApp.MainLayout) mMainLayout).setTouchEventInterceptor(new HideOnTouchListener());
         ((GeckoApp.MainLayout) mMainLayout).setMotionEventInterceptor(new MotionEventInterceptor() {
             @Override
             public boolean onInterceptMotionEvent(View view, MotionEvent event) {
                 // If we get a gamepad panning MotionEvent while the focus is not on the layerview,
                 // put the focus on the layerview and carry on
                 if (mLayerView != null && !mLayerView.hasFocus() && GamepadUtils.isPanningControl(event)) {
-                    if (mHomePager == null) {
+                    if (mHomeScreen == null) {
                         return false;
                     }
 
                     if (isHomePagerVisible()) {
                         mLayerView.requestFocus();
                     } else {
-                        mHomePager.requestFocus();
+                        mHomeScreen.requestFocus();
                     }
                 }
                 return false;
             }
         });
 
-        mHomePagerContainer = (ViewGroup) findViewById(R.id.home_pager_container);
+        mHomeScreenContainer = (ViewGroup) findViewById(R.id.home_screen_container);
 
         mBrowserSearchContainer = findViewById(R.id.search_container);
         mBrowserSearch = (BrowserSearch) getSupportFragmentManager().findFragmentByTag(BROWSER_SEARCH_TAG);
         if (mBrowserSearch == null) {
             mBrowserSearch = BrowserSearch.newInstance();
             mBrowserSearch.setUserVisibleHint(false);
         }
 
@@ -723,17 +727,17 @@ public class BrowserApp extends GeckoApp
                         return new NdefMessage(new NdefRecord[] { NdefRecord.createUri(tab.getURL()) });
                     }
                 }, this);
             }
         }
 
         if (savedInstanceState != null) {
             mDynamicToolbar.onRestoreInstanceState(savedInstanceState);
-            mHomePagerContainer.setPadding(0, savedInstanceState.getInt(STATE_ABOUT_HOME_TOP_PADDING), 0, 0);
+            mHomeScreenContainer.setPadding(0, savedInstanceState.getInt(STATE_ABOUT_HOME_TOP_PADDING), 0, 0);
         }
 
         mDynamicToolbar.setEnabledChangedListener(new DynamicToolbar.OnEnabledChangedListener() {
             @Override
             public void onEnabledChanged(boolean enabled) {
                 setDynamicToolbarEnabled(enabled);
             }
         });
@@ -1149,17 +1153,17 @@ public class BrowserApp extends GeckoApp
                 filterEditingMode(searchText, handler);
             }
         });
 
         mBrowserToolbar.setOnFocusChangeListener(new View.OnFocusChangeListener() {
             @Override
             public void onFocusChange(View v, boolean hasFocus) {
                 if (isHomePagerVisible()) {
-                    mHomePager.onToolbarFocusChange(hasFocus);
+                    mHomeScreen.onToolbarFocusChange(hasFocus);
                 }
             }
         });
 
         mBrowserToolbar.setOnStartEditingListener(new BrowserToolbar.OnStartEditingListener() {
             @Override
             public void onStartEditing() {
                 final Tab selectedTab = Tabs.getInstance().getSelectedTab();
@@ -1206,24 +1210,24 @@ public class BrowserApp extends GeckoApp
     private void setDynamicToolbarEnabled(boolean enabled) {
         ThreadUtils.assertOnUiThread();
 
         if (enabled) {
             if (mLayerView != null) {
                 mLayerView.getDynamicToolbarAnimator().addTranslationListener(this);
             }
             setToolbarMargin(0);
-            mHomePagerContainer.setPadding(0, mBrowserChrome.getHeight(), 0, 0);
+            mHomeScreenContainer.setPadding(0, mBrowserChrome.getHeight(), 0, 0);
         } else {
             // Immediately show the toolbar when disabling the dynamic
             // toolbar.
             if (mLayerView != null) {
                 mLayerView.getDynamicToolbarAnimator().removeTranslationListener(this);
             }
-            mHomePagerContainer.setPadding(0, 0, 0, 0);
+            mHomeScreenContainer.setPadding(0, 0, 0, 0);
             if (mBrowserChrome != null) {
                 ViewHelper.setTranslationY(mBrowserChrome, 0);
             }
             if (mLayerView != null) {
                 mLayerView.setSurfaceTranslation(0);
             }
         }
 
@@ -1558,17 +1562,17 @@ public class BrowserApp extends GeckoApp
         if (!mDynamicToolbar.isEnabled() || isHomePagerVisible()) {
             // Use aVisibleHeight here so that when the dynamic toolbar is
             // enabled, the padding will animate with the toolbar becoming
             // visible.
             if (mDynamicToolbar.isEnabled()) {
                 // When the dynamic toolbar is enabled, set the padding on the
                 // about:home widget directly - this is to avoid resizing the
                 // LayerView, which can cause visible artifacts.
-                mHomePagerContainer.setPadding(0, height, 0, 0);
+                mHomeScreenContainer.setPadding(0, height, 0, 0);
             } else {
                 setToolbarMargin(height);
                 height = 0;
             }
         } else {
             setToolbarMargin(0);
         }
 
@@ -2194,17 +2198,17 @@ public class BrowserApp extends GeckoApp
 
         mMainLayoutAnimator = null;
     }
 
     @Override
     public void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         mDynamicToolbar.onSaveInstanceState(outState);
-        outState.putInt(STATE_ABOUT_HOME_TOP_PADDING, mHomePagerContainer.getPaddingTop());
+        outState.putInt(STATE_ABOUT_HOME_TOP_PADDING, mHomeScreenContainer.getPaddingTop());
     }
 
     /**
      * Attempts to switch to an open tab with the given URL.
      * <p>
      * If the tab exists, this method cancels any in-progress editing as well as
      * calling {@link Tabs#selectTab(int)}.
      *
@@ -2288,23 +2292,23 @@ public class BrowserApp extends GeckoApp
         }
 
         Tabs.getInstance().loadUrl(url, searchEngine, -1, flags);
 
         mBrowserToolbar.cancelEdit();
     }
 
     private boolean isHomePagerVisible() {
-        return (mHomePager != null && mHomePager.isVisible()
-            && mHomePagerContainer != null && mHomePagerContainer.getVisibility() == View.VISIBLE);
+        return (mHomeScreen != null && mHomeScreen.isVisible()
+                && mHomeScreenContainer != null && mHomeScreenContainer.getVisibility() == View.VISIBLE);
     }
 
     private boolean isFirstrunVisible() {
         return (mFirstrunAnimationContainer != null && mFirstrunAnimationContainer.isVisible()
-            && mHomePagerContainer != null && mHomePagerContainer.getVisibility() == View.VISIBLE);
+                && mHomeScreenContainer != null && mHomeScreenContainer.getVisibility() == View.VISIBLE);
     }
 
     /**
      * Enters editing mode with the current tab's URL. There might be no
      * tabs loaded by the time the user enters editing mode e.g. just after
      * the app starts. In this case, we simply fallback to an empty URL.
      */
     private void enterEditingMode() {
@@ -2648,27 +2652,27 @@ public class BrowserApp extends GeckoApp
                 public void onFinish() {
                     if (mFirstrunAnimationContainer.showBrowserHint()) {
                         enterEditingMode();
                     }
                 }
             });
         }
 
-        mHomePagerContainer.setVisibility(View.VISIBLE);
+        mHomeScreenContainer.setVisibility(View.VISIBLE);
     }
 
     private void showHomePager(String panelId, Bundle panelRestoreData) {
         showHomePagerWithAnimator(panelId, panelRestoreData, null);
     }
 
     private void showHomePagerWithAnimator(String panelId, Bundle panelRestoreData, PropertyAnimator animator) {
         if (isHomePagerVisible()) {
             // Home pager already visible, make sure it shows the correct panel.
-            mHomePager.showPanel(panelId, panelRestoreData);
+            mHomeScreen.showPanel(panelId, panelRestoreData);
             return;
         }
 
         // This must be called before the dynamic toolbar is set visible because it calls
         // FormAssistPopup.onMetricsChanged, which queues a runnable that undoes the effect of hide.
         // With hide first, onMetricsChanged will return early instead.
         mFormAssistPopup.hide();
         mFindInPageBar.hide();
@@ -2677,60 +2681,60 @@ public class BrowserApp extends GeckoApp
         refreshToolbarHeight();
 
         // Show the toolbar before hiding about:home so the
         // onMetricsChanged callback still works.
         if (mDynamicToolbar.isEnabled()) {
             mDynamicToolbar.setVisible(true, VisibilityTransition.IMMEDIATE);
         }
 
-        if (mHomePager == null) {
+        if (mHomeScreen == null) {
             final ViewStub homePagerStub = (ViewStub) findViewById(R.id.home_pager_stub);
-            mHomePager = (HomePager) homePagerStub.inflate();
-
-            mHomePager.setOnPanelChangeListener(new HomePager.OnPanelChangeListener() {
+            mHomeScreen = (HomePager) homePagerStub.inflate();
+
+            mHomeScreen.setOnPanelChangeListener(new HomeScreen.OnPanelChangeListener() {
                 @Override
                 public void onPanelSelected(String panelId) {
                     final Tab currentTab = Tabs.getInstance().getSelectedTab();
                     if (currentTab != null) {
                         currentTab.setMostRecentHomePanel(panelId);
                     }
                 }
             });
 
             // Set this listener to persist restore data (via the Tab) every time panel state changes.
-            mHomePager.setPanelStateChangeListener(new HomeFragment.PanelStateChangeListener() {
+            mHomeScreen.setPanelStateChangeListener(new HomeFragment.PanelStateChangeListener() {
                 @Override
                 public void onStateChanged(Bundle bundle) {
                     final Tab currentTab = Tabs.getInstance().getSelectedTab();
                     if (currentTab != null) {
                         currentTab.setMostRecentHomePanelData(bundle);
                     }
                 }
             });
 
             // Don't show the banner in guest mode.
             if (!Restrictions.isUserRestricted()) {
                 final ViewStub homeBannerStub = (ViewStub) findViewById(R.id.home_banner_stub);
                 final HomeBanner homeBanner = (HomeBanner) homeBannerStub.inflate();
-                mHomePager.setBanner(homeBanner);
+                mHomeScreen.setBanner(homeBanner);
 
                 // Remove the banner from the view hierarchy if it is dismissed.
                 homeBanner.setOnDismissListener(new HomeBanner.OnDismissListener() {
                     @Override
                     public void onDismiss() {
-                        mHomePager.setBanner(null);
-                        mHomePagerContainer.removeView(homeBanner);
+                        mHomeScreen.setBanner(null);
+                        mHomeScreenContainer.removeView(homeBanner);
                     }
                 });
             }
         }
 
-        mHomePagerContainer.setVisibility(View.VISIBLE);
-        mHomePager.load(getSupportLoaderManager(),
+        mHomeScreenContainer.setVisibility(View.VISIBLE);
+        mHomeScreen.load(getSupportLoaderManager(),
                         getSupportFragmentManager(),
                         panelId,
                         panelRestoreData,
                         animator);
 
         // Hide the web content so it cannot be focused by screen readers.
         hideWebContentOnPropertyAnimationEnd(animator);
     }
@@ -2800,20 +2804,20 @@ public class BrowserApp extends GeckoApp
             return;
         }
 
         // Prevent race in hiding web content - see declaration for more info.
         mHideWebContentOnAnimationEnd = false;
 
         // Display the previously hidden web content (which prevented screen reader access).
         mLayerView.setVisibility(View.VISIBLE);
-        mHomePagerContainer.setVisibility(View.GONE);
-
-        if (mHomePager != null) {
-            mHomePager.unload();
+        mHomeScreenContainer.setVisibility(View.GONE);
+
+        if (mHomeScreen != null) {
+            mHomeScreen.unload();
         }
 
         mBrowserToolbar.setNextFocusDownId(R.id.layer_view);
 
         // Refresh toolbar height to possibly restore the toolbar padding
         refreshToolbarHeight();
     }
 
@@ -2839,17 +2843,17 @@ public class BrowserApp extends GeckoApp
         if (mBrowserSearch.getUserVisibleHint()) {
             return;
         }
 
         mBrowserSearchContainer.setVisibility(View.VISIBLE);
 
         // Prevent overdraw by hiding the underlying web content and HomePager View
         hideWebContent();
-        mHomePagerContainer.setVisibility(View.INVISIBLE);
+        mHomeScreenContainer.setVisibility(View.INVISIBLE);
 
         final FragmentManager fm = getSupportFragmentManager();
 
         // In certain situations, showBrowserSearch() can be called immediately after hideBrowserSearch()
         // (see bug 925012). Because of an Android bug (http://code.google.com/p/android/issues/detail?id=61179),
         // calling FragmentTransaction#add immediately after FragmentTransaction#remove won't add the fragment's
         // view to the layout. Calling FragmentManager#executePendingTransactions before re-adding the fragment
         // prevents this issue.
--- a/mobile/android/base/java/org/mozilla/gecko/home/HomePager.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/HomePager.java
@@ -16,29 +16,36 @@ import org.mozilla.gecko.TelemetryContra
 import org.mozilla.gecko.animation.PropertyAnimator;
 import org.mozilla.gecko.animation.ViewHelper;
 import org.mozilla.gecko.home.HomeAdapter.OnAddPanelListener;
 import org.mozilla.gecko.home.HomeConfig.PanelConfig;
 import org.mozilla.gecko.util.Experiments;
 import org.mozilla.gecko.util.ThreadUtils;
 
 import android.content.Context;
+import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.LoaderManager;
 import android.support.v4.app.LoaderManager.LoaderCallbacks;
 import android.support.v4.content.Loader;
 import android.support.v4.view.ViewPager;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 
-public class HomePager extends ViewPager {
+public class HomePager extends ViewPager implements HomeScreen {
+
+    @Override
+    public boolean requestFocus(int direction, Rect previouslyFocusedRect) {
+        return super.requestFocus(direction, previouslyFocusedRect);
+    }
+
     private static final int LOADER_ID_CONFIG = 0;
 
     private final Context mContext;
     private volatile boolean mVisible;
     private Decor mDecor;
     private View mTabStrip;
     private HomeBanner mHomeBanner;
     private int mDefaultPageIndex = -1;
@@ -106,28 +113,16 @@ public class HomePager extends ViewPager
          *
          * @param url to open.
          * @param flags to open new tab with.
          */
         public void onUrlOpenInBackground(String url, EnumSet<Flags> flags);
     }
 
     /**
-     * Interface for listening into ViewPager panel changes
-     */
-    public interface OnPanelChangeListener {
-        /**
-         * Called when a new panel is selected.
-         *
-         * @param panelId of the newly selected panel
-         */
-        public void onPanelSelected(String panelId);
-    }
-
-    /**
      * Special type of child views that could be added as pager decorations by default.
      */
     public interface Decor {
         void onAddPagerView(String title);
         void removeAllPagerViews();
         void onPageSelected(int position);
         void onPageScrolled(int position, float positionOffset, int positionOffsetPixels);
         void setOnTitleClickListener(TabMenuStrip.OnTitleClickListener onTitleClickListener);
@@ -200,16 +195,17 @@ public class HomePager extends ViewPager
         super.addView(child, index, params);
     }
 
     /**
      * Loads and initializes the pager.
      *
      * @param fm FragmentManager for the adapter
      */
+     @Override
     public void load(LoaderManager lm, FragmentManager fm, String panelId, Bundle restoreData, PropertyAnimator animator) {
         mLoadState = LoadState.LOADING;
 
         mVisible = true;
         mInitialPanelId = panelId;
         mRestoreData = restoreData;
 
         // Update the home banner message each time the HomePager is loaded.
@@ -252,16 +248,17 @@ public class HomePager extends ViewPager
                             PropertyAnimator.Property.ALPHA,
                             1.0f);
         }
     }
 
     /**
      * Removes all child fragments to free memory.
      */
+     @Override
     public void unload() {
         mVisible = false;
         setAdapter(null);
         mLoadState = LoadState.UNLOADED;
 
         // Stop UI Telemetry sessions.
         stopCurrentPanelTelemetrySession();
     }
@@ -301,16 +298,17 @@ public class HomePager extends ViewPager
      *  * HomePager has not loaded yet
      *  * Panel with the given panelId cannot be found
      *
      * If you're trying to open a built-in panel, consider loading the panel url directly with
      * {@link org.mozilla.gecko.AboutPages#getURLForBuiltinPanelType(HomeConfig.PanelType)}.
      *
      * @param panelId of the home panel to be shown.
      */
+     @Override
     public void showPanel(String panelId, Bundle restoreData) {
         if (!mVisible) {
             return;
         }
 
         switch (mLoadState) {
             case LOADING:
                 mInitialPanelId = panelId;
@@ -354,16 +352,17 @@ public class HomePager extends ViewPager
     public boolean dispatchTouchEvent(MotionEvent event) {
         if (mHomeBanner != null) {
             mHomeBanner.handleHomeTouch(event);
         }
 
         return super.dispatchTouchEvent(event);
     }
 
+    @Override
     public void onToolbarFocusChange(boolean hasFocus) {
         if (mHomeBanner == null) {
             return;
         }
 
         // We should only make the banner active if the toolbar is not focused and we are on the default page
         final boolean active = !hasFocus && getCurrentItem() == mDefaultPageIndex;
         mHomeBanner.setActive(active);
@@ -454,20 +453,22 @@ public class HomePager extends ViewPager
         ThreadUtils.getUiHandler().post(new Runnable() {
             @Override
             public void run() {
                 adapter.setCanLoadHint(true);
             }
         });
     }
 
+    @Override
     public void setOnPanelChangeListener(OnPanelChangeListener listener) {
        mPanelChangedListener = listener;
     }
 
+    @Override
     public void setPanelStateChangeListener(HomeFragment.PanelStateChangeListener listener) {
         mPanelStateChangeListener = listener;
 
         HomeAdapter adapter = (HomeAdapter) getAdapter();
         if (adapter != null) {
             adapter.setPanelStateChangeListener(listener);
         }
     }
new file mode 100644
--- /dev/null
+++ b/mobile/android/base/java/org/mozilla/gecko/home/HomeScreen.java
@@ -0,0 +1,57 @@
+package org.mozilla.gecko.home;
+
+import android.os.Bundle;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.LoaderManager;
+import android.view.View;
+
+import org.mozilla.gecko.animation.PropertyAnimator;
+
+/**
+ * Generic interface for any View that can be used as the homescreen.
+ *
+ * In the past we had the HomePager, which contained the usual homepanels (multiple panels: TopSites,
+ * bookmarks, history, etc.), which could be swiped between.
+ *
+ * This interface allows easily switching between different homepanel implementations. For example
+ * the prototype activity-stream panel (which will be a single panel combining the functionality
+ * of the previous panels).
+ */
+public interface HomeScreen {
+    /**
+     * Interface for listening into ViewPager panel changes
+     */
+    public interface OnPanelChangeListener {
+        /**
+         * Called when a new panel is selected.
+         *
+         * @param panelId of the newly selected panel
+         */
+        public void onPanelSelected(String panelId);
+    }
+
+    // The following two methods are actually methods of View. Since there is no View interface
+    // we're forced to do this instead of "extending" View. Any class implementing HomeScreen
+    // will have to implement these and pass them through to the underlying View.
+    boolean isVisible();
+    boolean requestFocus();
+
+    void onToolbarFocusChange(boolean hasFocus);
+
+    // The following three methods are HomePager specific. The persistence framework might need
+    // refactoring/generalising at some point, but it isn't entirely clear what other panels
+    // might need so we can leave these as is for now.
+    void showPanel(String panelId, Bundle restoreData);
+    void setOnPanelChangeListener(OnPanelChangeListener listener);
+    void setPanelStateChangeListener(HomeFragment.PanelStateChangeListener listener);
+
+    /**
+     * Set a banner that may be displayed at the bottom of the HomeScreen. This can be used
+     * e.g. to show snippets.
+     */
+    void setBanner(HomeBanner banner);
+
+    void load(LoaderManager lm, FragmentManager fm, String panelId, Bundle restoreData, PropertyAnimator animator);
+
+    void unload();
+}
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -421,16 +421,17 @@ gbjar.sources += ['java/org/mozilla/geck
     'home/HomeConfigLoader.java',
     'home/HomeConfigPrefsBackend.java',
     'home/HomeContextMenuInfo.java',
     'home/HomeExpandableListView.java',
     'home/HomeFragment.java',
     'home/HomeListView.java',
     'home/HomePager.java',
     'home/HomePanelsManager.java',
+    'home/HomeScreen.java',
     'home/ImageLoader.java',
     'home/MultiTypeCursorAdapter.java',
     'home/PanelAuthCache.java',
     'home/PanelAuthLayout.java',
     'home/PanelBackItemView.java',
     'home/PanelHeaderView.java',
     'home/PanelInfoManager.java',
     'home/PanelItemView.java',
--- a/mobile/android/base/resources/layout/gecko_app.xml
+++ b/mobile/android/base/resources/layout/gecko_app.xml
@@ -51,17 +51,17 @@
             </FrameLayout>
 
             <ViewStub android:id="@+id/zoomed_view_stub"
                       android:inflatedId="@+id/zoomed_view"
                       android:layout="@layout/zoomed_view"
                       android:layout_width="wrap_content"
                       android:layout_height="wrap_content" />
 
-            <FrameLayout android:id="@+id/home_pager_container"
+            <FrameLayout android:id="@+id/home_screen_container"
                          android:layout_width="match_parent"
                          android:layout_height="match_parent"
                          android:visibility="gone">
 
                 <ViewStub android:id="@+id/home_pager_stub"
                           android:layout="@layout/home_pager"
                           android:layout_width="match_parent"
                           android:layout_height="match_parent"/>
--- a/mobile/android/moz.configure
+++ b/mobile/android/moz.configure
@@ -34,17 +34,17 @@ project_flag('MOZ_ANDROID_MLS_STUMBLER',
              default=True)
 
 project_flag('MOZ_ANDROID_DOWNLOAD_CONTENT_SERVICE',
              help='Background service for downloading additional content at runtime',
              default=True)
 
 project_flag('MOZ_ANDROID_CUSTOM_TABS',
              help='Enable support for Android custom tabs',
-             default=False)
+             default=delayed_getattr(milestone, 'is_nightly'))
 
 # Enable the Switchboard A/B framework code.
 # Note: The framework is always included in the app. This flag controls
 # usage of the framework.
 project_flag('MOZ_SWITCHBOARD',
              help='Include Switchboard A/B framework on Android',
              default=True)
 
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/BaseTest.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/BaseTest.java
@@ -7,52 +7,46 @@ package org.mozilla.gecko.tests;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.HashSet;
 
-import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
 
 import org.mozilla.gecko.Actions;
 import org.mozilla.gecko.Element;
 import org.mozilla.gecko.GeckoAppShell;
 import org.mozilla.gecko.GeckoProfile;
 import org.mozilla.gecko.GeckoThread;
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.RobocopUtils;
 import org.mozilla.gecko.Tab;
 import org.mozilla.gecko.Tabs;
 
-import android.app.Activity;
 import android.content.ContentValues;
-import android.content.pm.ActivityInfo;
 import android.content.res.AssetManager;
 import android.database.Cursor;
 import android.os.Build;
-import android.os.SystemClock;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.app.FragmentManager;
 import android.text.TextUtils;
 import android.util.DisplayMetrics;
 import android.view.View;
-import android.view.inputmethod.InputMethodManager;
 import android.widget.AdapterView;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.ListAdapter;
 import android.widget.TextView;
 
 import com.robotium.solo.Condition;
-import com.robotium.solo.Solo;
 import com.robotium.solo.Timeout;
 
 /**
  *  A convenient base class suitable for most Robocop tests.
  */
 @SuppressWarnings("unchecked")
 abstract class BaseTest extends BaseRobocopTest {
     private static final int VERIFY_URL_TIMEOUT = 2000;
@@ -430,17 +424,17 @@ abstract class BaseTest extends BaseRobo
         final View menuView = mSolo.getView(R.id.menu);
         mAsserter.isnot(menuView, null, "Menu view is not null");
         mSolo.clickOnView(menuView, true);
         mAsserter.ok(waitForEnabledText(itemName), "Waiting for menu item " + itemName, itemName + " is present and enabled");
         mSolo.clickOnText(itemName);
     }
 
     public final void verifyHomePagerHidden() {
-        final View homePagerContainer = mSolo.getView(R.id.home_pager_container);
+        final View homePagerContainer = mSolo.getView(R.id.home_screen_container);
 
         boolean rc = waitForCondition(new Condition() {
             @Override
             public boolean isSatisfied() {
                 return homePagerContainer.getVisibility() != View.VISIBLE;
             }
         }, MAX_WAIT_HOME_PAGER_HIDDEN_MS);
 
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/components/AboutHomeComponent.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/components/AboutHomeComponent.java
@@ -41,17 +41,17 @@ public class AboutHomeComponent extends 
     // testing: 0.55f was tested on try and fails on armv6 devices.
     private static final float SWIPE_PERCENTAGE = 0.70f;
 
     public AboutHomeComponent(final UITestContext testContext) {
         super(testContext);
     }
 
     private View getHomePagerContainer() {
-        return mSolo.getView(R.id.home_pager_container);
+        return mSolo.getView(R.id.home_screen_container);
     }
 
     private ViewPager getHomePagerView() {
         return (ViewPager) mSolo.getView(R.id.home_pager);
     }
 
     private View getHomeBannerView() {
         if (mSolo.waitForView(R.id.home_banner)) {