Browse Source

easy fixes

Frank-Rainer Grahl 9 months ago
parent
commit
f2642663dc

+ 564 - 0
mozilla-release/patches/1463924-62a1.patch

@@ -0,0 +1,564 @@
+# HG changeset patch
+# User J. Ryan Stinnett <jryans@gmail.com>
+# Date 1527118236 18000
+# Node ID 73d696f9e675f144e6284f0f6517f04f88612ba5
+# Parent  b49efc8e82635a1e20031f51f297d6ed18d1bcd3
+Bug 1463924 - Remove Dev. Edition promo doorhanger. r=nchevobbe
+
+MozReview-Commit-ID: LIg6o35CvD2
+
+diff --git a/devtools/client/framework/dev-edition-promo/dev-edition-logo.png b/devtools/client/framework/dev-edition-promo/dev-edition-logo.png
+deleted file mode 100644
+index 4b90768d2d172703a185da55bf3ab9e619ca6a63..0000000000000000000000000000000000000000
+GIT binary patch
+literal 0
+Hc$@<O00001
+
+diff --git a/devtools/client/framework/dev-edition-promo/dev-edition-promo.css b/devtools/client/framework/dev-edition-promo/dev-edition-promo.css
+deleted file mode 100644
+--- a/devtools/client/framework/dev-edition-promo/dev-edition-promo.css
++++ /dev/null
+@@ -1,94 +0,0 @@
+-/* 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/. */
+-
+-window {
+-  -moz-appearance: none;
+-  background-color: transparent;
+-}
+-
+-#doorhanger-container {
+-  width: 450px;
+-}
+-
+-#top-panel {
+-  padding: 20px;
+-  background: #343c45; /* toolbars */
+-  color: #8fa1b2; /* body text */
+-/*
+- * Sloppy preprocessing since UNIX_BUT_NOT_MAC is only defined
+- * in `browser/app/profile/firefox.js`, which this file cannot
+- * depend on. Must style font-size to target linux.
+- */
+-%ifdef XP_UNIX
+-%ifndef XP_MACOSX
+-  font-size: 13px;
+-%else
+-  font-size: 15px;
+-%endif
+-%else
+-  font-size: 15px;
+-%endif
+-  line-height: 19px;
+-  min-height: 100px;
+-}
+-
+-#top-panel h1 {
+-  font-weight: bold;
+-  font-family: Open Sans, sans-serif;
+-  font-size: 1.1em;
+-}
+-
+-#top-panel p {
+-  font-family: Open Sans, sans-serif;
+-  font-size: 0.9em;
+-  width: 300px;
+-  display: block;
+-  margin: 5px 0px 0px 0px;
+-}
+-
+-#icon {
+-  background-image: url("chrome://devtools/content/framework/dev-edition-promo/dev-edition-logo.png");
+-  background-size: 64px 64px;
+-  background-repeat: no-repeat;
+-  width: 64px;
+-  height: 64px;
+-  margin-right: 20px;
+-}
+-
+-#lower-panel {
+-  padding: 20px;
+-  background-color: #252c33; /* tab toolbars */
+-  min-height: 75px;
+-  border-top: 1px solid #292e33; /* text high contrast (light) */
+-}
+-
+-#button-container {
+-  margin: auto 20px;
+-}
+-
+-#button-container button {
+-  font: message-box !important;
+-  font-size: 16px !important;
+-  cursor: pointer;
+-  width: 125px;
+-  opacity: 1;
+-  position: static;
+-  -moz-appearance: none;
+-  border-radius: 5px;
+-  height: 30px;
+-  width: 450px;
+-  /* Override embossed borders on Windows/Linux */
+-  border: none;
+-}
+-
+-#close {
+-  background-color: transparent;
+-  color: #8fa1b2; /* body text */
+-}
+-
+-#go {
+-  margin-left: 100px;
+-  background-color: #70bf53; /* green */
+-  color: #f5f7fa; /* selection text color */
+-}
+diff --git a/devtools/client/framework/dev-edition-promo/dev-edition-promo.xul b/devtools/client/framework/dev-edition-promo/dev-edition-promo.xul
+deleted file mode 100644
+--- a/devtools/client/framework/dev-edition-promo/dev-edition-promo.xul
++++ /dev/null
+@@ -1,36 +0,0 @@
+-<?xml version="1.0" encoding="utf-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/. -->
+-<!DOCTYPE window [
+-<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
+- %toolboxDTD;
+-]>
+-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+-<?xml-stylesheet rel="stylesheet" href="chrome://devtools/content/framework/dev-edition-promo/dev-edition-promo.css" type="text/css"?>
+-
+-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="dev-edition-promo">
+-  <vbox id="doorhanger-container">
+-    <hbox flex="1" id="top-panel">
+-      <image id="icon" />
+-      <vbox id="info">
+-        <h1>Using Developer Tools in your browser?</h1>
+-        <p>Download Firefox Developer Edition, our first browser made just for you.</p>
+-      </vbox>
+-    </hbox>
+-    <hbox id="lower-panel" flex="1">
+-      <hbox id="button-container" flex="1">
+-        <button id="close"
+-                flex="1"
+-                standalone="true"
+-                label="No thanks">
+-        </button>
+-        <button id="go"
+-                flex="1"
+-                standalone="true"
+-                label="Learn more »">
+-        </button>
+-      </hbox>
+-    </hbox>
+-  </vbox>
+-</window>
+diff --git a/devtools/client/framework/toolbox.js b/devtools/client/framework/toolbox.js
+--- a/devtools/client/framework/toolbox.js
++++ b/devtools/client/framework/toolbox.js
+@@ -40,18 +40,16 @@ const L10N = new LocalizationHelper("dev
+ loader.lazyRequireGetter(this, "getHighlighterUtils",
+   "devtools/client/framework/toolbox-highlighter-utils", true);
+ loader.lazyRequireGetter(this, "Selection",
+   "devtools/client/framework/selection", true);
+ loader.lazyRequireGetter(this, "InspectorFront",
+   "devtools/shared/fronts/inspector", true);
+ loader.lazyRequireGetter(this, "flags",
+   "devtools/shared/flags");
+-loader.lazyRequireGetter(this, "showDoorhanger",
+-  "devtools/client/shared/doorhanger", true);
+ loader.lazyRequireGetter(this, "createPerformanceFront",
+   "devtools/shared/fronts/performance", true);
+ loader.lazyRequireGetter(this, "system",
+   "devtools/shared/system");
+ loader.lazyRequireGetter(this, "getPreferenceFront",
+   "devtools/shared/fronts/preference", true);
+ loader.lazyRequireGetter(this, "KeyShortcuts",
+   "devtools/client/shared/key-shortcuts");
+@@ -132,17 +130,16 @@ function Toolbox(target, selectedTool, h
+   this._highlighterReady = this._highlighterReady.bind(this);
+   this._highlighterHidden = this._highlighterHidden.bind(this);
+   this._applyCacheSettings = this._applyCacheSettings.bind(this);
+   this._applyServiceWorkersTestingSettings =
+     this._applyServiceWorkersTestingSettings.bind(this);
+   this._saveSplitConsoleHeight = this._saveSplitConsoleHeight.bind(this);
+   this._onFocus = this._onFocus.bind(this);
+   this._onBrowserMessage = this._onBrowserMessage.bind(this);
+-  this._showDevEditionPromo = this._showDevEditionPromo.bind(this);
+   this._updateTextBoxMenuItems = this._updateTextBoxMenuItems.bind(this);
+   this._onBottomHostMinimized = this._onBottomHostMinimized.bind(this);
+   this._onBottomHostMaximized = this._onBottomHostMaximized.bind(this);
+   this._onToolSelectWhileMinimized = this._onToolSelectWhileMinimized.bind(this);
+   this._onPerformanceFrontEvent = this._onPerformanceFrontEvent.bind(this);
+   this._onBottomHostWillChange = this._onBottomHostWillChange.bind(this);
+   this._toggleMinimizeMode = this._toggleMinimizeMode.bind(this);
+   this._onToolbarFocus = this._onToolbarFocus.bind(this);
+@@ -174,18 +171,16 @@ function Toolbox(target, selectedTool, h
+   this._target.on("navigate", this._refreshHostTitle);
+   this._target.on("frame-update", this._updateFrames);
+   this._target.on("inspect-object", this._onInspectObject);
+ 
+   this.on("host-changed", this._refreshHostTitle);
+   this.on("select", this._refreshHostTitle);
+   this.on("select", this._updatePickerButton);
+ 
+-  this.on("ready", this._showDevEditionPromo);
+-
+   gDevTools.on("tool-registered", this._toolRegistered);
+   gDevTools.on("tool-unregistered", this._toolUnregistered);
+ 
+   this.on("picker-started", this._onPickerStarted);
+   this.on("picker-stopped", this._onPickerStopped);
+ 
+   /**
+    * Get text direction for the current locale direction.
+@@ -2669,17 +2664,16 @@ Toolbox.prototype = {
+ 
+     this._target.off("inspect-object", this._onInspectObject);
+     this._target.off("will-navigate", this._onWillNavigate);
+     this._target.off("navigate", this._refreshHostTitle);
+     this._target.off("frame-update", this._updateFrames);
+     this.off("select", this._refreshHostTitle);
+     this.off("select", this._updatePickerButton);
+     this.off("host-changed", this._refreshHostTitle);
+-    this.off("ready", this._showDevEditionPromo);
+ 
+     gDevTools.off("tool-registered", this._toolRegistered);
+     gDevTools.off("tool-unregistered", this._toolUnregistered);
+ 
+     Services.prefs.removeObserver("devtools.cache.disabled", this._applyCacheSettings);
+     Services.prefs.removeObserver("devtools.serviceWorkers.testing.enabled",
+                                   this._applyServiceWorkersTestingSettings);
+ 
+@@ -2840,28 +2834,16 @@ Toolbox.prototype = {
+     this.emit("highlighter-ready");
+   },
+ 
+   _highlighterHidden: function() {
+     this.emit("highlighter-hide");
+   },
+ 
+   /**
+-   * For displaying the promotional Doorhanger on first opening of
+-   * the developer tools, promoting the Developer Edition.
+-   */
+-  _showDevEditionPromo: function() {
+-    // Do not display in browser toolbox
+-    if (this.target.chrome) {
+-      return;
+-    }
+-    showDoorhanger({ window: this.win, type: "deveditionpromo" });
+-  },
+-
+-  /**
+    * Enable / disable necessary textbox menu items using globalOverlay.js.
+    */
+   _updateTextBoxMenuItems: function() {
+     let window = this.win;
+     ["cmd_undo", "cmd_delete", "cmd_cut",
+      "cmd_copy", "cmd_paste", "cmd_selectAll"].forEach(window.goUpdateCommand);
+   },
+ 
+diff --git a/devtools/client/jar.mn b/devtools/client/jar.mn
+--- a/devtools/client/jar.mn
++++ b/devtools/client/jar.mn
+@@ -82,19 +82,16 @@ devtools.jar:
+     content/commandline/commandlinetooltip.xhtml (commandline/commandlinetooltip.xhtml)
+     content/framework/toolbox-window.xul (framework/toolbox-window.xul)
+     content/framework/toolbox-options.xhtml (framework/toolbox-options.xhtml)
+     content/framework/toolbox.xul (framework/toolbox.xul)
+     content/framework/toolbox-init.js (framework/toolbox-init.js)
+     content/framework/options-panel.css (framework/options-panel.css)
+     content/framework/toolbox-process-window.xul (framework/toolbox-process-window.xul)
+     content/framework/toolbox-process-window.js (framework/toolbox-process-window.js)
+-    content/framework/dev-edition-promo/dev-edition-promo.xul (framework/dev-edition-promo/dev-edition-promo.xul)
+-*   content/framework/dev-edition-promo/dev-edition-promo.css (framework/dev-edition-promo/dev-edition-promo.css)
+-    content/framework/dev-edition-promo/dev-edition-logo.png (framework/dev-edition-promo/dev-edition-logo.png)
+     content/inspector/inspector.xhtml (inspector/inspector.xhtml)
+     content/framework/connect/connect.xhtml (framework/connect/connect.xhtml)
+     content/framework/connect/connect.css (framework/connect/connect.css)
+     content/framework/connect/connect.js (framework/connect/connect.js)
+     content/shared/widgets/graphs-frame.xhtml (shared/widgets/graphs-frame.xhtml)
+     content/shared/widgets/cubic-bezier.css (shared/widgets/cubic-bezier.css)
+     content/shared/widgets/filter-widget.css (shared/widgets/filter-widget.css)
+     content/shared/widgets/color-widget.css (shared/widgets/color-widget.css)
+diff --git a/devtools/client/preferences/devtools.js b/devtools/client/preferences/devtools.js
+--- a/devtools/client/preferences/devtools.js
++++ b/devtools/client/preferences/devtools.js
+@@ -1,23 +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/. */
+ 
+-// Developer edition promo preferences
+-pref("devtools.devedition.promo.shown", false);
+-pref("devtools.devedition.promo.url", "https://www.mozilla.org/firefox/developer/?utm_source=firefox-dev-tools&utm_medium=firefox-browser&utm_content=betadoorhanger");
+-
+-// Only potentially show in beta release
+-#if MOZ_UPDATE_CHANNEL == beta
+-  pref("devtools.devedition.promo.enabled", true);
+-#else
+-  pref("devtools.devedition.promo.enabled", false);
+-#endif
+-
+ // Developer toolbar preferences
+ pref("devtools.toolbar.enabled", true);
+ 
+ // Toolbox preferences
+ pref("devtools.toolbox.footer.height", 250);
+ pref("devtools.toolbox.sidebar.width", 500);
+ pref("devtools.toolbox.host", "bottom");
+ pref("devtools.toolbox.previousHost", "side");
+diff --git a/devtools/client/shared/doorhanger.js b/devtools/client/shared/doorhanger.js
+deleted file mode 100644
+--- a/devtools/client/shared/doorhanger.js
++++ /dev/null
+@@ -1,155 +0,0 @@
+-/* 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";
+-
+-const Services = require("Services");
+-const { DOMHelpers } = require("resource://devtools/client/shared/DOMHelpers.jsm");
+-
+-const XULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+-const DEV_EDITION_PROMO_URL = "chrome://devtools/content/framework/dev-edition-promo/dev-edition-promo.xul";
+-const DEV_EDITION_PROMO_ENABLED_PREF = "devtools.devedition.promo.enabled";
+-const DEV_EDITION_PROMO_SHOWN_PREF = "devtools.devedition.promo.shown";
+-const DEV_EDITION_PROMO_URL_PREF = "devtools.devedition.promo.url";
+-
+-/**
+- * Only show Dev Edition promo if it's enabled (beta channel),
+- * if it has not been shown before, and it's a locale build
+- * for `en-US`
+- */
+-function shouldDevEditionPromoShow() {
+-  return Services.prefs.getBoolPref(DEV_EDITION_PROMO_ENABLED_PREF) &&
+-         !Services.prefs.getBoolPref(DEV_EDITION_PROMO_SHOWN_PREF) &&
+-         Services.locale.getAppLocaleAsLangTag() === "en-US";
+-}
+-
+-var TYPES = {
+-  // The Developer Edition promo doorhanger, called by
+-  // opening the toolbox, browser console or responsive design mode
+-  // in Beta releases. Only displayed once per profile.
+-  deveditionpromo: {
+-    predicate: shouldDevEditionPromoShow,
+-    success: () => {
+-      return Services.prefs.setBoolPref(DEV_EDITION_PROMO_SHOWN_PREF, true);
+-    },
+-    action: () => {
+-      let url = Services.prefs.getCharPref(DEV_EDITION_PROMO_URL_PREF);
+-      getGBrowser().selectedTab = getGBrowser().addTab(url);
+-    },
+-    url: DEV_EDITION_PROMO_URL
+-  }
+-};
+-
+-var panelAttrs = {
+-  orient: "vertical",
+-  hidden: "false",
+-  consumeoutsideclicks: "true",
+-  noautofocus: "true",
+-  align: "start",
+-  role: "alert"
+-};
+-
+-/**
+- * Helper to call a doorhanger, defined in `TYPES`, with defined conditions,
+- * success handlers and loads its own XUL in a frame. Takes an object with
+- * several properties:
+- *
+- * @param {XULWindow} window
+- *        The window that should house the doorhanger.
+- * @param {String} type
+- *        The type of doorhanger to be displayed is, using the `TYPES`
+- *        definition.
+- * @param {String} selector
+- *        The selector that the doorhanger should be appended to within
+- *        `window`.  Defaults to a XUL Document's `window` element.
+- */
+-exports.showDoorhanger = async function({ window, type, anchor }) {
+-  let { predicate, success, url, action } = TYPES[type];
+-  // Abort if predicate fails
+-  if (!predicate()) {
+-    return;
+-  }
+-
+-  // Call success function to set preferences/cleanup immediately,
+-  // so if triggered multiple times, only happens once (Windows/Linux)
+-  success();
+-
+-  // Wait 200ms to prevent flickering where the popup is displayed
+-  // before the underlying window (Windows 7, 64bit)
+-  await wait(200);
+-
+-  let document = window.document;
+-
+-  let panel = document.createElementNS(XULNS, "panel");
+-  let frame = document.createElementNS(XULNS, "iframe");
+-  let parentEl = document.querySelector("window");
+-
+-  frame.setAttribute("src", url);
+-  let close = () => parentEl.removeChild(panel);
+-
+-  setDoorhangerStyle(panel, frame);
+-
+-  panel.appendChild(frame);
+-  parentEl.appendChild(panel);
+-
+-  await onFrameLoad(frame);
+-
+-  panel.openPopup(anchor);
+-
+-  let closeBtn = frame.contentDocument.querySelector("#close");
+-  if (closeBtn) {
+-    closeBtn.addEventListener("click", close);
+-  }
+-
+-  let goBtn = frame.contentDocument.querySelector("#go");
+-  if (goBtn) {
+-    goBtn.addEventListener("click", () => {
+-      if (action) {
+-        action();
+-      }
+-      close();
+-    });
+-  }
+-};
+-
+-function setDoorhangerStyle(panel, frame) {
+-  Object.keys(panelAttrs).forEach(prop => {
+-    return panel.setAttribute(prop, panelAttrs[prop]);
+-  });
+-  panel.style.margin = "20px";
+-  panel.style.borderRadius = "5px";
+-  panel.style.border = "none";
+-  panel.style.MozAppearance = "none";
+-  panel.style.backgroundColor = "transparent";
+-
+-  frame.style.borderRadius = "5px";
+-  frame.setAttribute("flex", "1");
+-  frame.setAttribute("width", "450");
+-  frame.setAttribute("height", "179");
+-}
+-
+-function onFrameLoad(frame) {
+-  return new Promise((resolve, reject) => {
+-    if (frame.contentWindow) {
+-      let domHelper = new DOMHelpers(frame.contentWindow);
+-      domHelper.onceDOMReady(resolve);
+-    } else {
+-      let callback = () => {
+-        frame.removeEventListener("DOMContentLoaded", callback);
+-        resolve();
+-      };
+-      frame.addEventListener("DOMContentLoaded", callback);
+-    }
+-  });
+-}
+-
+-function getGBrowser() {
+-  return Services.wm.getMostRecentWindow("navigator:browser").gBrowser;
+-}
+-
+-function wait(n) {
+-  return new Promise((resolve, reject) => {
+-    setTimeout(resolve, n);
+-  });
+-}
+diff --git a/devtools/client/shared/moz.build b/devtools/client/shared/moz.build
+--- a/devtools/client/shared/moz.build
++++ b/devtools/client/shared/moz.build
+@@ -24,17 +24,16 @@ DevToolsModules(
+     'autocomplete-popup.js',
+     'browser-loader.js',
+     'css-angle.js',
+     'curl.js',
+     'demangle.js',
+     'developer-toolbar.js',
+     'devices.js',
+     'DOMHelpers.jsm',
+-    'doorhanger.js',
+     'enum.js',
+     'file-saver.js',
+     'getjson.js',
+     'inplace-editor.js',
+     'key-shortcuts.js',
+     'keycodes.js',
+     'natural-sort.js',
+     'network-throttling-profiles.js',
+diff --git a/devtools/client/webconsole/hudservice.js b/devtools/client/webconsole/hudservice.js
+--- a/devtools/client/webconsole/hudservice.js
++++ b/devtools/client/webconsole/hudservice.js
+@@ -11,17 +11,16 @@ loader.lazyRequireGetter(this, "TargetFa
+ loader.lazyRequireGetter(this, "gDevToolsBrowser", "devtools/client/framework/devtools-browser", true);
+ loader.lazyRequireGetter(this, "Tools", "devtools/client/definitions", true);
+ loader.lazyRequireGetter(this, "Telemetry", "devtools/client/shared/telemetry");
+ loader.lazyRequireGetter(this, "WebConsoleFrame", "devtools/client/webconsole/webconsole", true);
+ loader.lazyRequireGetter(this, "NewWebConsoleFrame", "devtools/client/webconsole/new-webconsole", true);
+ loader.lazyRequireGetter(this, "gDevTools", "devtools/client/framework/devtools", true);
+ loader.lazyRequireGetter(this, "DebuggerServer", "devtools/server/main", true);
+ loader.lazyRequireGetter(this, "DebuggerClient", "devtools/shared/client/debugger-client", true);
+-loader.lazyRequireGetter(this, "showDoorhanger", "devtools/client/shared/doorhanger", true);
+ loader.lazyRequireGetter(this, "viewSource", "devtools/client/shared/view-source");
+ loader.lazyRequireGetter(this, "l10n", "devtools/client/webconsole/webconsole-l10n");
+ const BC_WINDOW_FEATURES = "chrome,titlebar,toolbar,centerscreen,resizable,dialog=no";
+ 
+ // The preference prefix for all of the Browser Console filters.
+ const BC_FILTER_PREFS_PREFIX = "devtools.browserconsole.filter.";
+ 
+ var gHudId = 0;
+@@ -604,28 +603,21 @@ BrowserConsole.prototype = extend(WebCon
+ 
+     this.ui._filterPrefsPrefix = BC_FILTER_PREFS_PREFIX;
+ 
+     let window = this.iframeWindow;
+ 
+     // Make sure that the closing of the Browser Console window destroys this
+     // instance.
+     window.addEventListener("unload", () => {
+-      window.removeEventListener("focus", onFocus);
+       this.destroy();
+     }, {once: true});
+ 
+     this._telemetry.toolOpened("browserconsole");
+ 
+-    // Create an onFocus handler just to display the dev edition promo.
+-    // This is to prevent race conditions in some environments.
+-    // Hook to display promotional Developer Edition doorhanger. Only displayed once.
+-    let onFocus = () => showDoorhanger({ window, type: "deveditionpromo" });
+-    window.addEventListener("focus", onFocus);
+-
+     this._bcInit = this.$init();
+     return this._bcInit;
+   },
+ 
+   $destroy: WebConsole.prototype.destroy,
+ 
+   /**
+    * Destroy the object.
+diff --git a/testing/profiles/common/user.js b/testing/profiles/common/user.js
+--- a/testing/profiles/common/user.js
++++ b/testing/profiles/common/user.js
+@@ -25,17 +25,16 @@ user_pref("browser.shell.checkDefaultBro
+ user_pref("shell.checkDefaultClient", false);
+ user_pref("browser.warnOnQuit", false);
+ user_pref("accessibility.typeaheadfind.autostart", false);
+ user_pref("findbar.highlightAll", false);
+ user_pref("findbar.modalHighlight", false);
+ user_pref("javascript.options.showInConsole", true);
+ user_pref("devtools.browsertoolbox.panel", "jsdebugger");
+ user_pref("devtools.debugger.remote-port", 6023);
+-user_pref("devtools.devedition.promo.enabled", false);
+ user_pref("devtools.chrome.enabled", false);
+ user_pref("devtools.debugger.remote-enabled", false);
+ user_pref("devtools.debugger.prompt-connection", true);
+ user_pref("browser.EULA.override", true);
+ user_pref("gfx.color_management.force_srgb", true);
+ user_pref("gfx.logging.level", 1);
+ user_pref("network.manage-offline-status", false);
+ // Disable speculative connections so they aren't reported as leaking when they're hanging around.

+ 132 - 0
mozilla-release/patches/TOP-1864587-angle-11507.patch

@@ -0,0 +1,132 @@
+# HG changeset patch
+# User Kelsey Gilbert <kelsey.gilbert@mozilla.com>
+# Date 1704851613 0
+# Node ID 5cc988e8734ea8b09fba7087c20dc6c1c60cc10c
+# Parent  10a77ebf37cb6b563ce175d1401b94977f1e2700
+Bug 1864587 - [esr115] [angle] Vendor mozilla/angle/firefox-115. r=gfx-reviewers, a=dmeehan
+
+Differential Revision: https://phabricator.services.mozilla.com/D198114
+
+diff --git a/gfx/angle/checkout/out/gen/angle/angle_commit.h b/gfx/angle/checkout/out/gen/angle/angle_commit.h
+--- a/gfx/angle/checkout/out/gen/angle/angle_commit.h
++++ b/gfx/angle/checkout/out/gen/angle/angle_commit.h
+@@ -1,4 +1,4 @@
+-#define ANGLE_COMMIT_HASH "568b727a61e6"
++#define ANGLE_COMMIT_HASH "fa03ab3adeaf"
+ #define ANGLE_COMMIT_HASH_SIZE 12
+-#define ANGLE_COMMIT_DATE "2023-03-29 16:46:03 -0700"
+-#define ANGLE_COMMIT_POSITION 15728
++#define ANGLE_COMMIT_DATE "2024-01-09 17:44:29 -0800"
++#define ANGLE_COMMIT_POSITION 19736
+diff --git a/gfx/angle/checkout/src/compiler/translator/VariablePacker.cpp b/gfx/angle/checkout/src/compiler/translator/VariablePacker.cpp
+--- a/gfx/angle/checkout/src/compiler/translator/VariablePacker.cpp
++++ b/gfx/angle/checkout/src/compiler/translator/VariablePacker.cpp
+@@ -234,38 +234,37 @@ bool VariablePacker::checkExpandedVariab
+     for (; ii < variables->size(); ++ii)
+     {
+         const sh::ShaderVariable &variable = (*variables)[ii];
+         if (GetTypePackingComponentsPerRow(variable.type) != 4)
+         {
+             break;
+         }
+         topNonFullRow_ += GetVariablePackingRows(variable);
+-    }
+-
+-    if (topNonFullRow_ > maxRows_)
+-    {
+-        return false;
++        if (topNonFullRow_ > maxRows_)
++        {
++            return false;
++        }
+     }
+ 
+     // Packs the 3 column variables.
+     int num3ColumnRows = 0;
+     for (; ii < variables->size(); ++ii)
+     {
+         const sh::ShaderVariable &variable = (*variables)[ii];
+         if (GetTypePackingComponentsPerRow(variable.type) != 3)
+         {
+             break;
+         }
++
+         num3ColumnRows += GetVariablePackingRows(variable);
+-    }
+-
+-    if (topNonFullRow_ + num3ColumnRows > maxRows_)
+-    {
+-        return false;
++        if (topNonFullRow_ + num3ColumnRows > maxRows_)
++        {
++            return false;
++        }
+     }
+ 
+     fillColumns(topNonFullRow_, num3ColumnRows, 0, 3);
+ 
+     // Packs the 2 column variables.
+     int top2ColumnRow            = topNonFullRow_ + num3ColumnRows;
+     int twoColumnRowsAvailable   = maxRows_ - top2ColumnRow;
+     int rowsAvailableInColumns01 = twoColumnRowsAvailable;
+diff --git a/gfx/angle/cherry_picks.txt b/gfx/angle/cherry_picks.txt
+--- a/gfx/angle/cherry_picks.txt
++++ b/gfx/angle/cherry_picks.txt
+@@ -1,8 +1,30 @@
++commit fa03ab3adeaf286dbbfbf63ecb4fad33978ca5db
++Author: Geoff Lang <geofflang@chromium.org>
++Date:   Fri Dec 8 13:20:36 2023 -0500
++
++    Validate Uniform variable limits with each iteration
++    
++    VariablePacker would loop over all variables and sum up the total
++    row counts before validating. Each variable can take hundreds of rows
++    so it is possible to overflow the counters before validating them.
++    
++    Validate the limits with each iteration and early-out when the limits
++    are exceeded.
++    
++    https://bugzilla.mozilla.org/show_bug.cgi?id=1864587
++    
++    Bug: chromium:1864587
++    Change-Id: Ic235ada1516a0d5a9948d82b22f6316a037c09ca
++    Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5106408
++    Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
++    Auto-Submit: Geoff Lang <geofflang@chromium.org>
++    Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
++
+ commit 568b727a61e6a78702a0deaab5efe68b6cd061ff
+ Author: Kelsey Gilbert <kelsey.gilbert@mozilla.com>
+ Date:   Wed Mar 29 16:13:39 2023 -0700
+ 
+     Add ShCompileOptions.initGLPointSize.
+     
+     Change-Id: I1d998867f3e829ed0dc8181fa76be5fe701dde70
+ 
+diff --git a/gfx/angle/update-angle.py b/gfx/angle/update-angle.py
+--- a/gfx/angle/update-angle.py
++++ b/gfx/angle/update-angle.py
+@@ -21,19 +21,20 @@ Gecko. (gfx/angle/cherries.log)
+ 
+ ANGLE<->Chrome version mappings are here: https://omahaproxy.appspot.com/
+ An easy choice is to grab Chrome's Beta's ANGLE branch.
+ 
+ ## Usage
+ 
+ Prepare your env:
+ 
+-~~~
+-export PATH="$PATH:/path/to/depot_tools"
+-~~~
++* If in `cmd`:
++    `export PATH="$PATH:/path/to/depot_tools"`
++* If in `powershell`:
++    `$env:Path += ";C:\path\to\depot_tools"`
+ 
+ If this is a new repo, don't forget:
+ 
+ ~~~
+ # In the angle repo:
+ ./scripts/bootstrap.py
+ gclient sync
+ ~~~

+ 2 - 0
mozilla-release/patches/series

@@ -6453,3 +6453,5 @@ TOP-NOBUG-REGEXP-44-irregexp-25318.patch
 TOP-NOBUG-REGEXP-45-final-25318.patch
 TOP-NOBUG-REGEXP-46-fixes-25318.patch
 TOP-NOBUG-l10nmerge-25319.patch
+1463924-62a1.patch
+TOP-1864587-angle-11507.patch