diff --git a/accessible/src/base/nsAccUtils.cpp b/accessible/src/base/nsAccUtils.cpp
index 1b6a448024dd..a881cd5401cd 100644
--- a/accessible/src/base/nsAccUtils.cpp
+++ b/accessible/src/base/nsAccUtils.cpp
@@ -461,24 +461,24 @@ nsAccUtils::TextLength(nsAccessible *aAccessible)
}
bool
-nsAccUtils::MustPrune(nsIAccessible *aAccessible)
+nsAccUtils::MustPrune(nsAccessible* aAccessible)
{
- PRUint32 role = nsAccUtils::Role(aAccessible);
+ roles::Role role = aAccessible->Role();
// We don't prune buttons any more however AT don't expect children inside of
// button in general, we allow menu buttons to have children to make them
// accessible.
- return role == nsIAccessibleRole::ROLE_MENUITEM ||
- role == nsIAccessibleRole::ROLE_COMBOBOX_OPTION ||
- role == nsIAccessibleRole::ROLE_OPTION ||
- role == nsIAccessibleRole::ROLE_ENTRY ||
- role == nsIAccessibleRole::ROLE_FLAT_EQUATION ||
- role == nsIAccessibleRole::ROLE_PASSWORD_TEXT ||
- role == nsIAccessibleRole::ROLE_TOGGLE_BUTTON ||
- role == nsIAccessibleRole::ROLE_GRAPHIC ||
- role == nsIAccessibleRole::ROLE_SLIDER ||
- role == nsIAccessibleRole::ROLE_PROGRESSBAR ||
- role == nsIAccessibleRole::ROLE_SEPARATOR;
+ return role == roles::MENUITEM ||
+ role == roles::COMBOBOX_OPTION ||
+ role == roles::OPTION ||
+ role == roles::ENTRY ||
+ role == roles::FLAT_EQUATION ||
+ role == roles::PASSWORD_TEXT ||
+ role == roles::TOGGLE_BUTTON ||
+ role == roles::GRAPHIC ||
+ role == roles::SLIDER ||
+ role == roles::PROGRESSBAR ||
+ role == roles::SEPARATOR;
}
nsresult
diff --git a/accessible/src/base/nsAccUtils.h b/accessible/src/base/nsAccUtils.h
index 393194b0129a..02b5fcebd2eb 100644
--- a/accessible/src/base/nsAccUtils.h
+++ b/accessible/src/base/nsAccUtils.h
@@ -295,7 +295,7 @@ public:
* Return true if the given accessible can't have children. Used when exposing
* to platform accessibility APIs, should the children be pruned off?
*/
- static bool MustPrune(nsIAccessible *aAccessible);
+ static bool MustPrune(nsAccessible* aAccessible);
/**
* Search hint enum constants. Used by GetHeaderCellsFor() method.
diff --git a/b2g/app/b2g.js b/b2g/app/b2g.js
index 54fa24ed9daf..41c19cf4445a 100644
--- a/b2g/app/b2g.js
+++ b/b2g/app/b2g.js
@@ -392,11 +392,17 @@ pref("browser.link.open_newwindow", 3);
// 2: don't divert window.open with features
pref("browser.link.open_newwindow.restriction", 0);
-// Enable browser frames (including OOP), but make in-process browser frames
-// the default.
+// Enable browser frames (including OOP, except on Windows, where it doesn't
+// work), but make in-process browser frames the default.
pref("dom.mozBrowserFramesEnabled", true);
pref("dom.mozBrowserFramesWhitelist", "http://homescreen.gaiamobile.org,http://browser.gaiamobile.org");
+
+#ifdef XP_WIN
+pref("dom.ipc.tabs.disabled", true);
+#else
pref("dom.ipc.tabs.disabled", false);
+#endif
+
pref("dom.ipc.browser_frames.oop_by_default", false);
// Temporary permission hack for WebSMS
diff --git a/b2g/chrome/content/shell.js b/b2g/chrome/content/shell.js
index b2246a6e226f..b75551a6d474 100644
--- a/b2g/chrome/content/shell.js
+++ b/b2g/chrome/content/shell.js
@@ -179,7 +179,10 @@ var shell = {
if (!audioManager)
return;
- let volume = audioManager.masterVolume + delta / steps;
+ let currentVolume = audioManager.masterVolume;
+ let newStep = Math.round(steps * Math.sqrt(currentVolume)) + delta;
+ let volume = (newStep / steps) * (newStep / steps);
+
if (volume > 1)
volume = 1;
if (volume < 0)
diff --git a/browser/Makefile.in b/browser/Makefile.in
index ebe8b1fdb664..d3d2e3bea65b 100644
--- a/browser/Makefile.in
+++ b/browser/Makefile.in
@@ -16,6 +16,7 @@ PARALLEL_DIRS = \
locales \
modules \
themes \
+ extensions \
$(NULL)
DIRS = \
diff --git a/browser/app/macbuild/Contents/CodeResources b/browser/app/macbuild/Contents/CodeResources
new file mode 120000
index 000000000000..1a65e20cbead
--- /dev/null
+++ b/browser/app/macbuild/Contents/CodeResources
@@ -0,0 +1 @@
+_CodeSignature/CodeResources
\ No newline at end of file
diff --git a/browser/app/macbuild/Contents/_CodeSignature/CodeResources b/browser/app/macbuild/Contents/_CodeSignature/CodeResources
new file mode 100644
index 000000000000..485e4c3753e4
--- /dev/null
+++ b/browser/app/macbuild/Contents/_CodeSignature/CodeResources
@@ -0,0 +1,45 @@
+
+
+
+
+ rules
+
+ ^Info.plist$
+
+ ^PkgInfo$
+
+ ^MacOS/
+
+ ^Resources/
+
+ ^MacOS/extensions/.*
+ omit
+
+
+ ^MacOS/distribution/.*
+ omit
+
+
+ ^MacOS/updates/.*
+ omit
+
+
+ ^MacOS/active-update.xml$
+ omit
+
+
+ ^MacOS/defaults/.*
+ omit
+
+
+ ^MacOS/mozilla.cfg$
+ omit
+
+
+ ^MacOS/updates.xml$
+ omit
+
+
+
+
+
diff --git a/browser/app/profile/extensions/Makefile.in b/browser/app/profile/extensions/Makefile.in
index 4f7b9f4163bc..0cf924535410 100644
--- a/browser/app/profile/extensions/Makefile.in
+++ b/browser/app/profile/extensions/Makefile.in
@@ -14,7 +14,6 @@ include $(DEPTH)/config/autoconf.mk
DIRS = \
{972ce4c6-7e08-4474-a285-3208198ce6fd} \
- uriloader@pdf.js \
$(NULL)
include $(topsrcdir)/config/rules.mk
diff --git a/browser/app/profile/extensions/uriloader@pdf.js/Makefile.in b/browser/app/profile/extensions/uriloader@pdf.js/Makefile.in
deleted file mode 100644
index 0c923a4f86d2..000000000000
--- a/browser/app/profile/extensions/uriloader@pdf.js/Makefile.in
+++ /dev/null
@@ -1,30 +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/.
-
-DEPTH = ../../../../..
-topsrcdir = @top_srcdir@
-srcdir = @srcdir@
-VPATH = @srcdir@
-
-APPEXT = $(call core_abspath,$(DIST))/bin/extensions
-
-TEST_DIRS += test
-
-include $(DEPTH)/config/autoconf.mk
-include $(topsrcdir)/config/rules.mk
-
-# Using the extension-files as an extension files whitelist to avoid noise
-# in the xpi file such as MOZILLA.readme, install.pdf.in and this make file.
-FILES := $(shell cat $(srcdir)/extension-files)
-
-libs::
- $(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py $(DEFINES) $(ACDEFINES) $(srcdir)/install.rdf.in > install.rdf
- $(ZIP) -9X $(APPEXT)/uriloader@pdf.js.xpi install.rdf
- cd $(call core_abspath,$(srcdir)) && \
- $(ZIP) -9X $(APPEXT)/uriloader@pdf.js.xpi $(FILES)
-
-install::
- $(SYSINSTALL) $(IFLAGS1) $(APPEXT)/uriloader@pdf.js.xpi $(DESTDIR)$(mozappdir)/extensions
-
-GARBAGE += install.rdf
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index 5baca2f8432c..9acc22abb995 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -59,9 +59,8 @@ pref("extensions.hotfix.id", "firefox-hotfix@mozilla.org");
pref("extensions.hotfix.cert.checkAttributes", true);
pref("extensions.hotfix.certs.1.sha1Fingerprint", "F1:DB:F9:6A:7B:B8:04:FA:48:3C:16:95:C7:2F:17:C6:5B:C2:9F:45");
-// Disable add-ons installed into the shared user and shared system areas by
-// default. This does not include the application directory. See the SCOPE
-// constants in AddonManager.jsm for values to use here
+// Disable add-ons that are not installed by the user in all scopes by default.
+// See the SCOPE constants in AddonManager.jsm for values to use here.
pref("extensions.autoDisableScopes", 15);
// Dictionary download preference
@@ -146,6 +145,10 @@ pref("app.update.mode", 1);
// If set to true, the Update Service will present no UI for any event.
pref("app.update.silent", false);
+// If set to true, the Update Service will apply updates in the background
+// when it finishes downloading them.
+pref("app.update.stage.enabled", true);
+
// Update service URL:
pref("app.update.url", "https://aus3.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml");
// app.update.url.manual is in branding section
@@ -1027,7 +1030,7 @@ pref("devtools.layoutview.enabled", false);
pref("devtools.layoutview.open", false);
// Enable the Debugger
-pref("devtools.debugger.enabled", false);
+pref("devtools.debugger.enabled", true);
pref("devtools.debugger.remote-enabled", false);
pref("devtools.debugger.remote-host", "localhost");
pref("devtools.debugger.remote-port", 6000);
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
index 3e40b656adfd..29a2914f6e46 100644
--- a/browser/base/content/aboutDialog.js
+++ b/browser/base/content/aboutDialog.js
@@ -122,6 +122,12 @@ function appUpdater()
return;
}
+ if (this.isApplied) {
+ this.setupUpdateButton("update.restart." +
+ (this.isMajor ? "upgradeButton" : "restartButton"));
+ return;
+ }
+
if (this.isDownloading) {
this.startDownload();
return;
@@ -151,6 +157,16 @@ appUpdater.prototype =
this.um.activeUpdate.state == "pending-service");
},
+ // true when there is an update already installed in the background.
+ get isApplied() {
+ if (this.update)
+ return this.update.state == "applied" ||
+ this.update.state == "applied-service";
+ return this.um.activeUpdate &&
+ (this.um.activeUpdate.state == "applied" ||
+ this.um.activeUpdate.state == "applied-service");
+ },
+
// true when there is an update download in progress.
get isDownloading() {
if (this.update)
@@ -181,6 +197,12 @@ appUpdater.prototype =
return true; // Firefox default is true
},
+ // true when updating in background is enabled.
+ get backgroundUpdateEnabled() {
+ return this.updateEnabled &&
+ Services.prefs.getBoolPref("app.update.stage.enabled");
+ },
+
// true when updating is automatic.
get updateAuto() {
try {
@@ -220,7 +242,7 @@ appUpdater.prototype =
* Handles oncommand for the update button.
*/
buttonOnCommand: function() {
- if (this.isPending) {
+ if (this.isPending || this.isApplied) {
// Notify all windows that an application quit has been requested.
let cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].
createInstance(Components.interfaces.nsISupportsPRBool);
@@ -505,9 +527,34 @@ appUpdater.prototype =
break;
case Components.results.NS_OK:
this.removeDownloadListener();
- this.selectPanel("updateButtonBox");
- this.setupUpdateButton("update.restart." +
- (this.isMajor ? "upgradeButton" : "updateButton"));
+ if (this.backgroundUpdateEnabled) {
+ this.selectPanel("applying");
+ let update = this.um.activeUpdate;
+ let self = this;
+ let timer = Components.classes["@mozilla.org/timer;1"]
+ .createInstance(Components.interfaces.nsITimer);
+ timer.initWithCallback(function () {
+ // Update the UI when the background updater is finished
+ let status = update.state;
+ if (status == "applied" || status == "applied-service") {
+ self.selectPanel("updateButtonBox");
+ self.setupUpdateButton("update.restart." +
+ (self.isMajor ? "upgradeButton" : "restartButton"));
+ timer.cancel();
+ timer = null;
+ } else if (status == "failed") {
+ // Background update has failed, let's show the UI responsible for
+ // prompting the user to update manually.
+ self.selectPanel("downloadFailed");
+ timer.cancel();
+ timer = null;
+ }
+ }, 500, timer.TYPE_REPEATING_SLACK);
+ } else {
+ this.selectPanel("updateButtonBox");
+ this.setupUpdateButton("update.restart." +
+ (this.isMajor ? "upgradeButton" : "updateButton"));
+ }
break;
default:
this.removeDownloadListener();
diff --git a/browser/base/content/aboutDialog.xul b/browser/base/content/aboutDialog.xul
index 6c41bc9a64d9..d6cef8da0230 100644
--- a/browser/base/content/aboutDialog.xul
+++ b/browser/base/content/aboutDialog.xul
@@ -64,6 +64,9 @@
+
+
+
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index b3dfb7d93600..f691616d7608 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -4184,7 +4184,7 @@ var FullScreen = {
cancelWarning: function(event) {
if (!this.warningBox)
return;
- this.fullscreenDocUri = null;
+ this.fullscreenDoc = null;
this.warningBox.removeEventListener("transitionend", this);
if (this.warningFadeOutTimeout) {
clearTimeout(this.warningFadeOutTimeout);
@@ -4204,39 +4204,52 @@ var FullScreen = {
},
setFullscreenAllowed: function(isApproved) {
- let remember = document.getElementById("full-screen-remember-decision").checked;
- if (remember)
- Services.perms.add(this.fullscreenDocUri,
- "fullscreen",
- isApproved ? Services.perms.ALLOW_ACTION : Services.perms.DENY_ACTION,
- Services.perms.EXPIRE_NEVER);
- else if (isApproved) {
- // The user has only temporarily approved fullscren for this domain.
- // Add the permission (so Gecko knows fullscreen is approved) but add a
- // listener to remove the permission when the chrome document exits fullscreen.
- Services.perms.add(this.fullscreenDocUri,
- "fullscreen",
- Services.perms.ALLOW_ACTION,
- Services.perms.EXPIRE_SESSION);
- let host = this.fullscreenDocUri.host;
- function onFullscreenchange(event) {
- if (event.target == document && document.mozFullScreenElement == null) {
- // The chrome document has left fullscreen. Remove the temporary permission grant.
- Services.perms.remove(host, "fullscreen");
- document.removeEventListener("mozfullscreenchange", onFullscreenchange);
+ // The "remember decision" checkbox is hidden when showing for documents that
+ // the permission manager can't handle (documents with URIs without a host).
+ // We simply require those to be approved every time instead.
+ let rememberCheckbox = document.getElementById("full-screen-remember-decision");
+ let uri = this.fullscreenDoc.nodePrincipal.URI;
+ if (!rememberCheckbox.hidden) {
+ if (rememberCheckbox.checked)
+ Services.perms.add(uri,
+ "fullscreen",
+ isApproved ? Services.perms.ALLOW_ACTION : Services.perms.DENY_ACTION,
+ Services.perms.EXPIRE_NEVER);
+ else if (isApproved) {
+ // The user has only temporarily approved fullscren for this fullscreen
+ // session only. Add the permission (so Gecko knows to approve any further
+ // fullscreen requests for this host in this fullscreen session) but add
+ // a listener to revoke the permission when the chrome document exits
+ // fullscreen.
+ Services.perms.add(uri,
+ "fullscreen",
+ Services.perms.ALLOW_ACTION,
+ Services.perms.EXPIRE_SESSION);
+ let host = uri.host;
+ function onFullscreenchange(event) {
+ if (event.target == document && document.mozFullScreenElement == null) {
+ // The chrome document has left fullscreen. Remove the temporary permission grant.
+ Services.perms.remove(host, "fullscreen");
+ document.removeEventListener("mozfullscreenchange", onFullscreenchange);
+ }
}
+ document.addEventListener("mozfullscreenchange", onFullscreenchange);
}
- document.addEventListener("mozfullscreenchange", onFullscreenchange);
}
if (this.warningBox)
this.warningBox.setAttribute("fade-warning-out", "true");
- if (!isApproved)
+ // If the document has been granted fullscreen, notify Gecko so it can resume
+ // any pending pointer lock requests, otherwise exit fullscreen; the user denied
+ // the fullscreen request.
+ if (isApproved)
+ Services.obs.notifyObservers(this.fullscreenDoc, "fullscreen-approved", "");
+ else
document.mozCancelFullScreen();
},
warningBox: null,
warningFadeOutTimeout: null,
- fullscreenDocUri: null,
+ fullscreenDoc: null,
// Shows the fullscreen approval UI, or if the domain has already been approved
// for fullscreen, shows a warning that the site has entered fullscreen for a short
@@ -4247,15 +4260,37 @@ var FullScreen = {
return;
// Set the strings on the fullscreen approval UI.
- this.fullscreenDocUri = targetDoc.nodePrincipal.URI;
- let utils = {};
- Cu.import("resource://gre/modules/DownloadUtils.jsm", utils);
- let [displayHost, fullHost] = utils.DownloadUtils.getURIHost(this.fullscreenDocUri.spec);
- let bundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
- let domainText = bundle.formatStringFromName("fullscreen.entered", [displayHost], 1);
- document.getElementById("full-screen-domain-text").textContent = domainText;
- let rememberText = bundle.formatStringFromName("fullscreen.rememberDecision", [displayHost], 1);
- document.getElementById("full-screen-remember-decision").label = rememberText;
+ this.fullscreenDoc = targetDoc;
+ let uri = this.fullscreenDoc.nodePrincipal.URI;
+ let host = null;
+ try {
+ host = uri.host;
+ } catch (e) { }
+ let hostLabel = document.getElementById("full-screen-domain-text");
+ let rememberCheckbox = document.getElementById("full-screen-remember-decision");
+ let isApproved = false;
+ if (host) {
+ // Document's principal's URI has a host. Display a warning including the hostname and
+ // show UI to enable the user to permanently grant this host permission to enter fullscreen.
+ let utils = {};
+ Cu.import("resource://gre/modules/DownloadUtils.jsm", utils);
+ let displayHost = utils.DownloadUtils.getURIHost(uri.spec)[0];
+ let bundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
+
+ hostLabel.textContent = bundle.formatStringFromName("fullscreen.entered", [displayHost], 1);
+ hostLabel.removeAttribute("hidden");
+
+ rememberCheckbox.label = bundle.formatStringFromName("fullscreen.rememberDecision", [displayHost], 1);
+ rememberCheckbox.checked = false;
+ rememberCheckbox.removeAttribute("hidden");
+
+ // Note we only allow documents whose principal's URI has a host to
+ // store permission grants.
+ isApproved = Services.perms.testPermission(uri, "fullscreen") == Services.perms.ALLOW_ACTION;
+ } else {
+ hostLabel.setAttribute("hidden", "true");
+ rememberCheckbox.setAttribute("hidden", "true");
+ }
// Note: the warning box can be non-null if the warning box from the previous request
// wasn't hidden before another request was made.
@@ -4269,11 +4304,10 @@ var FullScreen = {
// If fullscreen mode has not yet been approved for the fullscreen
// document's domain, show the approval UI and don't auto fade out the
// fullscreen warning box. Otherwise, we're just notifying of entry into
- // fullscreen mode.
- let isApproved =
- Services.perms.testPermission(this.fullscreenDocUri, "fullscreen") == Services.perms.ALLOW_ACTION;
+ // fullscreen mode. Note if the resource's host is null, we must be
+ // showing a local file or a local data URI, and we require explicit
+ // approval every time.
let authUI = document.getElementById("full-screen-approval-pane");
- document.getElementById("full-screen-remember-decision").checked = false;
if (isApproved)
authUI.setAttribute("hidden", "true");
else {
@@ -4471,7 +4505,7 @@ var XULBrowserWindow = {
startTime: 0,
statusText: "",
isBusy: false,
- inContentWhitelist: ["about:addons", "about:permissions",
+ inContentWhitelist: ["about:addons", "about:permissions",
"about:sync-progress", "about:preferences"],
QueryInterface: function (aIID) {
diff --git a/browser/base/content/pageinfo/pageInfo.js b/browser/base/content/pageinfo/pageInfo.js
index d5bf5349eb3c..f265b3966519 100644
--- a/browser/base/content/pageinfo/pageInfo.js
+++ b/browser/base/content/pageinfo/pageInfo.js
@@ -780,8 +780,16 @@ function saveMedia()
var item = getSelectedImage(tree);
var url = gImageView.data[tree.currentIndex][COL_IMAGE_ADDRESS];
- if (url)
- saveURL(url, null, "SaveImageTitle", false, false, makeURI(item.baseURI));
+ if (url) {
+ var titleKey = "SaveImageTitle";
+
+ if (item instanceof HTMLVideoElement)
+ titleKey = "SaveVideoTitle";
+ else if (item instanceof HTMLAudioElement)
+ titleKey = "SaveAudioTitle";
+
+ saveURL(url, null, titleKey, false, false, makeURI(item.baseURI));
+ }
}
else {
var odir = selectSaveFolder();
diff --git a/browser/components/about/Makefile.in b/browser/components/about/Makefile.in
index 9400a8dcbee7..e83ef7e13fb7 100644
--- a/browser/components/about/Makefile.in
+++ b/browser/components/about/Makefile.in
@@ -11,11 +11,9 @@ include $(DEPTH)/config/autoconf.mk
MODULE = browserabout
LIBRARY_NAME = browserabout_s
-FORCE_STATIC_LIB = 1
-ifndef MOZ_MEMORY
-USE_STATIC_LIBS = 1
-endif
+FORCE_STATIC_LIB = 1
+USE_STATIC_LIBS = 1
EXPORTS_NAMESPACES = mozilla/browser
diff --git a/browser/components/build/Makefile.in b/browser/components/build/Makefile.in
index 83e799bfbcb0..941982b9718c 100644
--- a/browser/components/build/Makefile.in
+++ b/browser/components/build/Makefile.in
@@ -16,11 +16,7 @@ IS_COMPONENT = 1
MODULE_NAME = nsBrowserCompsModule
FORCE_SHARED_LIB = 1
-# Statically link the CRT on Windows if building against
-# a XULRunner SDK.
-ifdef LIBXUL_SDK
USE_STATIC_LIBS = 1
-endif
EXPORTS = nsBrowserCompsCID.h
@@ -56,7 +52,7 @@ endif
EXTRA_DSO_LDOPTS += \
$(call EXPAND_LIBNAME_PATH,unicharutil_external_s,$(LIBXUL_DIST)/lib) \
- $(XPCOM_GLUE_LDOPTS) \
+ $(XPCOM_STATICRUNTIME_GLUE_LDOPTS) \
$(MOZ_COMPONENT_LIBS) \
$(NULL)
diff --git a/browser/components/dirprovider/Makefile.in b/browser/components/dirprovider/Makefile.in
index 0e138bf1a3de..08c23a9e7a6c 100644
--- a/browser/components/dirprovider/Makefile.in
+++ b/browser/components/dirprovider/Makefile.in
@@ -15,12 +15,7 @@ LIBRARY_NAME = browserdir_s
TEST_DIRS += tests
FORCE_STATIC_LIB = 1
-
-# Because we are an application component, link against the CRT statically
-# (on Windows, but only if we're not building our own CRT for jemalloc)
-ifndef MOZ_MEMORY
-USE_STATIC_LIBS = 1
-endif
+USE_STATIC_LIBS = 1
EXPORTS_NAMESPACES = mozilla/browser
EXPORTS_mozilla/browser = DirectoryProvider.h
diff --git a/browser/components/feeds/src/Makefile.in b/browser/components/feeds/src/Makefile.in
index 12ce272d0886..b4d386fe2abf 100644
--- a/browser/components/feeds/src/Makefile.in
+++ b/browser/components/feeds/src/Makefile.in
@@ -11,10 +11,9 @@ include $(DEPTH)/config/autoconf.mk
MODULE = browser_feeds
LIBRARY_NAME = browser_feeds_s
+
FORCE_STATIC_LIB = 1
-ifndef MOZ_MEMORY
USE_STATIC_LIBS = 1
-endif
DEFINES += \
-DMOZ_APP_NAME=$(MOZ_APP_NAME) \
diff --git a/browser/components/migration/src/Makefile.in b/browser/components/migration/src/Makefile.in
index f72bcb9a829f..5ae31136a5e3 100644
--- a/browser/components/migration/src/Makefile.in
+++ b/browser/components/migration/src/Makefile.in
@@ -11,10 +11,9 @@ include $(DEPTH)/config/autoconf.mk
MODULE = migration
LIBRARY_NAME = migration_s
+
FORCE_STATIC_LIB = 1
-ifndef MOZ_MEMORY
USE_STATIC_LIBS = 1
-endif
EXTRA_PP_COMPONENTS = \
ProfileMigrator.js \
diff --git a/browser/components/privatebrowsing/src/Makefile.in b/browser/components/privatebrowsing/src/Makefile.in
index 44f9ce62358a..7a7ab036eeb7 100644
--- a/browser/components/privatebrowsing/src/Makefile.in
+++ b/browser/components/privatebrowsing/src/Makefile.in
@@ -11,11 +11,9 @@ include $(DEPTH)/config/autoconf.mk
MODULE = privatebrowsing
LIBRARY_NAME = privatebrowsing_s
-FORCE_STATIC_LIB = 1
-ifndef MOZ_MEMORY
-USE_STATIC_LIBS = 1
-endif
+FORCE_STATIC_LIB = 1
+USE_STATIC_LIBS = 1
CPPSRCS = \
nsPrivateBrowsingServiceWrapper.cpp \
diff --git a/browser/components/sessionstore/src/DocumentUtils.jsm b/browser/components/sessionstore/src/DocumentUtils.jsm
index abad89e9bbb5..5e8257c1b616 100644
--- a/browser/components/sessionstore/src/DocumentUtils.jsm
+++ b/browser/components/sessionstore/src/DocumentUtils.jsm
@@ -73,16 +73,16 @@ let DocumentUtils = {
//