[arch-commits] Commit in firefox/repos (11 files)

Jan Steffens heftig at archlinux.org
Sat Feb 3 14:36:24 UTC 2018


    Date: Saturday, February 3, 2018 @ 14:36:23
  Author: heftig
Revision: 315805

archrelease: copy trunk to staging-x86_64

Added:
  firefox/repos/staging-x86_64/
  firefox/repos/staging-x86_64/0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch
    (from rev 315804, firefox/trunk/0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch)
  firefox/repos/staging-x86_64/0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch
    (from rev 315804, firefox/trunk/0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch)
  firefox/repos/staging-x86_64/PKGBUILD
    (from rev 315804, firefox/trunk/PKGBUILD)
  firefox/repos/staging-x86_64/firefox-install-dir.patch
    (from rev 315804, firefox/trunk/firefox-install-dir.patch)
  firefox/repos/staging-x86_64/firefox-symbolic.svg
    (from rev 315804, firefox/trunk/firefox-symbolic.svg)
  firefox/repos/staging-x86_64/firefox.desktop
    (from rev 315804, firefox/trunk/firefox.desktop)
  firefox/repos/staging-x86_64/no-crmf.diff
    (from rev 315804, firefox/trunk/no-crmf.diff)
  firefox/repos/staging-x86_64/upload-symbol-archive
    (from rev 315804, firefox/trunk/upload-symbol-archive)
  firefox/repos/staging-x86_64/wifi-disentangle.patch
    (from rev 315804, firefox/trunk/wifi-disentangle.patch)
  firefox/repos/staging-x86_64/wifi-fix-interface.patch
    (from rev 315804, firefox/trunk/wifi-fix-interface.patch)

-----------------------------------------------------------------+
 0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch |  203 ++++++
 0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch |  254 ++++++++
 PKGBUILD                                                        |  184 +++++
 firefox-install-dir.patch                                       |   13 
 firefox-symbolic.svg                                            |   64 ++
 firefox.desktop                                                 |  311 ++++++++++
 no-crmf.diff                                                    |   15 
 upload-symbol-archive                                           |   24 
 wifi-disentangle.patch                                          |  245 +++++++
 wifi-fix-interface.patch                                        |   26 
 10 files changed, 1339 insertions(+)

Copied: firefox/repos/staging-x86_64/0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch (from rev 315804, firefox/trunk/0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch)
===================================================================
--- staging-x86_64/0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch	                        (rev 0)
+++ staging-x86_64/0001-Bug-1360278-Add-preference-to-trigger-context-menu-o.patch	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,203 @@
+From 05ec1aa0d5e8806dd0c5c6d08c82846a1389b599 Mon Sep 17 00:00:00 2001
+Message-Id: <05ec1aa0d5e8806dd0c5c6d08c82846a1389b599.1512038840.git.jan.steffens at gmail.com>
+From: Robin Grenet <robin.grenet at wanadoo.fr>
+Date: Thu, 16 Nov 2017 13:35:58 +0100
+Subject: [PATCH 1/2] Bug 1360278 - Add preference to trigger context menu on
+ mouse up for GTK+ and macOS, r=mstange,smaug
+
+MozReview-Commit-ID: Bg60bD8jIg6
+
+--HG--
+extra : rebase_source : cc8bd5796096f49ad4fdab81885a426afd6117e4
+---
+ modules/libpref/init/all.js |  4 ++++
+ widget/cocoa/nsChildView.mm | 23 +++++++++++++++++++++--
+ widget/gtk/nsWindow.cpp     | 27 ++++++++++++++++++++-------
+ widget/gtk/nsWindow.h       |  2 ++
+ widget/nsBaseWidget.cpp     | 16 ++++++++++++++++
+ widget/nsBaseWidget.h       |  6 ++++++
+ 6 files changed, 69 insertions(+), 9 deletions(-)
+
+diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
+index 9febead1d363d792..7a6e6a20f3cc3fd6 100644
+--- a/modules/libpref/init/all.js
++++ b/modules/libpref/init/all.js
+@@ -231,6 +231,10 @@ pref("browser.sessionhistory.max_total_viewers", -1);
+ 
+ pref("ui.use_native_colors", true);
+ pref("ui.click_hold_context_menus", false);
++
++// Pop up context menu on mouseup instead of mousedown, if that's the OS default.
++// Note: ignored on Windows (context menus always use mouseup)
++pref("ui.context_menus.after_mouseup", false);
+ // Duration of timeout of incremental search in menus (ms).  0 means infinite.
+ pref("ui.menu.incremental_search.timeout", 1000);
+ // If true, all popups won't hide automatically on blur
+diff --git a/widget/cocoa/nsChildView.mm b/widget/cocoa/nsChildView.mm
+index 25b4c1ba7a2d1207..2affd1ef386cbfd0 100644
+--- a/widget/cocoa/nsChildView.mm
++++ b/widget/cocoa/nsChildView.mm
+@@ -4719,30 +4719,49 @@ NSEvent* gLastDragMouseDownEvent = nil;
+   if (!mGeckoChild)
+     return;
+ 
+-  // Let the superclass do the context menu stuff.
+-  [super rightMouseDown:theEvent];
++  if (!nsBaseWidget::ShowContextMenuAfterMouseUp()) {
++    // Let the superclass do the context menu stuff.
++    [super rightMouseDown:theEvent];
++  }
+ 
+   NS_OBJC_END_TRY_ABORT_BLOCK;
+ }
+ 
+ - (void)rightMouseUp:(NSEvent *)theEvent
+ {
+   NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
+ 
+   if (!mGeckoChild)
+     return;
+   if (mTextInputHandler->OnHandleEvent(theEvent)) {
+     return;
+   }
+ 
+   WidgetMouseEvent geckoEvent(true, eMouseUp, mGeckoChild,
+                               WidgetMouseEvent::eReal);
+   [self convertCocoaMouseEvent:theEvent toGeckoEvent:&geckoEvent];
+   geckoEvent.button = WidgetMouseEvent::eRightButton;
+   geckoEvent.mClickCount = [theEvent clickCount];
+ 
+   nsAutoRetainCocoaObject kungFuDeathGrip(self);
+   mGeckoChild->DispatchInputEvent(&geckoEvent);
++  if (!mGeckoChild)
++    return;
++
++  if (nsBaseWidget::ShowContextMenuAfterMouseUp()) {
++    // Let the superclass do the context menu stuff, but pretend it's rightMouseDown.
++    NSEvent *dupeEvent = [NSEvent mouseEventWithType:NSRightMouseDown
++                                            location:theEvent.locationInWindow
++                                       modifierFlags:theEvent.modifierFlags
++                                           timestamp:theEvent.timestamp
++                                        windowNumber:theEvent.windowNumber
++                                             context:theEvent.context
++                                         eventNumber:theEvent.eventNumber
++                                          clickCount:theEvent.clickCount
++                                            pressure:theEvent.pressure];
++
++    [super rightMouseDown:dupeEvent];
++  }
+ 
+   NS_OBJC_END_TRY_ABORT_BLOCK;
+ }
+diff --git a/widget/gtk/nsWindow.cpp b/widget/gtk/nsWindow.cpp
+index 37b6aae4c3d0b4e7..2b80124538c20ed6 100644
+--- a/widget/gtk/nsWindow.cpp
++++ b/widget/gtk/nsWindow.cpp
+@@ -2727,6 +2727,19 @@ static guint ButtonMaskFromGDKButton(guint button)
+     return GDK_BUTTON1_MASK << (button - 1);
+ }
+ 
++void
++nsWindow::DispatchContextMenuEventFromMouseEvent(uint16_t domButton,
++                                                 GdkEventButton *aEvent)
++{
++    if (domButton == WidgetMouseEvent::eRightButton && MOZ_LIKELY(!mIsDestroyed)) {
++        WidgetMouseEvent contextMenuEvent(true, eContextMenu, this,
++                                          WidgetMouseEvent::eReal);
++        InitButtonEvent(contextMenuEvent, aEvent);
++        contextMenuEvent.pressure = mLastMotionPressure;
++        DispatchInputEvent(&contextMenuEvent);
++    }
++}
++
+ void
+ nsWindow::OnButtonPressEvent(GdkEventButton *aEvent)
+ {
+@@ -2796,13 +2809,8 @@ nsWindow::OnButtonPressEvent(GdkEventButton *aEvent)
+     DispatchInputEvent(&event);
+ 
+     // right menu click on linux should also pop up a context menu
+-    if (domButton == WidgetMouseEvent::eRightButton &&
+-        MOZ_LIKELY(!mIsDestroyed)) {
+-        WidgetMouseEvent contextMenuEvent(true, eContextMenu, this,
+-                                          WidgetMouseEvent::eReal);
+-        InitButtonEvent(contextMenuEvent, aEvent);
+-        contextMenuEvent.pressure = mLastMotionPressure;
+-        DispatchInputEvent(&contextMenuEvent);
++    if (!nsBaseWidget::ShowContextMenuAfterMouseUp()) {
++        DispatchContextMenuEventFromMouseEvent(domButton, aEvent);
+     }
+ }
+ 
+@@ -2838,6 +2846,11 @@ nsWindow::OnButtonReleaseEvent(GdkEventButton *aEvent)
+ 
+     DispatchInputEvent(&event);
+     mLastMotionPressure = pressure;
++
++    // right menu click on linux should also pop up a context menu
++    if (nsBaseWidget::ShowContextMenuAfterMouseUp()) {
++        DispatchContextMenuEventFromMouseEvent(domButton, aEvent);
++    }
+ }
+ 
+ void
+diff --git a/widget/gtk/nsWindow.h b/widget/gtk/nsWindow.h
+index f7c07d57491b0b83..b969c9db4306ba6a 100644
+--- a/widget/gtk/nsWindow.h
++++ b/widget/gtk/nsWindow.h
+@@ -245,6 +245,8 @@ private:
+ 
+     void               UpdateClientOffset();
+ 
++    void               DispatchContextMenuEventFromMouseEvent(uint16_t domButton,
++                                                              GdkEventButton *aEvent);
+ public:
+     void               ThemeChanged(void);
+     void               OnDPIChanged(void);
+diff --git a/widget/nsBaseWidget.cpp b/widget/nsBaseWidget.cpp
+index 996409f45db11cc7..de73fe36d27955cd 100644
+--- a/widget/nsBaseWidget.cpp
++++ b/widget/nsBaseWidget.cpp
+@@ -1222,6 +1222,22 @@ nsBaseWidget::DispatchEventToAPZOnly(mozilla::WidgetInputEvent* aEvent)
+   }
+ }
+ 
++// static
++bool
++nsBaseWidget::ShowContextMenuAfterMouseUp()
++{
++  static bool gContextMenuAfterMouseUp = false;
++  static bool gContextMenuAfterMouseUpCached = false;
++  if (!gContextMenuAfterMouseUpCached) {
++    Preferences::AddBoolVarCache(&gContextMenuAfterMouseUp,
++                                 "ui.context_menus.after_mouseup",
++                                 false);
++
++    gContextMenuAfterMouseUpCached = true;
++  }
++  return gContextMenuAfterMouseUp;
++}
++
+ nsIDocument*
+ nsBaseWidget::GetDocument() const
+ {
+diff --git a/widget/nsBaseWidget.h b/widget/nsBaseWidget.h
+index 6d6b93ea73d64b38..cdc6aa0c87279832 100644
+--- a/widget/nsBaseWidget.h
++++ b/widget/nsBaseWidget.h
+@@ -418,6 +418,12 @@ public:
+   void RecvScreenPixels(mozilla::ipc::Shmem&& aMem, const ScreenIntSize& aSize) override {};
+ #endif
+ 
++  /**
++   * Whether context menus should only appear on mouseup instead of mousedown,
++   * on OSes where they normally appear on mousedown (macOS, *nix).
++   */
++  static bool ShowContextMenuAfterMouseUp();
++
+ protected:
+   // These are methods for CompositorWidgetWrapper, and should only be
+   // accessed from that class. Derived widgets can choose which methods to
+-- 
+2.15.1
+

Copied: firefox/repos/staging-x86_64/0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch (from rev 315804, firefox/trunk/0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch)
===================================================================
--- staging-x86_64/0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch	                        (rev 0)
+++ staging-x86_64/0002-Bug-1419426-Implement-browserSettings.contextMenuSho.patch	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,254 @@
+From f19a0f3bc5e1e87d3c663cc2b147c5c0831519c5 Mon Sep 17 00:00:00 2001
+Message-Id: <f19a0f3bc5e1e87d3c663cc2b147c5c0831519c5.1512038840.git.jan.steffens at gmail.com>
+In-Reply-To: <05ec1aa0d5e8806dd0c5c6d08c82846a1389b599.1512038840.git.jan.steffens at gmail.com>
+References: <05ec1aa0d5e8806dd0c5c6d08c82846a1389b599.1512038840.git.jan.steffens at gmail.com>
+From: Bob Silverberg <bsilverberg at mozilla.com>
+Date: Fri, 24 Nov 2017 07:45:03 -0500
+Subject: [PATCH 2/2] Bug 1419426 - Implement
+ browserSettings.contextMenuShowEvent, r=kmag a=gchang
+
+Uplift for 58.
+---
+ .../components/extensions/ext-browserSettings.js   | 45 ++++++++++++++++
+ .../extensions/schemas/browser_settings.json       | 10 ++++
+ .../test/xpcshell/test_ext_browserSettings.js      | 62 ++++++++++++++++++++--
+ 3 files changed, 114 insertions(+), 3 deletions(-)
+
+diff --git a/toolkit/components/extensions/ext-browserSettings.js b/toolkit/components/extensions/ext-browserSettings.js
+index f3212f351baf6975..2b24bcc1d09091f2 100644
+--- a/toolkit/components/extensions/ext-browserSettings.js
++++ b/toolkit/components/extensions/ext-browserSettings.js
+@@ -2,17 +2,23 @@
+ /* vim: set sts=2 sw=2 et tw=80: */
+ "use strict";
+ 
++XPCOMUtils.defineLazyModuleGetter(this, "AppConstants",
++                                  "resource://gre/modules/AppConstants.jsm");
+ XPCOMUtils.defineLazyModuleGetter(this, "ExtensionSettingsStore",
+                                   "resource://gre/modules/ExtensionSettingsStore.jsm");
+ XPCOMUtils.defineLazyModuleGetter(this, "Services",
+                                   "resource://gre/modules/Services.jsm");
+ 
+ XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService",
+                                    "@mozilla.org/browser/aboutnewtab-service;1",
+                                    "nsIAboutNewTabService");
+ 
+ Cu.import("resource://gre/modules/ExtensionPreferencesManager.jsm");
+ 
++var {
++  ExtensionError,
++} = ExtensionUtils;
++
+ const HOMEPAGE_OVERRIDE_SETTING = "homepage_override";
+ const HOMEPAGE_URL_PREF = "browser.startup.homepage";
+ const URL_STORE_TYPE = "url_overrides";
+@@ -82,6 +88,16 @@ ExtensionPreferencesManager.addSetting("imageAnimationBehavior", {
+   },
+ });
+ 
++ExtensionPreferencesManager.addSetting("contextMenuShowEvent", {
++  prefNames: [
++    "ui.context_menus.after_mouseup",
++  ],
++
++  setCallback(value) {
++    return {[this.prefNames[0]]: value === "mouseup"};
++  },
++});
++
+ this.browserSettings = class extends ExtensionAPI {
+   getAPI(context) {
+     let {extension} = context;
+@@ -114,6 +130,35 @@ this.browserSettings = class extends ExtensionAPI {
+           () => {
+             return aboutNewTabService.newTabURL;
+           }, URL_STORE_TYPE, true),
++        contextMenuShowEvent: Object.assign(
++          getSettingsAPI(
++            extension,
++            "contextMenuShowEvent",
++            () => {
++              if (AppConstants.platform === "win") {
++                return "mouseup";
++              }
++              let prefValue = Services.prefs.getBoolPref(
++                "ui.context_menus.after_mouseup", null);
++              return prefValue ? "mouseup" : "mousedown";
++            }
++          ),
++          {
++            set: details => {
++              if (!["mouseup", "mousedown"].includes(details.value)) {
++                throw new ExtensionError(
++                  `${details.value} is not a valid value for contextMenuShowEvent.`);
++              }
++              if (AppConstants.platform === "android" ||
++                  (AppConstants.platform === "win" &&
++                   details.value === "mousedown")) {
++                return false;
++              }
++              return ExtensionPreferencesManager.setSetting(
++                extension, "contextMenuShowEvent", details.value);
++            },
++          }
++        ),
+       },
+     };
+   }
+diff --git a/toolkit/components/extensions/schemas/browser_settings.json b/toolkit/components/extensions/schemas/browser_settings.json
+index af073d933723cbd5..4f354e69dfedaf96 100644
+--- a/toolkit/components/extensions/schemas/browser_settings.json
++++ b/toolkit/components/extensions/schemas/browser_settings.json
+@@ -27,28 +27,38 @@
+         "type": "string",
+         "enum": ["normal", "none", "once"],
+         "description": "How images should be animated in the browser."
++      },
++      {
++        "id": "ContextMenuMouseEvent",
++        "type": "string",
++        "enum": ["mouseup", "mousedown"],
++        "description": "After which mouse event context menus should popup."
+       }
+     ],
+     "properties": {
+       "allowPopupsForUserEvents": {
+         "$ref": "types.Setting",
+         "description": "Allows or disallows pop-up windows from opening in response to user events."
+       },
+       "cacheEnabled": {
+         "$ref": "types.Setting",
+         "description": "Enables or disables the browser cache."
+       },
+       "homepageOverride": {
+         "$ref": "types.Setting",
+         "description": "Returns the value of the overridden home page. Read-only."
+       },
+       "imageAnimationBehavior": {
+         "$ref": "types.Setting",
+         "description": "Controls the behaviour of image animation in the browser. This setting's value is of type ImageAnimationBehavior, defaulting to <code>normal</code>."
+       },
+       "newTabPageOverride": {
+         "$ref": "types.Setting",
+         "description": "Returns the value of the overridden new tab page. Read-only."
++      },
++      "contextMenuShowEvent": {
++        "$ref": "types.Setting",
++        "description": "Controls after which mouse event context menus popup. This setting's value is of type ContextMenuMouseEvent, which has possible values of <code>mouseup</code> and <code>mousedown</code>."
+       }
+     }
+   }
+diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
+index 5c441df3e4198671..7e9c1576a723dfc6 100644
+--- a/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
++++ b/toolkit/components/extensions/test/xpcshell/test_ext_browserSettings.js
+@@ -24,13 +24,20 @@ add_task(async function test_browser_settings() {
+     "browser.cache.memory.enable": true,
+     "dom.popup_allowed_events": Preferences.get("dom.popup_allowed_events"),
+     "image.animation_mode": "none",
++    "ui.context_menus.after_mouseup": false,
+   };
+ 
+   async function background() {
+     browser.test.onMessage.addListener(async (msg, apiName, value) => {
+       let apiObj = browser.browserSettings[apiName];
+-      await apiObj.set({value});
+-      browser.test.sendMessage("settingData", await apiObj.get({}));
++      let result = await apiObj.set({value});
++      if (msg === "set") {
++        browser.test.assertTrue(result, "set returns true.");
++        browser.test.sendMessage("settingData", await apiObj.get({}));
++      } else {
++        browser.test.assertFalse(result, "set returns false for a no-op.");
++        browser.test.sendMessage("no-op set");
++      }
+     });
+   }
+ 
+@@ -69,33 +76,82 @@ add_task(async function test_browser_settings() {
+     }
+   }
+ 
++  async function testNoOpSetting(setting, value, expected) {
++    extension.sendMessage("setNoOp", setting, value);
++    await extension.awaitMessage("no-op set");
++    for (let pref in expected) {
++      equal(Preferences.get(pref), expected[pref], `${pref} set correctly for ${value}`);
++    }
++  }
++
+   await testSetting(
+     "cacheEnabled", false,
+     {
+       "browser.cache.disk.enable": false,
+       "browser.cache.memory.enable": false,
+     });
+   await testSetting(
+     "cacheEnabled", true,
+     {
+       "browser.cache.disk.enable": true,
+       "browser.cache.memory.enable": true,
+     });
+ 
+   await testSetting(
+     "allowPopupsForUserEvents", false,
+     {"dom.popup_allowed_events": ""});
+   await testSetting(
+     "allowPopupsForUserEvents", true,
+     {"dom.popup_allowed_events": PREFS["dom.popup_allowed_events"]});
+ 
+   for (let value of ["normal", "none", "once"]) {
+     await testSetting(
+       "imageAnimationBehavior", value,
+       {"image.animation_mode": value});
+   }
+ 
+-  await extension.unload();
++  // This setting is a no-op on Android.
++  if (AppConstants.platform === "android") {
++    await testNoOpSetting("contextMenuShowEvent", "mouseup",
++      {"ui.context_menus.after_mouseup": false});
++  } else {
++    await testSetting(
++      "contextMenuShowEvent", "mouseup",
++      {"ui.context_menus.after_mouseup": true});
++  }
+ 
++  // "mousedown" is also a no-op on Windows.
++  if (["android", "win"].includes(AppConstants.platform)) {
++    await testNoOpSetting("contextMenuShowEvent", "mousedown",
++      {"ui.context_menus.after_mouseup": AppConstants.platform === "win"});
++  } else {
++    await testSetting(
++      "contextMenuShowEvent", "mousedown",
++      {"ui.context_menus.after_mouseup": false});
++  }
++
++  await extension.unload();
+   await promiseShutdownManager();
+ });
++
++add_task(async function test_bad_value() {
++  async function background() {
++    await browser.test.assertRejects(
++      browser.browserSettings.contextMenuShowEvent.set({value: "bad"}),
++      /bad is not a valid value for contextMenuShowEvent/,
++      "contextMenuShowEvent.set rejects with an invalid value.");
++
++    browser.test.sendMessage("done");
++  }
++
++  let extension = ExtensionTestUtils.loadExtension({
++    background,
++    manifest: {
++      permissions: ["browserSettings"],
++    },
++  });
++
++  await extension.startup();
++  await extension.awaitMessage("done");
++  await extension.unload();
++});
+-- 
+2.15.1
+

Copied: firefox/repos/staging-x86_64/PKGBUILD (from rev 315804, firefox/trunk/PKGBUILD)
===================================================================
--- staging-x86_64/PKGBUILD	                        (rev 0)
+++ staging-x86_64/PKGBUILD	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,184 @@
+# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens at gmail.com>
+# Contributor: Ionut Biru <ibiru at archlinux.org>
+# Contributor: Jakub Schmidtke <sjakub at gmail.com>
+
+pkgname=firefox
+pkgver=58.0.1
+pkgrel=2
+pkgdesc="Standalone web browser from mozilla.org"
+arch=(x86_64)
+license=(MPL GPL LGPL)
+url="https://www.mozilla.org/firefox/"
+depends=(gtk3 gtk2 mozilla-common libxt startup-notification mime-types dbus-glib ffmpeg
+         nss hunspell sqlite ttf-font libpulse libvpx icu)
+makedepends=(unzip zip diffutils python2 yasm mesa imake gconf inetutils xorg-server-xvfb
+             autoconf2.13 rust mercurial clang llvm jack)
+optdepends=('networkmanager: Location detection via available WiFi networks'
+            'libnotify: Notification integration'
+            'pulseaudio: Audio support'
+            'speech-dispatcher: Text-to-Speech')
+options=(!emptydirs !makeflags !strip)
+_repo=https://hg.mozilla.org/mozilla-unified
+source=("hg+$_repo#tag=FIREFOX_${pkgver//./_}_RELEASE"
+        $pkgname.desktop firefox-symbolic.svg
+        firefox-install-dir.patch no-crmf.diff)
+sha256sums=('SKIP'
+            '677e1bde4c6b3cff114345c211805c7c43085038ca0505718a11e96432e9811a'
+            '9a1a572dc88014882d54ba2d3079a1cf5b28fa03c5976ed2cb763c93dabbd797'
+            'a94f80abe65608cd49054a30acc31e4d0885fe5b2a38cf08ded5e5b51b87c99d'
+            'fb85a538044c15471c12cf561d6aa74570f8de7b054a7063ef88ee1bdfc1ccbb')
+
+# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys. Feel free to contact foutrelis at archlinux.org for
+# more information.
+_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
+
+# Mozilla API keys (see https://location.services.mozilla.com/api)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys. Feel free to contact heftig at archlinux.org for
+# more information.
+_mozilla_api_key=16674381-f021-49de-8622-3021c5942aff
+
+prepare() {
+  mkdir path
+  ln -s /usr/bin/python2 path/python
+
+  cd mozilla-unified
+  patch -Np1 -i ../firefox-install-dir.patch
+
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1371991
+  patch -Np1 -i ../no-crmf.diff
+
+  echo -n "$_google_api_key" >google-api-key
+  echo -n "$_mozilla_api_key" >mozilla-api-key
+
+  cat >.mozconfig <<END
+ac_add_options --enable-application=browser
+
+ac_add_options --prefix=/usr
+ac_add_options --enable-release
+ac_add_options --enable-gold
+ac_add_options --enable-pie
+ac_add_options --enable-optimize="-O2"
+ac_add_options --enable-rust-simd
+
+# Branding
+ac_add_options --enable-official-branding
+ac_add_options --enable-update-channel=release
+ac_add_options --with-distribution-id=org.archlinux
+export MOZILLA_OFFICIAL=1
+export MOZ_TELEMETRY_REPORTING=1
+export MOZ_ADDON_SIGNING=1
+export MOZ_REQUIRE_SIGNING=1
+
+# Keys
+ac_add_options --with-google-api-keyfile=${PWD at Q}/google-api-key
+ac_add_options --with-mozilla-api-keyfile=${PWD at Q}/mozilla-api-key
+
+# System libraries
+ac_add_options --with-system-zlib
+ac_add_options --with-system-bz2
+ac_add_options --with-system-icu
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-libvpx
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --enable-system-hunspell
+ac_add_options --enable-system-sqlite
+ac_add_options --enable-system-ffi
+
+# Features
+ac_add_options --enable-alsa
+ac_add_options --enable-jack
+ac_add_options --enable-startup-notification
+ac_add_options --enable-crashreporter
+ac_add_options --disable-updater
+END
+}
+
+build() {
+  cd mozilla-unified
+
+  # _FORTIFY_SOURCE causes configure failures
+  CPPFLAGS+=" -O2"
+
+  export PATH="$srcdir/path:$PATH"
+  export MOZ_SOURCE_REPO="$_repo"
+
+  # Do PGO
+  #xvfb-run -a -n 95 -s "-extension GLX -screen 0 1280x1024x24" \
+  #  MOZ_PGO=1 ./mach build
+  ./mach build
+  ./mach buildsymbols
+}
+
+package() {
+  cd mozilla-unified
+  DESTDIR="$pkgdir" ./mach install
+  find . -name '*crashreporter-symbols-full.zip' -exec cp -fvt "$startdir" {} +
+
+  _vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
+  install -Dm644 /dev/stdin "$_vendorjs" <<END
+// Use LANG environment variable to choose locale
+pref("intl.locale.matchOS", true);
+
+// Disable default browser checking.
+pref("browser.shell.checkDefaultBrowser", false);
+
+// Don't disable our bundled extensions in the application directory
+pref("extensions.autoDisableScopes", 11);
+pref("extensions.shownSelectionUI", true);
+
+// Opt all of us into e10s, instead of just 50%
+pref("browser.tabs.remote.autostart", true);
+END
+
+  _distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
+  install -Dm644 /dev/stdin "$_distini" <<END
+[Global]
+id=archlinux
+version=1.0
+about=Mozilla Firefox for Arch Linux
+
+[Preferences]
+app.distributor=archlinux
+app.distributor.channel=$pkgname
+app.partner.archlinux=archlinux
+END
+
+  for i in 16 22 24 32 48 256; do
+    install -Dm644 browser/branding/official/default$i.png \
+      "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
+  done
+  install -Dm644 browser/branding/official/content/icon64.png \
+    "$pkgdir/usr/share/icons/hicolor/64x64/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/mozicon128.png \
+    "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/content/about-logo.png \
+    "$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png"
+  install -Dm644 browser/branding/official/content/about-logo at 2x.png \
+    "$pkgdir/usr/share/icons/hicolor/384x384/apps/$pkgname.png"
+  install -Dm644 ../firefox-symbolic.svg \
+    "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg"
+
+  install -Dm644 ../$pkgname.desktop \
+    "$pkgdir/usr/share/applications/$pkgname.desktop"
+
+  # Use system-provided dictionaries
+  rm -r "$pkgdir"/usr/lib/$pkgname/dictionaries
+  ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries"
+  ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation"
+
+  # Install a wrapper to avoid confusion about binary path
+  install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
+#!/bin/sh
+exec /usr/lib/$pkgname/firefox "\$@"
+END
+
+  # Replace duplicate binary with wrapper
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
+  ln -srf "$pkgdir/usr/bin/$pkgname" \
+    "$pkgdir/usr/lib/$pkgname/firefox-bin"
+}

Copied: firefox/repos/staging-x86_64/firefox-install-dir.patch (from rev 315804, firefox/trunk/firefox-install-dir.patch)
===================================================================
--- staging-x86_64/firefox-install-dir.patch	                        (rev 0)
+++ staging-x86_64/firefox-install-dir.patch	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,13 @@
+diff --git i/config/baseconfig.mk w/config/baseconfig.mk
+index e204533ac9b66b88..27ae154ce265ca2b 100644
+--- i/config/baseconfig.mk
++++ w/config/baseconfig.mk
+@@ -4,7 +4,7 @@
+ # whether a normal build is happening or whether the check is running.
+ includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+ idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
+-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
++installdir = $(libdir)/$(MOZ_APP_NAME)
+ sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
+ ifeq (.,$(DEPTH))
+ DIST = dist

Copied: firefox/repos/staging-x86_64/firefox-symbolic.svg (from rev 315804, firefox/trunk/firefox-symbolic.svg)
===================================================================
--- staging-x86_64/firefox-symbolic.svg	                        (rev 0)
+++ staging-x86_64/firefox-symbolic.svg	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="16"
+   height="16"
+   viewBox="0 0 16 16"
+   version="1.1"
+   id="svg3758"
+   sodipodi:docname="firefox-symbolic-quantum.svg"
+   inkscape:version="0.92.2 5c3e80d, 2017-08-06">
+  <metadata
+     id="metadata3764">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3762" />
+  <sodipodi:namedview
+     pagecolor="#555753"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="1"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1591"
+     inkscape:window-height="909"
+     id="namedview3760"
+     showgrid="false"
+     showborder="false"
+     inkscape:snap-global="false"
+     inkscape:zoom="1"
+     inkscape:cx="3.8851213"
+     inkscape:cy="12.517918"
+     inkscape:window-x="143"
+     inkscape:window-y="60"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3758">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3768" />
+  </sodipodi:namedview>
+  <title
+     id="title3754">Gnome Symbolic Icon Theme</title>
+  <path
+     d="m 15.054715,6.9884649 v 0 c -0.02034,-0.133652 -0.04071,-0.2122775 -0.04071,-0.2122775 0,0 -0.05225,0.060583 -0.138743,0.1748124 A 4.9808937,4.9808937 0 0 0 14.703694,6.0103229 6.4034781,6.4034781 0 0 0 14.270352,4.895288 4.6469845,4.6469845 0 0 0 13.87447,4.2163686 Q 13.793063,4.0947376 13.708437,3.9805045 C 13.444828,3.5499376 13.142365,3.2867867 12.792269,2.7891599 A 3.6101075,3.6101075 0 0 1 12.333953,1.5474054 5.0151173,5.0151173 0 0 0 12.113814,2.3599798 C 11.754468,1.997397 11.441832,1.7397963 11.253142,1.5640539 10.322171,0.69459485 10.430396,0.24367816 10.430396,0.24367816 v 0 c 0,0 -1.7389294,1.94102274 -0.9855522,3.96297904 a 3.8848199,3.8848199 0 0 0 1.2949452,1.726432 c 0.728868,0.6012222 1.513693,1.0743371 1.927612,2.2832561 A 3.8741829,3.8741829 0 0 0 11.21337,6.6823034 3.5023502,3.5023502 0 0 1 11.490854,8.0697401 3.2946971,3.2946971 0 0 1 7.4621982,11.27934 3.0343219,3.0343219 0 0 1 6.6459244,11.001852 3.3219834,3.3219834 0 0 1 5.667782,10.09771 l -0.00463,-
 0.0078 0.058274,0.02125 a 3.0061106,3.0061106 0 0 0 0.4162344,0.111409 2.6028293,2.6028293 0 0 0 1.6570605,-0.195631 C 8.3154732,9.7379218 8.6308831,9.5237932 8.8866339,9.6084266 h 0.0046 c 0.24974,0.079514 0.446755,-0.1628244 0.2682391,-0.4162632 A 1.3596868,1.3596868 0 0 0 7.8423564,8.6778985 C 7.3211426,8.7537416 6.8434027,9.1241907 6.1603222,8.7653097 a 1.4470953,1.4470953 0 0 1 -0.128107,-0.075371 c -0.04625,-0.026369 0.146605,0.040234 0.1017455,0.010233 A 3.3899676,3.3899676 0 0 1 5.7047808,8.4439577 c -0.010172,-0.00822 0.103133,0.032367 0.092497,0.024039 A 1.6561356,1.6561356 0 0 1 5.3495968,8.015168 0.80517516,0.80517516 0 0 1 5.3190728,7.2964766 0.63405807,0.63405807 0 0 1 5.5965603,7.0356384 c 0.088333,0.043485 0.1429059,0.076305 0.1429059,0.076305 0,0 -0.040235,-0.073997 -0.061972,-0.1128365 0.00786,-0.0027 0.014794,0 0.022662,-0.00513 0.077233,0.033293 0.248351,0.1202544 0.3385341,0.1734358 A 0.46987818,0.46987818 0 0 1 6.19362,7.3061637 c 0,0 0.030994,-0.015351 0.0079,
 -0.079998 A 0.41623066,0.41623066 0 0 0 6.0414753,7.0300927 h 0.0074 a 1.3596868,1.3596868 0 0 1 0.1970213,0.1225561 0.96149289,0.96149289 0 0 0 0.078625,-0.416232 0.54479973,0.54479973 0 0 0 -0.031914,-0.2312396 c -0.024511,-0.046254 0.013876,-0.064746 0.056885,-0.016135 A 0.45137905,0.45137905 0 0 0 6.3129456,6.378979 v -0.00372 0 c 0,0 0.024511,-0.031916 0.035615,-0.043486 A 0.66134433,0.66134433 0 0 1 6.4484481,6.2503678 4.6122987,4.6122987 0 0 1 7.1259793,5.9048971 C 7.3174429,5.8211545 7.4760733,5.7573477 7.5084475,5.7388339 a 1.0637007,1.0637007 0 0 0 0.1355052,-0.1040612 0.91015778,0.91015778 0 0 0 0.3052354,-0.5272274 0.73996569,0.73996569 0 0 0 0.0079,-0.082324 v -0.023118 -0.013967 0 -0.00552 0 -0.00611 0 C 7.9293085,4.872475 7.749868,4.7943251 6.8119611,4.7064478 A 0.81997449,0.81997449 0 0 1 6.1413599,4.0776254 v 0.0042 c -0.013416,0.034225 -0.025431,0.068909 -0.037456,0.1040572 0.012025,-0.034685 0.024051,-0.069373 0.037456,-0.1040572 v -0.00742 A 2.3762148,2.3762148 0
  0 1 7.0598423,2.9339361 c 0.024051,-0.019416 -0.096192,0.00512 -0.072152,-0.014798 A 2.3845397,2.3845397 0 0 1 7.2328039,2.8155414 C 7.2748921,2.7979724 7.0524371,2.7128704 6.8558842,2.7336774 a 1.0174527,1.0174527 0 0 0 -0.3496338,0.082324 c 0.046253,-0.039773 0.1849968,-0.092498 0.1521605,-0.092498 a 2.2499581,2.2499581 0 0 0 -0.713142,0.2696255 0.14521828,0.14521828 0 0 1 0.01387,-0.064747 1.1099484,1.1099484 0 0 0 -0.4458297,0.3440843 0.58966016,0.58966016 0 0 0 0.00462,-0.080469 1.3300881,1.3300881 0 0 0 -0.2187525,0.2053404 l -0.00417,0.00321 A 2.9066776,2.9066776 0 0 0 3.6684873,3.2618132 l -0.00463,-0.0042 h 0.00554 A 1.3610743,1.3610743 0 0 1 3.3803631,2.9339159 l -0.0074,0.0018 -0.00877,-0.010174 C 3.3285694,2.8728322 3.2920343,2.813172 3.2545731,2.7465739 3.2277502,2.7003291 3.2004619,2.646216 3.1731756,2.5902563 c 0,-0.00372 -0.00416,-0.00513 -0.006,-0.00552 -0.0111,0 -0.01896,0.05133 -0.028212,0.037927 v -0.0028 A 1.9923577,1.9923577 0 0 1 3.0080744,1.8396896 l -0.0074
 ,0.00372 A 0.87130958,0.87130958 0 0 0 2.6704677,2.2753541 c -0.028212,0.063362 -0.046248,0.098047 -0.064746,0.1327329 0,0.0028 0,-0.00461 0,-0.016194 0.00416,-0.031916 0.018037,-0.097585 0.014799,-0.092497 -0.00323,0.00513 -0.00553,0.00882 -0.00877,0.013415 A 0.80147532,0.80147532 0 0 0 2.4956586,2.4848515 1.0891367,1.0891367 0 0 0 2.4262868,2.661518 c -0.00276,0.00973 0,-0.00832 0,-0.029599 0,-0.02127 0.00416,-0.059199 0,-0.051331 L 2.4161148,2.600475 A 4.3935464,4.3935464 0 0 0 2.0461275,4.0040946 1.3976101,1.3976101 0 0 0 2.031791,4.252909 v 0.00742 A 3.0653076,3.0653076 0 0 0 1.6539417,4.7690529 7.2174403,7.2174403 0 0 0 0.85524217,6.725337 4.7871157,4.7871157 0 0 1 1.2830334,5.9756593 6.9371784,6.9371784 0 0 0 0.79974461,8.5192901 6.582457,6.582457 0 0 1 1.0078598,7.7659142 6.3854411,6.3854411 0 0 0 1.585032,10.755373 6.9542899,6.9542899 0 0 0 4.3372422,13.87618 v 0 a 6.0196208,6.0196208 0 0 0 1.6038754,0.768639 c 0.07492,0.02728 0.1507676,0.0541 0.2284646,0.08 -0.024511,-0.00
 96 -0.04625,-0.02034 -0.070761,-0.03098 A 7.2609132,7.2609132 0 0 0 8.179966,15 c 2.494615,0 3.318287,-0.949928 3.394136,-1.044738 v 0 A 1.2625664,1.2625664 0 0 0 11.8687,13.559386 v 0 q 0.07216,-0.02958 0.145679,-0.06335 l 0.03097,-0.01397 0.05597,-0.02635 a 5.2315572,5.2315572 0 0 0 1.053064,-0.659489 2.5436321,2.5436321 0 0 0 0.98184,-1.433687 v 0 a 0.89628343,0.89628343 0 0 0 0.01343,-0.660421 q 0.03838,-0.0606 0.0791,-0.129501 A 5.8762526,5.8762526 0 0 0 15.1107,7.7140393 v -0.0027 c 0,-0.027291 0,-0.054583 0,-0.081863 A 3.5754215,3.5754215 0 0 0 15.05473,6.9884887 Z"
+     id="path3756"
+     inkscape:connector-curvature="0"
+     style="fill:#bebebe;fill-opacity:1;stroke-width:0.46247858" />
+</svg>

Copied: firefox/repos/staging-x86_64/firefox.desktop (from rev 315804, firefox/trunk/firefox.desktop)
===================================================================
--- staging-x86_64/firefox.desktop	                        (rev 0)
+++ staging-x86_64/firefox.desktop	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,311 @@
+[Desktop Entry]
+Version=1.0
+Name=Firefox
+GenericName=Web Browser
+GenericName[ar]=متصفح وِب
+GenericName[ast]=Restolador Web
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[ca]=Navegador web
+GenericName[cs]=Webový prohlížeč
+GenericName[da]=Webbrowser
+GenericName[de]=Webbrowser
+GenericName[el]=Περιηγητής διαδικτύου
+GenericName[es]=Navegador web
+GenericName[et]=Veebibrauser
+GenericName[fa]=مرورگر اینترنتی
+GenericName[fi]=WWW-selain
+GenericName[fr]=Navigateur Web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן אינטרנט
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[it]=Browser Web
+GenericName[ja]=ウェブ・ブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[ku]=Geroka torê
+GenericName[lt]=Interneto naršyklė
+GenericName[nb]=Nettleser
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[no]=Nettleser
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator Internet
+GenericName[ru]=Веб-браузер
+GenericName[sk]=Internetový prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sv]=Webbläsare
+GenericName[tr]=Web Tarayıcı
+GenericName[ug]=توركۆرگۈ
+GenericName[uk]=Веб-браузер
+GenericName[vi]=Trình duyệt Web
+GenericName[zh_CN]=网络浏览器
+GenericName[zh_TW]=網路瀏覽器
+Comment=Browse the Web
+Comment[ar]=تصفح الوِب
+Comment[ast]=Restola pela Rede
+Comment[bn]=ইন্টারনেট ব্রাউজ করুন
+Comment[ca]=Navegueu per el web
+Comment[cs]=Prohlížení stránek World Wide Webu
+Comment[da]=Surf på internettet
+Comment[de]=Im Internet surfen
+Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web)
+Comment[es]=Navegue por la web
+Comment[et]=Lehitse veebi
+Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید
+Comment[fi]=Selaa Internetin WWW-sivuja
+Comment[fr]=Naviguer sur le Web
+Comment[gl]=Navegar pola rede
+Comment[he]=גלישה ברחבי האינטרנט
+Comment[hr]=Pretražite web
+Comment[hu]=A világháló böngészése
+Comment[it]=Esplora il web
+Comment[ja]=ウェブを閲覧します
+Comment[ko]=웹을 돌아 다닙니다
+Comment[ku]=Li torê bigere
+Comment[lt]=Naršykite internete
+Comment[nb]=Surf på nettet
+Comment[nl]=Verken het internet
+Comment[nn]=Surf på nettet
+Comment[no]=Surf på nettet
+Comment[pl]=Przeglądanie stron WWW
+Comment[pt]=Navegue na Internet
+Comment[pt_BR]=Navegue na Internet
+Comment[ro]=Navigați pe Internet
+Comment[ru]=Доступ в Интернет
+Comment[sk]=Prehliadanie internetu
+Comment[sl]=Brskajte po spletu
+Comment[sv]=Surfa på webben
+Comment[tr]=İnternet'te Gezinin
+Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ
+Comment[uk]=Перегляд сторінок Інтернету
+Comment[vi]=Để duyệt các trang web
+Comment[zh_CN]=浏览互联网
+Comment[zh_TW]=瀏覽網際網路
+Exec=/usr/lib/firefox/firefox %u
+Icon=firefox
+Terminal=false
+Type=Application
+MimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;
+StartupNotify=true
+StartupWMClass=Firefox
+Categories=Network;WebBrowser;
+Keywords=web;browser;internet;
+Actions=new-window;new-private-window;
+
+[Desktop Action new-window]
+Name=New Window
+Name[ach]=Dirica manyen
+Name[af]=Nuwe venster
+Name[an]=Nueva finestra
+Name[ar]=نافذة جديدة
+Name[as]=নতুন উইন্ডো
+Name[ast]=Ventana nueva
+Name[az]=Yeni Pəncərə
+Name[be]=Новае акно
+Name[bg]=Нов прозорец
+Name[bn_BD]=নতুন উইন্ডো (N)
+Name[bn_IN]=নতুন উইন্ডো
+Name[br]=Prenestr nevez
+Name[brx]=गोदान उइन्ड'(N)
+Name[bs]=Novi prozor
+Name[ca]=Finestra nova
+Name[cak]=K'ak'a' tzuwäch
+Name[cs]=Nové okno
+Name[cy]=Ffenestr Newydd
+Name[da]=Nyt vindue
+Name[de]=Neues Fenster
+Name[dsb]=Nowe wokno
+Name[el]=Νέο παράθυρο
+Name[en_GB]=New Window
+Name[en_US]=New Window
+Name[en_ZA]=New Window
+Name[eo]=Nova fenestro
+Name[es_AR]=Nueva ventana
+Name[es_CL]=Nueva ventana
+Name[es_ES]=Nueva ventana
+Name[es_MX]=Nueva ventana
+Name[et]=Uus aken
+Name[eu]=Leiho berria
+Name[fa]=پنجره جدید
+Name[ff]=Henorde Hesere
+Name[fi]=Uusi ikkuna
+Name[fr]=Nouvelle fenêtre
+Name[fy_NL]=Nij finster
+Name[ga_IE]=Fuinneog Nua
+Name[gd]=Uinneag ùr
+Name[gl]=Nova xanela
+Name[gn]=Ovetã pyahu
+Name[gu_IN]=નવી વિન્ડો
+Name[he]=חלון חדש
+Name[hi_IN]=नया विंडो
+Name[hr]=Novi prozor
+Name[hsb]=Nowe wokno
+Name[hu]=Új ablak
+Name[hy_AM]=Նոր Պատուհան
+Name[id]=Jendela Baru
+Name[is]=Nýr gluggi
+Name[it]=Nuova finestra
+Name[ja]=新しいウィンドウ
+Name[ja_JP-mac]=新規ウインドウ
+Name[ka]=ახალი ფანჯარა
+Name[kk]=Жаңа терезе
+Name[km]=បង្អួចថ្មី
+Name[kn]=ಹೊಸ ಕಿಟಕಿ
+Name[ko]=새 창
+Name[kok]=नवें जनेल
+Name[ks]=نئئ وِنڈو
+Name[lij]=Neuvo barcon
+Name[lo]=ຫນ້າຕ່າງໃຫມ່
+Name[lt]=Naujas langas
+Name[ltg]=Jauns lūgs
+Name[lv]=Jauns logs
+Name[mai]=नव विंडो
+Name[mk]=Нов прозорец
+Name[ml]=പുതിയ ജാലകം
+Name[mr]=नवीन पटल
+Name[ms]=Tetingkap Baru
+Name[my]=ဝင်းဒိုးအသစ်
+Name[nb_NO]=Nytt vindu
+Name[ne_NP]=नयाँ सञ्झ्याल
+Name[nl]=Nieuw venster
+Name[nn_NO]=Nytt vindauge
+Name[or]=ନୂତନ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਵਿੰਡੋ
+Name[pl]=Nowe okno
+Name[pt_BR]=Nova janela
+Name[pt_PT]=Nova janela
+Name[rm]=Nova fanestra
+Name[ro]=Fereastră nouă
+Name[ru]=Новое окно
+Name[sat]=नावा विंडो (N)
+Name[si]=නව කවුළුවක්
+Name[sk]=Nové okno
+Name[sl]=Novo okno
+Name[son]=Zanfun taaga
+Name[sq]=Dritare e Re
+Name[sr]=Нови прозор
+Name[sv_SE]=Nytt fönster
+Name[ta]=புதிய சாளரம்
+Name[te]=కొత్త విండో
+Name[th]=หน้าต่างใหม่
+Name[tr]=Yeni pencere
+Name[tsz]=Eraatarakua jimpani
+Name[uk]=Нове вікно
+Name[ur]=نیا دریچہ
+Name[uz]=Yangi oyna
+Name[vi]=Cửa sổ mới
+Name[wo]=Palanteer bu bees
+Name[xh]=Ifestile entsha
+Name[zh_CN]=新建窗口
+Name[zh_TW]=開新視窗
+Exec=/usr/lib/firefox/firefox --new-window %u
+
+[Desktop Action new-private-window]
+Name=New Private Window
+Name[ach]=Dirica manyen me mung
+Name[af]=Nuwe privaatvenster
+Name[an]=Nueva finestra privada
+Name[ar]=نافذة خاصة جديدة
+Name[as]=নতুন ব্যক্তিগত উইন্ডো
+Name[ast]=Ventana privada nueva
+Name[az]=Yeni Məxfi Pəncərə
+Name[be]=Новае акно адасаблення
+Name[bg]=Нов прозорец за поверително сърфиране
+Name[bn_BD]=নতুন ব্যক্তিগত উইন্ডো
+Name[bn_IN]=নতুন ব্যক্তিগত উইন্ডো
+Name[br]=Prenestr merdeiñ prevez nevez
+Name[brx]=गोदान प्राइभेट उइन्ड'
+Name[bs]=Novi privatni prozor
+Name[ca]=Finestra privada nova
+Name[cak]=K'ak'a' ichinan tzuwäch
+Name[cs]=Nové anonymní okno
+Name[cy]=Ffenestr Breifat Newydd
+Name[da]=Nyt privat vindue
+Name[de]=Neues privates Fenster
+Name[dsb]=Nowe priwatne wokno
+Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης
+Name[en_GB]=New Private Window
+Name[en_US]=New Private Window
+Name[en_ZA]=New Private Window
+Name[eo]=Nova privata fenestro
+Name[es_AR]=Nueva ventana privada
+Name[es_CL]=Nueva ventana privada
+Name[es_ES]=Nueva ventana privada
+Name[es_MX]=Nueva ventana privada
+Name[et]=Uus privaatne aken
+Name[eu]=Leiho pribatu berria
+Name[fa]=پنجره ناشناس جدید
+Name[ff]=Henorde Suturo Hesere
+Name[fi]=Uusi yksityinen ikkuna
+Name[fr]=Nouvelle fenêtre de navigation privée
+Name[fy_NL]=Nij priveefinster
+Name[ga_IE]=Fuinneog Nua Phríobháideach
+Name[gd]=Uinneag phrìobhaideach ùr
+Name[gl]=Nova xanela privada
+Name[gn]=Ovetã ñemi pyahu
+Name[gu_IN]=નવી ખાનગી વિન્ડો
+Name[he]=חלון פרטי חדש
+Name[hi_IN]=नयी निजी विंडो
+Name[hr]=Novi privatni prozor
+Name[hsb]=Nowe priwatne wokno
+Name[hu]=Új privát ablak
+Name[hy_AM]=Սկսել Գաղտնի դիտարկում
+Name[id]=Jendela Mode Pribadi Baru
+Name[is]=Nýr huliðsgluggi
+Name[it]=Nuova finestra anonima
+Name[ja]=新しいプライベートウィンドウ
+Name[ja_JP-mac]=新規プライベートウインドウ
+Name[ka]=ახალი პირადი ფანჯარა
+Name[kk]=Жаңа жекелік терезе
+Name[km]=បង្អួចឯកជនថ្មី
+Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ
+Name[ko]=새 사생활 보호 모드
+Name[kok]=नवो खाजगी विंडो
+Name[ks]=نْو پرایوٹ وینڈو
+Name[lij]=Nêuvo barcón privòu
+Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່
+Name[lt]=Naujas privataus naršymo langas
+Name[ltg]=Jauns privatais lūgs
+Name[lv]=Jauns privātais logs
+Name[mai]=नया निज विंडो (W)
+Name[mk]=Нов приватен прозорец
+Name[ml]=പുതിയ സ്വകാര്യ ജാലകം
+Name[mr]=नवीन वैयक्तिक पटल
+Name[ms]=Tetingkap Persendirian Baharu
+Name[my]=New Private Window
+Name[nb_NO]=Nytt privat vindu
+Name[ne_NP]=नयाँ निजी सञ्झ्याल
+Name[nl]=Nieuw privévenster
+Name[nn_NO]=Nytt privat vindauge
+Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ
+Name[pa_IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ
+Name[pl]=Nowe okno prywatne
+Name[pt_BR]=Nova janela privativa
+Name[pt_PT]=Nova janela privada
+Name[rm]=Nova fanestra privata
+Name[ro]=Fereastră privată nouă
+Name[ru]=Новое приватное окно
+Name[sat]=नावा निजेराक् विंडो (W )
+Name[si]=නව පුද්ගලික කවුළුව (W)
+Name[sk]=Nové okno v režime Súkromné prehliadanie
+Name[sl]=Novo zasebno okno
+Name[son]=Sutura zanfun taaga
+Name[sq]=Dritare e Re Private
+Name[sr]=Нови приватан прозор
+Name[sv_SE]=Nytt privat fönster
+Name[ta]=புதிய தனிப்பட்ட சாளரம்
+Name[te]=కొత్త ఆంతరంగిక విండో
+Name[th]=หน้าต่างส่วนตัวใหม่
+Name[tr]=Yeni gizli pencere
+Name[tsz]=Juchiiti eraatarakua jimpani
+Name[uk]=Приватне вікно
+Name[ur]=نیا نجی دریچہ
+Name[uz]=Yangi maxfiy oyna
+Name[vi]=Cửa sổ riêng tư mới
+Name[wo]=Panlanteeru biir bu bees
+Name[xh]=Ifestile yangasese entsha
+Name[zh_CN]=新建隐私浏览窗口
+Name[zh_TW]=新增隱私視窗
+Exec=/usr/lib/firefox/firefox --private-window %u

Copied: firefox/repos/staging-x86_64/no-crmf.diff (from rev 315804, firefox/trunk/no-crmf.diff)
===================================================================
--- staging-x86_64/no-crmf.diff	                        (rev 0)
+++ staging-x86_64/no-crmf.diff	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,15 @@
+diff --git i/old-configure.in w/old-configure.in
+index 0a06e470d2085922..d41c8e9d5dd2dbfb 100644
+--- i/old-configure.in
++++ w/old-configure.in
+@@ -2020,9 +2020,7 @@ if test -n "$_USE_SYSTEM_NSS"; then
+     AM_PATH_NSS(3.31, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+ fi
+ 
+-if test -n "$MOZ_SYSTEM_NSS"; then
+-   NSS_LIBS="$NSS_LIBS -lcrmf"
+-else
++if test -z "$MOZ_SYSTEM_NSS"; then
+    NSS_CFLAGS="-I${DIST}/include/nss"
+    case "${OS_ARCH}" in
+         # Only few platforms have been tested with GYP

Copied: firefox/repos/staging-x86_64/upload-symbol-archive (from rev 315804, firefox/trunk/upload-symbol-archive)
===================================================================
--- staging-x86_64/upload-symbol-archive	                        (rev 0)
+++ staging-x86_64/upload-symbol-archive	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,24 @@
+#!/bin/bash -e
+
+die() {
+  echo >&2 "$@"
+  exit 1
+}
+
+(( $# >= 2 )) || die "Usage: $0 TOKEN-FILE SYMBOL-ARCHIVE..."
+token="$1"
+shift
+
+[[ -f $token && -s $token ]] || die "Invalid TOKEN-FILE ${token at Q}"
+
+for zip; do
+  [[ $(file -Ebi "$zip") == application/zip* ]] || die "Invalid SYMBOL-ARCHIVE ${zip at Q}"
+done
+
+for zip; do
+  echo >&2 "Uploading ${zip at Q} ..."
+  curl -X POST -H "Auth-Token: $(<"$token")" -F "${zip##*/}=@$zip" \
+    --retry 4 --retry-connrefused --connect-timeout 120 \
+    https://symbols.mozilla.org/upload/
+  echo
+done

Copied: firefox/repos/staging-x86_64/wifi-disentangle.patch (from rev 315804, firefox/trunk/wifi-disentangle.patch)
===================================================================
--- staging-x86_64/wifi-disentangle.patch	                        (rev 0)
+++ staging-x86_64/wifi-disentangle.patch	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,245 @@
+# HG changeset patch
+# Parent  2edd69b245fbc493c3a1cf17c40c63b0280ead12
+Bug 1314968 - Disentangle nsWifiScannerDBus::SendMessage. r?kanru
+
+Make a copy of the function and specialize it for each message sent.
+Avoids the mess of comparing the method name to figure out what to do.
+
+diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp
+--- a/netwerk/wifi/nsWifiScannerDBus.cpp
++++ b/netwerk/wifi/nsWifiScannerDBus.cpp
+@@ -34,19 +34,47 @@ nsWifiScannerDBus::Scan()
+   if (!mConnection) {
+     return NS_ERROR_NOT_AVAILABLE;
+   }
+-  return SendMessage("org.freedesktop.NetworkManager",
+-                     "/org/freedesktop/NetworkManager",
+-                     "GetDevices");
++  return SendGetDevices();
+ }
+ 
++// http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
++// Refer to function dbus_connection_send_with_reply_and_block.
++static const uint32_t DBUS_DEFAULT_TIMEOUT = -1;
++
+ nsresult
+-nsWifiScannerDBus::SendMessage(const char* aInterface,
+-                               const char* aPath,
+-                               const char* aFuncCall)
+-{
+-  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
+-    dbus_message_new_method_call("org.freedesktop.NetworkManager",
+-                                 aPath, aInterface, aFuncCall));
++nsWifiScannerDBus::SendGetDevices()
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 "/org/freedesktop/NetworkManager",
++                                 "org.freedesktop.NetworkManager",
++                                 "GetDevices"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyDevices(reply);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetDeviceType(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.DBus.Properties",
++                                 "Get"));
+   if (!msg) {
+     return NS_ERROR_FAILURE;
+   }
+@@ -54,58 +82,92 @@ nsWifiScannerDBus::SendMessage(const cha
+   DBusMessageIter argsIter;
+   dbus_message_iter_init_append(msg, &argsIter);
+ 
+-  if (!strcmp(aFuncCall, "Get")) {
+-    const char* paramInterface = "org.freedesktop.NetworkManager.Device";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
+-                                        &paramInterface)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-
+-    const char* paramDeviceType = "DeviceType";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
+-                                        &paramDeviceType)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-  } else if (!strcmp(aFuncCall, "GetAll")) {
+-    const char* param = "";
+-    if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
+-      return NS_ERROR_FAILURE;
+-    }
+-  }
++  const char* paramInterface = "org.freedesktop.NetworkManager.Device";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
++                                      &paramInterface)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  const char* paramDeviceType = "DeviceType";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING,
++                                      &paramDeviceType)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyDeviceType(reply, aPath);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetAccessPoints(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.NetworkManager.Device.Wireless",
++                                 "GetAccessPoints"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
+ 
+   DBusError err;
+   dbus_error_init(&err);
+ 
+-  // http://dbus.freedesktop.org/doc/api/html/group__DBusConnection.html
+-  // Refer to function dbus_connection_send_with_reply_and_block.
+-  const uint32_t DBUS_DEFAULT_TIMEOUT = -1;
+   RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
+     dbus_connection_send_with_reply_and_block(mConnection, msg,
+                                               DBUS_DEFAULT_TIMEOUT, &err));
+   if (dbus_error_is_set(&err)) {
+     dbus_error_free(&err);
+-
+     // In the GetAccessPoints case, if there are no access points, error is set.
+     // We don't want to error out here.
+-    if (!strcmp(aFuncCall, "GetAccessPoints")) {
+-      return NS_OK;
+-    }
+-    return NS_ERROR_FAILURE;
++    return NS_OK;
+   }
+ 
+-  nsresult rv;
+-  if (!strcmp(aFuncCall, "GetDevices")) {
+-    rv = IdentifyDevices(reply);
+-  } else if (!strcmp(aFuncCall, "Get")) {
+-    rv = IdentifyDeviceType(reply, aPath);
+-  } else if (!strcmp(aFuncCall, "GetAccessPoints")) {
+-    rv = IdentifyAccessPoints(reply);
+-  } else if (!strcmp(aFuncCall, "GetAll")) {
+-    rv = IdentifyAPProperties(reply);
+-  } else {
+-    rv = NS_ERROR_FAILURE;
+-  }
+-  return rv;
++  return IdentifyAccessPoints(reply);
++}
++
++nsresult
++nsWifiScannerDBus::SendGetAPProperties(const char* aPath)
++{
++  RefPtr<DBusMessage> msg = already_AddRefed<DBusMessage>(
++    dbus_message_new_method_call("org.freedesktop.NetworkManager",
++                                 aPath,
++                                 "org.freedesktop.DBus.Properties",
++                                 "GetAll"));
++  if (!msg) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusMessageIter argsIter;
++  dbus_message_iter_init_append(msg, &argsIter);
++
++  const char* param = "";
++  if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
++    return NS_ERROR_FAILURE;
++  }
++
++  DBusError err;
++  dbus_error_init(&err);
++
++  RefPtr<DBusMessage> reply = already_AddRefed<DBusMessage>(
++    dbus_connection_send_with_reply_and_block(mConnection, msg,
++                                              DBUS_DEFAULT_TIMEOUT, &err));
++  if (dbus_error_is_set(&err)) {
++    dbus_error_free(&err);
++    return NS_ERROR_FAILURE;
++  }
++
++  return IdentifyAPProperties(reply);
+ }
+ 
+ nsresult
+@@ -126,7 +188,7 @@ nsWifiScannerDBus::IdentifyDevices(DBusM
+       return NS_ERROR_FAILURE;
+     }
+ 
+-    rv = SendMessage("org.freedesktop.DBus.Properties", devicePath, "Get");
++    rv = SendGetDeviceType(devicePath);
+     NS_ENSURE_SUCCESS(rv, rv);
+   } while (dbus_message_iter_next(&iter));
+ 
+@@ -159,8 +221,7 @@ nsWifiScannerDBus::IdentifyDeviceType(DB
+   const uint32_t NM_DEVICE_TYPE_WIFI = 2;
+   nsresult rv = NS_OK;
+   if (deviceType == NM_DEVICE_TYPE_WIFI) {
+-    rv = SendMessage("org.freedesktop.NetworkManager.Device.Wireless",
+-                     aDevicePath, "GetAccessPoints");
++    rv = SendGetAccessPoints(aDevicePath);
+   }
+ 
+   return rv;
+@@ -183,7 +244,7 @@ nsWifiScannerDBus::IdentifyAccessPoints(
+       return NS_ERROR_FAILURE;
+     }
+ 
+-    rv = SendMessage("org.freedesktop.DBus.Properties", path, "GetAll");
++    rv = SendGetAPProperties(path);
+     NS_ENSURE_SUCCESS(rv, rv);
+   } while (dbus_message_iter_next(&iter));
+ 
+diff --git a/netwerk/wifi/nsWifiScannerDBus.h b/netwerk/wifi/nsWifiScannerDBus.h
+--- a/netwerk/wifi/nsWifiScannerDBus.h
++++ b/netwerk/wifi/nsWifiScannerDBus.h
+@@ -25,9 +25,10 @@ public:
+   nsresult Scan();
+ 
+ private:
+-  nsresult SendMessage(const char* aInterface,
+-                       const char* aPath,
+-                       const char* aFuncCall);
++  nsresult SendGetDevices();
++  nsresult SendGetDeviceType(const char* aPath);
++  nsresult SendGetAccessPoints(const char* aPath);
++  nsresult SendGetAPProperties(const char* aPath);
+   nsresult IdentifyDevices(DBusMessage* aMsg);
+   nsresult IdentifyDeviceType(DBusMessage* aMsg, const char* aDevicePath);
+   nsresult IdentifyAccessPoints(DBusMessage* aMsg);

Copied: firefox/repos/staging-x86_64/wifi-fix-interface.patch (from rev 315804, firefox/trunk/wifi-fix-interface.patch)
===================================================================
--- staging-x86_64/wifi-fix-interface.patch	                        (rev 0)
+++ staging-x86_64/wifi-fix-interface.patch	2018-02-03 14:36:23 UTC (rev 315805)
@@ -0,0 +1,26 @@
+# HG changeset patch
+# Parent  7a6d836b62779aa61988981c6ca646495574a505
+Bug 1314968 - Explicitly specify the AccessPoint interface name. r?kanru
+
+The DBus specification allows passing an empty string as the interface to the
+org.freedesktop.DBus.Properties.GetAll call to get all properties, throwing away the namespace
+(interface) information.
+
+However, GDBus does not allow this. When NetworkManager moved to using GDBus, Firefox lost the
+ability to retrieve access points from NetworkManager.
+
+Since we're only interested in properties from the org.freedesktop.NetworkManager.AccessPoint
+interface, name it explicitly. This works with both the old and the new NetworkManager.
+
+diff --git a/netwerk/wifi/nsWifiScannerDBus.cpp b/netwerk/wifi/nsWifiScannerDBus.cpp
+--- a/netwerk/wifi/nsWifiScannerDBus.cpp
++++ b/netwerk/wifi/nsWifiScannerDBus.cpp
+@@ -151,7 +151,7 @@ nsWifiScannerDBus::SendGetAll(const char
+   DBusMessageIter argsIter;
+   dbus_message_iter_init_append(msg, &argsIter);
+ 
+-  const char* param = "";
++  const char* param = "org.freedesktop.NetworkManager.AccessPoint";
+   if (!dbus_message_iter_append_basic(&argsIter, DBUS_TYPE_STRING, &param)) {
+     return NS_ERROR_FAILURE;
+   }



More information about the arch-commits mailing list