summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-06-03 12:18:05 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-06-03 12:18:05 +0200
commit963472201e86caa2d05f358be39fa4cacaea0409 (patch)
tree398f84e610ebe1662f893a0539134caf3ad5456e
parent2eeab8f39c865c73eb3af26fb996f246313a109e (diff)
parentdd7046209e4e2e51f48e1499366692e7e8b78ff3 (diff)
downloadUXP-963472201e86caa2d05f358be39fa4cacaea0409.tar
UXP-963472201e86caa2d05f358be39fa4cacaea0409.tar.gz
UXP-963472201e86caa2d05f358be39fa4cacaea0409.tar.lz
UXP-963472201e86caa2d05f358be39fa4cacaea0409.tar.xz
UXP-963472201e86caa2d05f358be39fa4cacaea0409.zip
Merge branch 'master' of https://github.com/MoonchildProductions/UXP
-rw-r--r--application/palemoon/installer/package-manifest.in2
-rw-r--r--browser/components/nsBrowserGlue.js4
-rw-r--r--browser/modules/SelfSupportBackend.jsm312
-rw-r--r--browser/modules/moz.build1
-rw-r--r--python/mozbuild/mozbuild/mach_commands.py10
5 files changed, 11 insertions, 318 deletions
diff --git a/application/palemoon/installer/package-manifest.in b/application/palemoon/installer/package-manifest.in
index fb5441832..26b4969d6 100644
--- a/application/palemoon/installer/package-manifest.in
+++ b/application/palemoon/installer/package-manifest.in
@@ -56,7 +56,7 @@
@RESPATH@/hyphenation/*
@RESPATH@/browser/@PREF_DIR@/palemoon-l10n.js
@RESPATH@/browser/searchplugins/*
-#ifdef HAVE_MAKENSISU
+#ifdef XP_WIN32
@BINPATH@/uninstall/helper.exe
#endif
#ifdef MOZ_UPDATER
diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js
index db85e85f2..ae00e30cf 100644
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -56,7 +56,6 @@ XPCOMUtils.defineLazyServiceGetter(this, "AlertsService", "@mozilla.org/alerts-s
["ReaderParent", "resource:///modules/ReaderParent.jsm"],
["RecentWindow", "resource:///modules/RecentWindow.jsm"],
["RemotePrompt", "resource:///modules/RemotePrompt.jsm"],
- ["SelfSupportBackend", "resource:///modules/SelfSupportBackend.jsm"],
["SessionStore", "resource:///modules/sessionstore/SessionStore.jsm"],
["ShellService", "resource:///modules/ShellService.jsm"],
["SimpleServiceDiscovery", "resource://gre/modules/SimpleServiceDiscovery.jsm"],
@@ -681,8 +680,6 @@ BrowserGlue.prototype = {
ReaderParent.init();
URLBarZoom.init();
- SelfSupportBackend.init();
-
// Ensure we keep track of places/pw-mananager undo by init'ing this early.
Cu.import("resource:///modules/AutoMigrate.jsm");
@@ -1030,7 +1027,6 @@ BrowserGlue.prototype = {
}
BrowserUsageTelemetry.uninit();
- SelfSupportBackend.uninit();
UserAgentOverrides.uninit();
PageThumbs.uninit();
NewTabMessages.uninit();
diff --git a/browser/modules/SelfSupportBackend.jsm b/browser/modules/SelfSupportBackend.jsm
deleted file mode 100644
index 27072732e..000000000
--- a/browser/modules/SelfSupportBackend.jsm
+++ /dev/null
@@ -1,312 +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";
-
-this.EXPORTED_SYMBOLS = ["SelfSupportBackend"];
-
-const Cu = Components.utils;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-Cu.import("resource://gre/modules/Log.jsm");
-Cu.import("resource://gre/modules/Preferences.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/Timer.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(this, "HiddenFrame",
- "resource:///modules/HiddenFrame.jsm");
-
-// Enables or disables the Self Support.
-const PREF_ENABLED = "browser.selfsupport.enabled";
-// Url to open in the Self Support browser, in the urlFormatter service format.
-const PREF_URL = "browser.selfsupport.url";
-// Unified Telemetry status.
-const PREF_TELEMETRY_UNIFIED = "toolkit.telemetry.unified";
-
-// Controls the interval at which the self support page tries to reload in case of
-// errors.
-const RETRY_INTERVAL_MS = 30000;
-// Maximum number of SelfSupport page load attempts in case of failure.
-const MAX_RETRIES = 5;
-// The delay after which to load the self-support, at startup.
-const STARTUP_DELAY_MS = 5000;
-
-const LOGGER_NAME = "Browser.SelfSupportBackend";
-const PREF_BRANCH_LOG = "browser.selfsupport.log.";
-const PREF_LOG_LEVEL = PREF_BRANCH_LOG + "level";
-const PREF_LOG_DUMP = PREF_BRANCH_LOG + "dump";
-
-const HTML_NS = "http://www.w3.org/1999/xhtml";
-const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
-
-// Whether the FHR/Telemetry unification features are enabled.
-// Changing this pref requires a restart.
-const IS_UNIFIED_TELEMETRY = Preferences.get(PREF_TELEMETRY_UNIFIED, false);
-
-var gLogAppenderDump = null;
-
-this.SelfSupportBackend = Object.freeze({
- init: function () {
- SelfSupportBackendInternal.init();
- },
-
- uninit: function () {
- SelfSupportBackendInternal.uninit();
- },
-});
-
-var SelfSupportBackendInternal = {
- // The browser element that will load the SelfSupport page.
- _browser: null,
- // The Id of the timer triggering delayed SelfSupport page load.
- _delayedLoadTimerId: null,
- // The HiddenFrame holding the _browser element.
- _frame: null,
- _log: null,
- _progressListener: null,
-
- /**
- * Initializes the self support backend.
- */
- init: function () {
- this._configureLogging();
-
- this._log.trace("init");
-
- Preferences.observe(PREF_BRANCH_LOG, this._configureLogging, this);
-
- // Only allow to use SelfSupport if Unified Telemetry is enabled.
- let reportingEnabled = IS_UNIFIED_TELEMETRY;
- if (!reportingEnabled) {
- this._log.config("init - Disabling SelfSupport because FHR and Unified Telemetry are disabled.");
- return;
- }
-
- this._log.config("init - Disabling SelfSupport because UITour is disabled.");
- return;
- },
-
- /**
- * Shut down the self support backend, if active.
- */
- uninit: function () {
- this._log.trace("uninit");
-
- Preferences.ignore(PREF_BRANCH_LOG, this._configureLogging, this);
-
- // Cancel delayed loading, if still active, when shutting down.
- clearTimeout(this._delayedLoadTimerId);
-
- // Dispose of the hidden browser.
- if (this._browser !== null) {
- if (this._browser.contentWindow) {
- this._browser.contentWindow.removeEventListener("DOMWindowClose", this, true);
- }
-
- if (this._progressListener) {
- this._browser.removeProgressListener(this._progressListener);
- this._progressListener.destroy();
- this._progressListener = null;
- }
-
- this._browser.remove();
- this._browser = null;
- }
-
- if (this._frame) {
- this._frame.destroy();
- this._frame = null;
- }
- },
-
- /**
- * Handle notifications. Once all windows are created, we wait a little bit more
- * since tabs might still be loading. Then, we open the self support.
- */
- observe: function (aSubject, aTopic, aData) {
- this._log.trace("observe - Topic " + aTopic);
-
- if (aTopic === "sessionstore-windows-restored") {
- Services.obs.removeObserver(this, "sessionstore-windows-restored");
- this._delayedLoadTimerId = setTimeout(this._loadSelfSupport.bind(this), STARTUP_DELAY_MS);
- }
- },
-
- /**
- * Configure the logger based on the preferences.
- */
- _configureLogging: function() {
- if (!this._log) {
- this._log = Log.repository.getLogger(LOGGER_NAME);
-
- // Log messages need to go to the browser console.
- let consoleAppender = new Log.ConsoleAppender(new Log.BasicFormatter());
- this._log.addAppender(consoleAppender);
- }
-
- // Make sure the logger keeps up with the logging level preference.
- this._log.level = Log.Level[Preferences.get(PREF_LOG_LEVEL, "Warn")];
-
- // If enabled in the preferences, add a dump appender.
- let logDumping = Preferences.get(PREF_LOG_DUMP, false);
- if (logDumping != !!gLogAppenderDump) {
- if (logDumping) {
- gLogAppenderDump = new Log.DumpAppender(new Log.BasicFormatter());
- this._log.addAppender(gLogAppenderDump);
- } else {
- this._log.removeAppender(gLogAppenderDump);
- gLogAppenderDump = null;
- }
- }
- },
-
- /**
- * Create an hidden frame to host our |browser|, then load the SelfSupport page in it.
- * @param aURL The URL to load in the browser.
- */
- _makeHiddenBrowser: function(aURL) {
- this._frame = new HiddenFrame();
- return this._frame.get().then(aFrame => {
- let doc = aFrame.document;
-
- this._browser = doc.createElementNS(XUL_NS, "browser");
- this._browser.setAttribute("type", "content");
- this._browser.setAttribute("disableglobalhistory", "true");
- this._browser.setAttribute("src", aURL);
-
- doc.documentElement.appendChild(this._browser);
- });
- },
-
- handleEvent: function(aEvent) {
- this._log.trace("handleEvent - aEvent.type " + aEvent.type + ", Trusted " + aEvent.isTrusted);
-
- if (aEvent.type === "DOMWindowClose") {
- let window = this._browser.contentDocument.defaultView;
- let target = aEvent.target;
-
- if (target == window) {
- // preventDefault stops the default window.close(). We need to do that to prevent
- // Services.appShell.hiddenDOMWindow from being destroyed.
- aEvent.preventDefault();
-
- this.uninit();
- }
- }
- },
-
- /**
- * Called when the self support page correctly loads.
- */
- _pageSuccessCallback: function() {
- this._log.debug("_pageSuccessCallback - Page correctly loaded.");
- this._browser.removeProgressListener(this._progressListener);
- this._progressListener.destroy();
- this._progressListener = null;
-
- // Allow SelfSupportBackend to catch |window.close()| issued by the content.
- this._browser.contentWindow.addEventListener("DOMWindowClose", this, true);
- },
-
- /**
- * Called when the self support page fails to load.
- */
- _pageLoadErrorCallback: function() {
- this._log.info("_pageLoadErrorCallback - Too many failed load attempts. Giving up.");
- this.uninit();
- },
-
- /**
- * Create a browser and attach it to an hidden window. The browser will contain the
- * self support page and attempt to load the page content. If loading fails, try again
- * after an interval.
- */
- _loadSelfSupport: function() {
- // Fetch the Self Support URL from the preferences.
- let unformattedURL = Preferences.get(PREF_URL, null);
- let url = Services.urlFormatter.formatURL(unformattedURL);
- if (!url.startsWith("https:")) {
- this._log.error("_loadSelfSupport - Non HTTPS URL provided: " + url);
- return;
- }
-
- this._log.config("_loadSelfSupport - URL " + url);
-
- // Create the hidden browser.
- this._makeHiddenBrowser(url).then(() => {
- // We need to watch for load errors as well and, in case, try to reload
- // the self support page.
- const webFlags = Ci.nsIWebProgress.NOTIFY_STATE_WINDOW |
- Ci.nsIWebProgress.NOTIFY_STATE_REQUEST |
- Ci.nsIWebProgress.NOTIFY_LOCATION;
-
- this._progressListener = new ProgressListener(() => this._pageLoadErrorCallback(),
- () => this._pageSuccessCallback());
-
- this._browser.addProgressListener(this._progressListener, webFlags);
- });
- }
-};
-
-/**
- * A progress listener object which notifies of page load error and load success
- * through callbacks. When the page fails to load, the progress listener tries to
- * reload it up to MAX_RETRIES times. The page is not loaded again immediately, but
- * after a timeout.
- *
- * @param aLoadErrorCallback Called when a page failed to load MAX_RETRIES times.
- * @param aLoadSuccessCallback Called when a page correctly loads.
- */
-function ProgressListener(aLoadErrorCallback, aLoadSuccessCallback) {
- this._loadErrorCallback = aLoadErrorCallback;
- this._loadSuccessCallback = aLoadSuccessCallback;
- // The number of page loads attempted.
- this._loadAttempts = 0;
- this._log = Log.repository.getLogger(LOGGER_NAME);
- // The Id of the timer which triggers page load again in case of errors.
- this._reloadTimerId = null;
-}
-
-ProgressListener.prototype = {
- onLocationChange: function(aWebProgress, aRequest, aLocation, aFlags) {
- if (aFlags & Ci.nsIWebProgressListener.LOCATION_CHANGE_ERROR_PAGE) {
- this._log.warn("onLocationChange - There was a problem fetching the SelfSupport URL (attempt " +
- this._loadAttempts + ").");
-
- // Increase the number of attempts and bail out if we failed too many times.
- this._loadAttempts++;
- if (this._loadAttempts > MAX_RETRIES) {
- this._loadErrorCallback();
- return;
- }
-
- // Reload the page after the retry interval expires. The interval is multiplied
- // by the number of attempted loads, so that it takes a bit more to try to reload
- // when frequently failing.
- this._reloadTimerId = setTimeout(() => {
- this._log.debug("onLocationChange - Reloading SelfSupport URL in the hidden browser.");
- aWebProgress.DOMWindow.location.reload();
- }, RETRY_INTERVAL_MS * this._loadAttempts);
- }
- },
-
- onStateChange: function (aWebProgress, aRequest, aFlags, aStatus) {
- if (aFlags & Ci.nsIWebProgressListener.STATE_STOP &&
- aFlags & Ci.nsIWebProgressListener.STATE_IS_NETWORK &&
- aFlags & Ci.nsIWebProgressListener.STATE_IS_WINDOW &&
- Components.isSuccessCode(aStatus)) {
- this._loadSuccessCallback();
- }
- },
-
- destroy: function () {
- // Make sure we don't try to reload self support when shutting down.
- clearTimeout(this._reloadTimerId);
- },
-
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener,
- Ci.nsISupportsWeakReference]),
-};
diff --git a/browser/modules/moz.build b/browser/modules/moz.build
index a7bbbc258..684f662d7 100644
--- a/browser/modules/moz.build
+++ b/browser/modules/moz.build
@@ -33,7 +33,6 @@ EXTRA_JS_MODULES += [
'RecentWindow.jsm',
'RemotePrompt.jsm',
'Sanitizer.jsm',
- 'SelfSupportBackend.jsm',
'SitePermissions.jsm',
'TransientPrefs.jsm',
'URLBarZoom.jsm',
diff --git a/python/mozbuild/mozbuild/mach_commands.py b/python/mozbuild/mozbuild/mach_commands.py
index f654db769..1bd5b8d34 100644
--- a/python/mozbuild/mozbuild/mach_commands.py
+++ b/python/mozbuild/mozbuild/mach_commands.py
@@ -541,6 +541,16 @@ class Build(MachCommandBase):
# as when doing OSX Universal builds)
pass
+ # Check if there are any unpreprocessed files in '@MOZ_OBJDIR@/dist/bin'
+ # See python/mozbuild/mozbuild/preprocessor.py#L293-L309 for the list of directives
+ # We skip if, ifdef, ifndef, else, elif, elifdef and elifndef, because they are never used alone
+ grepcmd = 'grep -E -r "^(#|%)(define|endif|error|expand|filter|include|literal|undef|unfilter)" '\
+ + '--include=\*.{css,dtd,html,js,jsm,xhtml,xml,xul,manifest,properties,rdf} '\
+ + self.topobjdir + '/dist/bin | grep -v ".css:#"'
+ grepresult = subprocess.Popen(grepcmd, stdout=subprocess.PIPE, shell=True).communicate()[0]
+ if grepresult:
+ print('\nERROR: preprocessor was not applied to the following files:\n\n' + grepresult)
+
return status
@Command('configure', category='build',