--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -840,25 +840,16 @@ pref("gecko.handlerService.schemes.ircs.
pref("gecko.handlerService.schemes.ircs.1.uriTemplate", "chrome://browser-region/locale/region.properties");
pref("gecko.handlerService.schemes.ircs.2.name", "chrome://browser-region/locale/region.properties");
pref("gecko.handlerService.schemes.ircs.2.uriTemplate", "chrome://browser-region/locale/region.properties");
pref("gecko.handlerService.schemes.ircs.3.name", "chrome://browser-region/locale/region.properties");
pref("gecko.handlerService.schemes.ircs.3.uriTemplate", "chrome://browser-region/locale/region.properties");
pref("browser.geolocation.warning.infoURL", "https://www.mozilla.org/%LOCALE%/firefox/geolocation/");
-pref("browser.EULA.version", 3);
-pref("browser.rights.version", 3);
-pref("browser.rights.3.shown", false);
-
-#ifdef DEBUG
-// Don't show the about:rights notification in debug builds.
-pref("browser.rights.override", true);
-#endif
-
pref("browser.sessionstore.resume_from_crash", true);
pref("browser.sessionstore.resume_session_once", false);
// Minimal interval between two save operations in milliseconds (while the user is active).
pref("browser.sessionstore.interval", 15000); // 15 seconds
// Minimal interval between two save operations in milliseconds (while the user is idle).
pref("browser.sessionstore.interval.idle", 3600000); // 1h
deleted file mode 100644
--- a/browser/base/content/abouthome/aboutHome.css
+++ /dev/null
@@ -1,430 +0,0 @@
-%if 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/. */
-%endif
-
-html {
- font: message-box;
- font-size: 100%;
- background-color: #F9F9FA;
- color: #0C0C0D;
- height: 100%;
-}
-
-body {
- margin: 0;
- display: -moz-box;
- -moz-box-orient: vertical;
- width: 100%;
- height: 100%;
-}
-
-input,
-button {
- font-size: inherit;
- font-family: inherit;
-}
-
-a {
- color: -moz-nativehyperlinktext;
- text-decoration: none;
-}
-
-.spacer {
- -moz-box-flex: 1;
-}
-
-#topSection {
- text-align: center;
- margin-top: -90px;
- position: relative;
-}
-
-#brandLogo {
- height: 192px;
- width: 192px;
- margin: 0 auto 20px;
- background-image: url("chrome://branding/content/about-logo.png");
- background-size: 192px auto;
- background-position: center center;
- background-repeat: no-repeat;
-}
-
-#searchWrapper,
-#snippets {
- width: 470px;
-}
-
-#searchWrapper {
- cursor: default;
- display: flex;
- position: relative;
- margin: 0 auto;
- height: 36px;
-}
-
-#searchText {
- border: 1px solid rgba(0, 0, 0, 0.15);
- border-radius: 3px;
- box-shadow: 0 1px 4px 0 rgba(12, 12, 13, 0.1);
- color: inherit;
- padding: 0;
- padding-inline-end: 36px;
- padding-inline-start: 35px;
- width: 100%;
- font-size: 15px;
-}
-
-#searchText:active,
-#searchText:focus {
- border-color: #0A84FF;
- box-shadow: 0 0 0 2px #0A84FF;
-}
-
-#searchIcon {
- background: url("chrome://browser/skin/search-glass.svg") no-repeat 12px center/16px;
- fill: rgba(12, 12, 13, 0.4);
- -moz-context-properties: fill;
- position: absolute;
- offset-inline-start: 0;
- height: 35px;
- width: 35px;
-}
-
-#searchSubmit {
- background: url("chrome://browser/skin/forward.svg") no-repeat center center;
- border-radius: 0 3px 3px 0;
- border: 0;
- width: 36px;
- fill: rgba(12, 12, 13, 0.4);
- -moz-context-properties: fill;
- background-size: 16px 16px;
- height: 100%;
- offset-inline-end: 0;
- position: absolute;
- color: transparent;
-}
-
-#searchSubmit:focus, #searchSubmit:hover {
- background-color: rgba(12, 12, 13, 0.1);
- cursor: pointer;
-}
-
-#searchSubmit:active {
- background-color: rgba(12, 12, 13, 0.15);
-}
-
-#searchSubmit:dir(rtl) {
- transform: scaleX(-1);
-}
-
-.contentSearchSuggestionTable {
- border: 0;
- transform: translateY(2px);
-}
-
-#defaultSnippet1,
-#defaultSnippet2,
-#rightsSnippet {
- display: block;
- min-height: 38px;
- background: 0 center no-repeat;
- padding: 6px 0;
- padding-inline-start: 49px;
-}
-
-#rightsSnippet[hidden] {
- display: none;
-}
-
-#defaultSnippet1:dir(rtl),
-#defaultSnippet2:dir(rtl),
-#rightsSnippet:dir(rtl) {
- background-position: right 0 center;
-}
-
-#defaultSnippet1 {
- background-image: url("chrome://browser/content/abouthome/snippet1.png");
-}
-
-#defaultSnippet2 {
- background-image: url("chrome://browser/content/abouthome/snippet2.png");
-}
-
-#snippets {
- display: inline-block;
- text-align: start;
- margin: 12px 0;
- color: #3c3c3c;
- font-size: 75%;
- /* 12px is the computed font size, 15px the computed line height of the snippets
- with Segoe UI on a default Windows 7 setup. The 15/12 multiplier approximately
- converts em from units of font-size to units of line-height. The goal is to
- preset the height of a three-line snippet to avoid visual moving/flickering as
- the snippets load. */
- min-height: calc(15/12 * 3em);
-}
-
-#launcher {
- display: none;
- -moz-box-align: center;
- -moz-box-pack: center;
- width: 100%;
- background-color: hsla(0,0%,0%,.03);
- border-top: 1px solid hsla(0,0%,0%,.03);
- box-shadow: 0 1px 2px hsla(0,0%,0%,.02) inset,
- 0 -1px 0 hsla(0,0%,100%,.25);
-}
-
-#launcher:not([session]),
-body[narrow] #launcher[session] {
- display: none; /* display separator and restore button on separate lines */
- text-align: center;
- white-space: nowrap; /* prevent navigational buttons from wrapping */
-}
-
-.launchButton {
- display: -moz-box;
- -moz-box-orient: vertical;
- margin: 16px 1px;
- padding: 14px 6px;
- min-width: 88px;
- max-width: 176px;
- max-height: 85px;
- vertical-align: top;
- white-space: normal;
- background: transparent padding-box;
- border: 1px solid transparent;
- border-radius: 2px;
- color: #525c66;
- font-size: 75%;
- cursor: pointer;
- transition-property: background-color, border-color, box-shadow;
- transition-duration: 150ms;
-}
-
-body[narrow] #launcher[session] > .launchButton {
- margin: 4px 1px;
-}
-
-.launchButton:hover {
- background-color: hsla(211,79%,6%,.03);
- border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2);
-}
-
-.launchButton:hover:active {
- background-image: linear-gradient(hsla(211,79%,6%,.02), hsla(211,79%,6%,.05));
- border-color: hsla(210,54%,20%,.2) hsla(210,54%,20%,.23) hsla(210,54%,20%,.25);
- box-shadow: 0 1px 1px hsla(211,79%,6%,.05) inset,
- 0 0 1px hsla(211,79%,6%,.1) inset;
- transition-duration: 0ms;
-}
-
-.launchButton[hidden],
-#launcher:not([session]) > #restorePreviousSessionSeparator,
-#launcher:not([session]) > #restorePreviousSession {
- display: none;
-}
-
-#restorePreviousSessionSeparator {
- width: 3px;
- height: 116px;
- margin: 0 10px;
- background-image: linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)),
- linear-gradient(hsla(211,79%,6%,0), hsla(211,79%,6%,.2), hsla(211,79%,6%,0)),
- linear-gradient(hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0));
- background-position: left top, center, right bottom;
- background-size: 1px auto;
- background-repeat: no-repeat;
-}
-
-body[narrow] #restorePreviousSessionSeparator {
- margin: 0 auto;
- width: 512px;
- height: 3px;
- background-image: linear-gradient(to right, hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0)),
- linear-gradient(to right, hsla(211,79%,6%,0), hsla(211,79%,6%,.2), hsla(211,79%,6%,0)),
- linear-gradient(to right, hsla(0,0%,100%,0), hsla(0,0%,100%,.35), hsla(0,0%,100%,0));
- background-size: auto 1px;
-}
-
-#restorePreviousSession {
- max-width: none;
- font-size: 90%;
-}
-
-body[narrow] #restorePreviousSession {
- font-size: 80%;
-}
-
-.launchButton::before {
- display: block;
- width: 32px;
- height: 32px;
- margin: 0 auto 6px;
- line-height: 0; /* remove extra vertical space due to non-zero font-size */
-}
-
-#downloads::before {
- content: url("chrome://browser/content/abouthome/downloads.png");
-}
-
-#bookmarks::before {
- content: url("chrome://browser/content/abouthome/bookmarks.png");
-}
-
-#history::before {
- content: url("chrome://browser/content/abouthome/history.png");
-}
-
-#addons::before {
- content: url("chrome://browser/content/abouthome/addons.png");
-}
-
-#sync::before {
- content: url("chrome://browser/content/abouthome/sync.png");
-}
-
-#settings::before {
- content: url("chrome://browser/content/abouthome/settings.png");
-}
-
-#restorePreviousSession::before {
- content: url("chrome://browser/content/abouthome/restore-large.png");
- height: 48px;
- width: 48px;
- display: inline-block; /* display on same line as text label */
- vertical-align: middle;
- margin-bottom: 0;
- margin-inline-end: 8px;
-}
-
-#restorePreviousSession:dir(rtl)::before {
- transform: scaleX(-1);
-}
-
-body[narrow] #restorePreviousSession::before {
- content: url("chrome://browser/content/abouthome/restore.png");
- height: 32px;
- width: 32px;
-}
-
-/* [HiDPI]
- * At resolutions above 1dppx, prefer downscaling the 2x Retina graphics
- * rather than upscaling the original-size ones (bug 818940).
- */
-@media not all and (max-resolution: 1dppx) {
- #brandLogo {
- background-image: url("chrome://branding/content/about-logo@2x.png");
- }
-
- #defaultSnippet1,
- #defaultSnippet2,
- #rightsSnippet {
- background-size: 40px;
- }
-
- #defaultSnippet1 {
- background-image: url("chrome://browser/content/abouthome/snippet1@2x.png");
- }
-
- #defaultSnippet2 {
- background-image: url("chrome://browser/content/abouthome/snippet2@2x.png");
- }
-
- .launchButton::before {
- transform: scale(.5);
- transform-origin: 0 0;
- }
-
- .launchButton:dir(rtl)::before {
- transform: scale(.5) translateX(32px);
- }
-
- #downloads::before {
- content: url("chrome://browser/content/abouthome/downloads@2x.png");
- }
-
- #bookmarks::before {
- content: url("chrome://browser/content/abouthome/bookmarks@2x.png");
- }
-
- #history::before {
- content: url("chrome://browser/content/abouthome/history@2x.png");
- }
-
- #addons::before {
- content: url("chrome://browser/content/abouthome/addons@2x.png");
- }
-
- #sync::before {
- content: url("chrome://browser/content/abouthome/sync@2x.png");
- }
-
- #settings::before {
- content: url("chrome://browser/content/abouthome/settings@2x.png");
- }
-
- #restorePreviousSession::before {
- content: url("chrome://browser/content/abouthome/restore-large@2x.png");
- }
-
- body[narrow] #restorePreviousSession::before {
- content: url("chrome://browser/content/abouthome/restore@2x.png");
- }
-
- #restorePreviousSession:dir(rtl)::before {
- transform: scale(-0.5, 0.5) translateX(24px);
- transform-origin: top center;
- }
-}
-
-/* Overrides for onboarding
- These overrides hide the Firefox logo (since about:home has a
- large logo already) and make the helper icon larger */
-
-#about-home #onboarding-notification-body,
-#about-home #onboarding-notification-tour-title {
- color: #0C0C0D;
-}
-
-#about-home #onboarding-notification-body {
- padding-inline-start: 46px;
-}
-
-#about-home #onboarding-notification-tour-message {
- margin-bottom: 0;
-}
-
-#about-home #onboarding-notification-tour-icon {
- display: none;
-}
-
-#about-home #onboarding-notification-tour-title::before {
- display: block;
- position: absolute;
- top: 0;
- offset-inline-start: 0;
- height: 100%;
- width: 42px;
- background-size: 42px;
- background-position: center;
- -moz-context-properties: fill;
- fill: #4A4A4F;
-}
-
-#about-home #onboarding-notification-bar {
- z-index: 100;
-}
-
-/* Overrides for snippets
- These changes make it so that snippets do not affect the height of the
- main element, so that elements don't move around on page load. */
-#snippetContainer {
- position: absolute;
- left: 50%;
- top: 100%;
- margin-left: -235px;
- width: 470px;
-}
deleted file mode 100644
--- a/browser/base/content/abouthome/aboutHome.js
+++ /dev/null
@@ -1,389 +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";
-
-/* import-globals-from ../contentSearchUI.js */
-
-// The process of adding a new default snippet involves:
-// * add a new entity to aboutHome.dtd
-// * add a <span/> for it in aboutHome.xhtml
-// * add an entry here in the proper ordering (based on spans)
-// The <a/> part of the snippet will be linked to the corresponding url.
-const DEFAULT_SNIPPETS_URLS = [
- "https://www.mozilla.org/firefox/features/?utm_source=snippet&utm_medium=snippet&utm_campaign=default+feature+snippet",
- "https://addons.mozilla.org/firefox/?utm_source=snippet&utm_medium=snippet&utm_campaign=addons"
-];
-
-const SNIPPETS_UPDATE_INTERVAL_MS = 14400000; // 4 hours.
-
-// IndexedDB storage constants.
-const DATABASE_NAME = "abouthome";
-const DATABASE_VERSION = 1;
-const DATABASE_STORAGE = "persistent";
-const SNIPPETS_OBJECTSTORE_NAME = "snippets";
-var searchText;
-
-// This global tracks if the page has been set up before, to prevent double inits
-var gInitialized = false;
-var gObserver = new MutationObserver(function(mutations) {
- for (let mutation of mutations) {
- // The addition of the restore session button changes our width:
- if (mutation.attributeName == "session") {
- fitToWidth();
- }
- if (mutation.attributeName == "snippetsVersion") {
- if (!gInitialized) {
- ensureSnippetsMapThen(loadSnippets);
- gInitialized = true;
- }
- return;
- }
- }
-});
-
-window.addEventListener("pageshow", function() {
- // Delay search engine setup, cause browser.js::BrowserOnAboutPageLoad runs
- // later and may use asynchronous getters.
- window.gObserver.observe(document.documentElement, { attributes: true });
- fitToWidth();
- setupSearch();
- window.addEventListener("resize", fitToWidth);
-
- // Ask chrome to update snippets.
- var event = new CustomEvent("AboutHomeLoad", {bubbles: true});
- document.dispatchEvent(event);
-});
-
-window.addEventListener("pagehide", function() {
- window.gObserver.disconnect();
- window.removeEventListener("resize", fitToWidth);
-});
-
-window.addEventListener("keypress", ev => {
- if (ev.defaultPrevented) {
- return;
- }
-
- // don't focus the search-box on keypress if something other than the
- // body or document element has focus - don't want to steal input from other elements
- // Make an exception for <a> and <button> elements (and input[type=button|submit])
- // which don't usefully take keypresses anyway.
- // (except space, which is handled below)
- if (document.activeElement && document.activeElement != document.body &&
- document.activeElement != document.documentElement &&
- !["a", "button"].includes(document.activeElement.localName) &&
- !document.activeElement.matches("input:-moz-any([type=button],[type=submit])")) {
- return;
- }
-
- let modifiers = ev.ctrlKey + ev.altKey + ev.metaKey;
- // ignore Ctrl/Cmd/Alt, but not Shift
- // also ignore Tab, Insert, PageUp, etc., and Space
- if (modifiers != 0 || ev.charCode == 0 || ev.charCode == 32)
- return;
-
- searchText.focus();
- // need to send the first keypress outside the search-box manually to it
- searchText.value += ev.key;
-});
-
-// This object has the same interface as Map and is used to store and retrieve
-// the snippets data. It is lazily initialized by ensureSnippetsMapThen(), so
-// be sure its callback returned before trying to use it.
-var gSnippetsMap;
-var gSnippetsMapCallbacks = [];
-
-/**
- * Ensure the snippets map is properly initialized.
- *
- * @param aCallback
- * Invoked once the map has been initialized, gets the map as argument.
- * @note Snippets should never directly manage the underlying storage, since
- * it may change inadvertently.
- */
-function ensureSnippetsMapThen(aCallback) {
- if (gSnippetsMap) {
- aCallback(gSnippetsMap);
- return;
- }
-
- // Handle multiple requests during the async initialization.
- gSnippetsMapCallbacks.push(aCallback);
- if (gSnippetsMapCallbacks.length > 1) {
- // We are already updating, the callbacks will be invoked when done.
- return;
- }
-
- let invokeCallbacks = function() {
- if (!gSnippetsMap) {
- gSnippetsMap = Object.freeze(new Map());
- }
-
- for (let callback of gSnippetsMapCallbacks) {
- callback(gSnippetsMap);
- }
- gSnippetsMapCallbacks.length = 0;
- };
-
- let openRequest = indexedDB.open(DATABASE_NAME, {version: DATABASE_VERSION,
- storage: DATABASE_STORAGE});
-
- openRequest.onerror = function(event) {
- // Try to delete the old database so that we can start this process over
- // next time.
- indexedDB.deleteDatabase(DATABASE_NAME);
- invokeCallbacks();
- };
-
- openRequest.onupgradeneeded = function(event) {
- let db = event.target.result;
- if (!db.objectStoreNames.contains(SNIPPETS_OBJECTSTORE_NAME)) {
- db.createObjectStore(SNIPPETS_OBJECTSTORE_NAME);
- }
- };
-
- openRequest.onsuccess = function(event) {
- let db = event.target.result;
-
- db.onerror = function() {
- invokeCallbacks();
- };
-
- db.onversionchange = function(versionChangeEvent) {
- versionChangeEvent.target.close();
- invokeCallbacks();
- };
-
- let cache = new Map();
- let cursorRequest;
- try {
- cursorRequest = db.transaction(SNIPPETS_OBJECTSTORE_NAME)
- .objectStore(SNIPPETS_OBJECTSTORE_NAME).openCursor();
- } catch (ex) {
- console.error(ex);
- invokeCallbacks();
- return;
- }
-
- cursorRequest.onerror = function() {
- invokeCallbacks();
- };
-
- cursorRequest.onsuccess = function(cursorRequestEvent) {
- let cursor = cursorRequestEvent.target.result;
-
- // Populate the cache from the persistent storage.
- if (cursor) {
- cache.set(cursor.key, cursor.value);
- cursor.continue();
- return;
- }
-
- // The cache has been filled up, create the snippets map.
- gSnippetsMap = Object.freeze({
- get: (aKey) => cache.get(aKey),
- set(aKey, aValue) {
- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
- .objectStore(SNIPPETS_OBJECTSTORE_NAME).put(aValue, aKey);
- return cache.set(aKey, aValue);
- },
- has: (aKey) => cache.has(aKey),
- delete(aKey) {
- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
- .objectStore(SNIPPETS_OBJECTSTORE_NAME).delete(aKey);
- return cache.delete(aKey);
- },
- clear() {
- db.transaction(SNIPPETS_OBJECTSTORE_NAME, "readwrite")
- .objectStore(SNIPPETS_OBJECTSTORE_NAME).clear();
- return cache.clear();
- },
- get size() { return cache.size; },
- });
-
- setTimeout(invokeCallbacks, 0);
- };
- };
-}
-
-function onSearchSubmit(aEvent) {
- gContentSearchController.search(aEvent);
-}
-
-
-var gContentSearchController;
-
-function setupSearch() {
- // Set submit button label for when CSS background are disabled (e.g.
- // high contrast mode).
- document.getElementById("searchSubmit").value =
- document.body.getAttribute("dir") == "ltr" ? "\u25B6" : "\u25C0";
-
- // The "autofocus" attribute doesn't focus the form element
- // immediately when the element is first drawn, so the
- // attribute is also used for styling when the page first loads.
- searchText = document.getElementById("searchText");
- searchText.addEventListener("blur", function() {
- searchText.removeAttribute("autofocus");
- }, {once: true});
-
- if (!gContentSearchController) {
- gContentSearchController =
- new ContentSearchUIController(searchText, searchText.parentNode,
- "abouthome", "homepage");
- }
-}
-
-/**
- * Inform the test harness that we're done loading the page.
- */
-function loadCompleted() {
- var event = new CustomEvent("AboutHomeLoadSnippetsCompleted", {bubbles: true});
- document.dispatchEvent(event);
-}
-
-/**
- * Update the local snippets from the remote storage, then show them through
- * showSnippets.
- */
-function loadSnippets() {
- if (!gSnippetsMap)
- throw new Error("Snippets map has not properly been initialized");
-
- // Allow tests to modify the snippets map before using it.
- var event = new CustomEvent("AboutHomeLoadSnippets", {bubbles: true});
- document.dispatchEvent(event);
-
- // Check cached snippets version.
- let cachedVersion = gSnippetsMap.get("snippets-cached-version") || 0;
- let currentVersion = document.documentElement.getAttribute("snippetsVersion");
- if (cachedVersion < currentVersion) {
- // The cached snippets are old and unsupported, restart from scratch.
- gSnippetsMap.clear();
- }
-
- // Check last snippets update.
- let lastUpdate = gSnippetsMap.get("snippets-last-update");
- let updateURL = document.documentElement.getAttribute("snippetsURL");
- let shouldUpdate = !lastUpdate ||
- Date.now() - lastUpdate > SNIPPETS_UPDATE_INTERVAL_MS;
- if (updateURL && shouldUpdate) {
- // Try to update from network.
- let xhr = new XMLHttpRequest();
- xhr.timeout = 5000;
- // Even if fetching should fail we don't want to spam the server, thus
- // set the last update time regardless its results. Will retry tomorrow.
- gSnippetsMap.set("snippets-last-update", Date.now());
- xhr.onloadend = function() {
- if (xhr.status == 200) {
- gSnippetsMap.set("snippets", xhr.responseText);
- gSnippetsMap.set("snippets-cached-version", currentVersion);
- }
- showSnippets();
- loadCompleted();
- };
- try {
- xhr.open("GET", updateURL, true);
- xhr.send(null);
- } catch (ex) {
- showSnippets();
- loadCompleted();
- }
- } else {
- showSnippets();
- loadCompleted();
- }
-}
-
-/**
- * Shows locally cached remote snippets, or default ones when not available.
- *
- * @note: snippets should never invoke showSnippets(), or they may cause
- * a "too much recursion" exception.
- */
-var _snippetsShown = false;
-function showSnippets() {
- let snippetsElt = document.getElementById("snippets");
-
- // Show about:rights notification, if needed.
- let showRights = document.documentElement.getAttribute("showKnowYourRights");
- if (showRights) {
- let rightsElt = document.getElementById("rightsSnippet");
- let anchor = rightsElt.getElementsByTagName("a")[0];
- anchor.href = "about:rights";
- snippetsElt.appendChild(rightsElt);
- rightsElt.removeAttribute("hidden");
- return;
- }
-
- if (!gSnippetsMap)
- throw new Error("Snippets map has not properly been initialized");
- if (_snippetsShown) {
- // There's something wrong with the remote snippets, just in case fall back
- // to the default snippets.
- showDefaultSnippets();
- throw new Error("showSnippets should never be invoked multiple times");
- }
- _snippetsShown = true;
-
- let snippets = gSnippetsMap.get("snippets");
- // If there are remotely fetched snippets, try to to show them.
- if (snippets) {
- // Injecting snippets can throw if they're invalid XML.
- try {
- // eslint-disable-next-line no-unsanitized/property
- snippetsElt.innerHTML = snippets;
- // Scripts injected by innerHTML are inactive, so we have to relocate them
- // through DOM manipulation to activate their contents.
- Array.forEach(snippetsElt.getElementsByTagName("script"), function(elt) {
- let relocatedScript = document.createElement("script");
- relocatedScript.type = "text/javascript";
- relocatedScript.text = elt.text;
- elt.parentNode.replaceChild(relocatedScript, elt);
- });
- return;
- } catch (ex) {
- // Bad content, continue to show default snippets.
- }
- }
-
- showDefaultSnippets();
-}
-
-/**
- * Clear snippets element contents and show default snippets.
- */
-function showDefaultSnippets() {
- // Clear eventual contents...
- let snippetsElt = document.getElementById("snippets");
- snippetsElt.innerHTML = "";
-
- // ...then show default snippets.
- let defaultSnippetsElt = document.getElementById("defaultSnippets");
- let entries = defaultSnippetsElt.querySelectorAll("span");
- // Choose a random snippet. Assume there is always at least one.
- let randIndex = Math.floor(Math.random() * entries.length);
- let entry = entries[randIndex];
- // Inject url in the eventual link.
- if (DEFAULT_SNIPPETS_URLS[randIndex]) {
- let links = entry.getElementsByTagName("a");
- // Default snippets can have only one link, otherwise something is messed
- // up in the translation.
- if (links.length == 1) {
- links[0].href = DEFAULT_SNIPPETS_URLS[randIndex];
- }
- }
- // Move the default snippet to the snippets element.
- snippetsElt.appendChild(entry);
-}
-
-function fitToWidth() {
- if (document.documentElement.scrollWidth > window.innerWidth) {
- document.body.setAttribute("narrow", "true");
- } else if (document.body.hasAttribute("narrow")) {
- document.body.removeAttribute("narrow");
- fitToWidth();
- }
-}
deleted file mode 100644
--- a/browser/base/content/abouthome/aboutHome.xhtml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-
-<!DOCTYPE html [
- <!ENTITY % htmlDTD
- PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "DTD/xhtml1-strict.dtd">
- %htmlDTD;
- <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
- %globalDTD;
- <!ENTITY % aboutHomeDTD SYSTEM "chrome://browser/locale/aboutHome.dtd">
- %aboutHomeDTD;
- <!ENTITY % browserDTD SYSTEM "chrome://browser/locale/browser.dtd" >
- %browserDTD;
-]>
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Security-Policy" content="default-src chrome:" />
- <title>&abouthome.pageTitle;</title>
-
- <link rel="icon" type="image/png" id="favicon"
- href="chrome://branding/content/icon32.png"/>
- <link rel="stylesheet" type="text/css" media="all"
- href="chrome://browser/content/contentSearchUI.css"/>
- <link rel="stylesheet" type="text/css" media="all" defer="defer"
- href="chrome://browser/content/abouthome/aboutHome.css"/>
-
- <script type="text/javascript"
- src="chrome://browser/content/abouthome/aboutHome.js"/>
- <script type="text/javascript"
- src="chrome://browser/content/contentSearchUI.js"/>
- </head>
-
- <body id="about-home" dir="&locale.dir;">
- <div class="spacer"/>
- <div id="topSection">
- <div id="brandLogo"></div>
-
- <div id="searchWrapper">
- <div id="searchIcon"/>
- <input type="text" name="q" value="" id="searchText" maxlength="256"
- placeholder="&searchInput.placeholder;"
- aria-label="&contentSearchInput.label;" autofocus="autofocus"/>
- <input id="searchSubmit" type="button" onclick="onSearchSubmit(event)"
- title="&contentSearchSubmit.tooltip;"/>
- </div>
-
- <div id="snippetContainer">
- <div id="defaultSnippets" hidden="true">
- <span id="defaultSnippet1">&abouthome.defaultSnippet1.v1;</span>
- <span id="defaultSnippet2">&abouthome.defaultSnippet2.v1;</span>
- </div>
- <span id="rightsSnippet" hidden="true">&abouthome.rightsSnippet;</span>
- <div id="snippets"/>
- </div>
- </div>
- <div class="spacer"/>
-
- <div id="launcher">
- <button class="launchButton" id="downloads">&abouthome.downloadsButton.label;</button>
- <button class="launchButton" id="bookmarks">&abouthome.bookmarksButton.label;</button>
- <button class="launchButton" id="history">&abouthome.historyButton.label;</button>
- <button class="launchButton" id="addons">&abouthome.addonsButton.label;</button>
- <button class="launchButton" id="sync">&abouthome.syncButton.label;</button>
-#ifdef XP_WIN
- <button class="launchButton" id="settings">&abouthome.preferencesButtonWin.label;</button>
-#else
- <button class="launchButton" id="settings">&abouthome.preferencesButtonUnix.label;</button>
-#endif
- <div id="restorePreviousSessionSeparator"/>
- <button class="launchButton" id="restorePreviousSession">&historyRestoreLastSession.label;</button>
- </div>
- </body>
-</html>
deleted file mode 100644
index 238a5f6daa3b6eab2e68307509f27796bf3437f6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1510904a510bb7c45a2afe448d3a6a58db185edf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index dc6b9ab7f49dd5e758df1754f2bd3eccbfe1ad66..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 111212ef2027652f2984c7e5b8f5d33cbad39ac1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2ae5407c314bd901826ccc43c5fa9822e0cc9b3c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 2cbd2d1e968c7e81d6027ddadce6444795a216d3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index adfbfb9cab6084137f711a356f3f5296d18de1da..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 92bb6dd43a72ba436b6f1c7837f9ed5816e07850..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 4d6cf21aa8929ca5d8dc728fa13e2f2ee1cdfaf4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7b080af77ba315314bf7b76f9bc85fe1c582a1f7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index a3ba25ce80c9a04611e4dc53d033395643743aff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 21348fcf5d8597ce865c8a5e90bdc3b699691080..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index cc8dd79f51940bc9ec92ddef8910ea9dea7fa5ab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index c995ae6313351d9d535c8559067ebd8220f5c51a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 05a9630b98a3537f541dbad1ffd0a105b7320c82..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 781af04e008aa479993265befe4363fcb2bb6f9b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 24325f87549162883ff10b9e0935b9749c8f2dcf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 7c27a8e88a463e81b61e176983bd645741e6dc64..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 1d862d1f35916ff3c43f39a29efa93d83705a601..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index cbbc2e6ca8d297ebf5442e5611ad0ea4db4bbdae..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -11,17 +11,16 @@ ChromeUtils.import("resource://gre/modul
ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
ChromeUtils.import("resource://gre/modules/NotificationDB.jsm");
const {WebExtensionPolicy} = Cu.getGlobalForObject(Services);
// lazy module getters
XPCOMUtils.defineLazyModuleGetters(this, {
- AboutHome: "resource:///modules/AboutHome.jsm",
BrowserUITelemetry: "resource:///modules/BrowserUITelemetry.jsm",
BrowserUsageTelemetry: "resource:///modules/BrowserUsageTelemetry.jsm",
BrowserUtils: "resource://gre/modules/BrowserUtils.jsm",
BrowserWindowTracker: "resource:///modules/BrowserWindowTracker.jsm",
CharsetMenu: "resource://gre/modules/CharsetMenu.jsm",
Color: "resource://gre/modules/Color.jsm",
ContentSearch: "resource:///modules/ContentSearch.jsm",
ContextualIdentityService: "resource://gre/modules/ContextualIdentityService.jsm",
--- a/browser/base/content/tab-content.js
+++ b/browser/base/content/tab-content.js
@@ -87,134 +87,16 @@ addMessageListener("Browser:Reload", fun
} catch (e) {
}
});
addMessageListener("MixedContent:ReenableProtection", function() {
docShell.mixedContentChannel = null;
});
-var AboutHomeListener = {
- init(chromeGlobal) {
- chromeGlobal.addEventListener("AboutHomeLoad", this, false, true);
- },
-
- get isAboutHome() {
- return content.document.documentURI.toLowerCase() == "about:home";
- },
-
- handleEvent(aEvent) {
- if (!this.isAboutHome) {
- return;
- }
- switch (aEvent.type) {
- case "AboutHomeLoad":
- this.onPageLoad();
- break;
- case "click":
- this.onClick(aEvent);
- break;
- case "pagehide":
- this.onPageHide(aEvent);
- break;
- }
- },
-
- receiveMessage(aMessage) {
- if (!this.isAboutHome) {
- return;
- }
- switch (aMessage.name) {
- case "AboutHome:Update":
- this.onUpdate(aMessage.data);
- break;
- }
- },
-
- onUpdate(aData) {
- let doc = content.document;
- if (aData.showRestoreLastSession && !PrivateBrowsingUtils.isContentWindowPrivate(content))
- doc.getElementById("launcher").setAttribute("session", "true");
-
- // Inject search engine and snippets URL.
- let docElt = doc.documentElement;
- // Set snippetsVersion last, which triggers to show the snippets when it's set.
- docElt.setAttribute("snippetsURL", aData.snippetsURL);
- if (aData.showKnowYourRights)
- docElt.setAttribute("showKnowYourRights", "true");
- docElt.setAttribute("snippetsVersion", aData.snippetsVersion);
- },
-
- onPageLoad() {
- addMessageListener("AboutHome:Update", this);
- addEventListener("click", this, true);
- addEventListener("pagehide", this, true);
-
- sendAsyncMessage("AboutHome:MaybeShowMigrateMessage");
- sendAsyncMessage("AboutHome:RequestUpdate");
- },
-
- onClick(aEvent) {
- if (!aEvent.isTrusted || // Don't trust synthetic events
- aEvent.button == 2 || aEvent.target.localName != "button") {
- return;
- }
-
- let originalTarget = aEvent.originalTarget;
- let ownerDoc = originalTarget.ownerDocument;
- if (ownerDoc.documentURI != "about:home") {
- // This shouldn't happen, but we're being defensive.
- return;
- }
-
- let elmId = originalTarget.getAttribute("id");
-
- switch (elmId) {
- case "restorePreviousSession":
- sendAsyncMessage("AboutHome:RestorePreviousSession");
- ownerDoc.getElementById("launcher").removeAttribute("session");
- break;
-
- case "downloads":
- sendAsyncMessage("AboutHome:Downloads");
- break;
-
- case "bookmarks":
- sendAsyncMessage("AboutHome:Bookmarks");
- break;
-
- case "history":
- sendAsyncMessage("AboutHome:History");
- break;
-
- case "addons":
- sendAsyncMessage("AboutHome:Addons");
- break;
-
- case "sync":
- sendAsyncMessage("AboutHome:Sync");
- break;
-
- case "settings":
- sendAsyncMessage("AboutHome:Settings");
- break;
- }
- },
-
- onPageHide(aEvent) {
- if (aEvent.target.defaultView.frameElement) {
- return;
- }
- removeMessageListener("AboutHome:Update", this);
- removeEventListener("click", this, true);
- removeEventListener("pagehide", this, true);
- },
-};
-AboutHomeListener.init(this);
-
var AboutReaderListener = {
_articlePromise: null,
_isLeavingReaderableReaderMode: false,
init() {
addEventListener("AboutReaderContentLoaded", this, false, true);
deleted file mode 100644
--- a/browser/base/content/test/about/aboutHome_content_script.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-/* eslint-env mozilla/frame-script */
-
-addMessageListener("AboutHome:SearchTriggered", function(msg) {
- sendAsyncMessage("AboutHomeTest:CheckRecordedSearch", msg.data);
-});
--- a/browser/base/content/test/about/browser.ini
+++ b/browser/base/content/test/about/browser.ini
@@ -1,30 +1,21 @@
[DEFAULT]
support-files =
- aboutHome_content_script.js
head.js
print_postdata.sjs
searchSuggestionEngine.sjs
searchSuggestionEngine.xml
- test_bug959531.html
POSTSearchEngine.xml
[browser_aboutCertError.js]
support-files =
dummy_page.html
-[browser_aboutHome_imitate.js]
-[browser_aboutHome_input.js]
-skip-if = true # Bug 1409054 to remove; previously skipped for intermittents, e.g., Bug 1399648
[browser_aboutHome_search_POST.js]
[browser_aboutHome_search_composing.js]
[browser_aboutHome_search_searchbar.js]
[browser_aboutHome_search_suggestion.js]
skip-if = os == "mac" || (os == "linux" && (!debug || bits == 64)) # Bug 1399648, bug 1402502
[browser_aboutHome_search_telemetry.js]
-[browser_aboutHome_snippets.js]
-skip-if = true # Bug 1409054 to remove
-[browser_aboutHome_wrapsCorrectly.js]
-skip-if = true # Bug 1409054 to remove; previously skipped for intermittents, e.g., Bug 1395602
[browser_aboutNetError.js]
[browser_aboutStopReload.js]
[browser_aboutSupport.js]
[browser_aboutSupport_newtab_security_state.js]
deleted file mode 100644
--- a/browser/base/content/test/about/browser_aboutHome_imitate.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-ignoreAllUncaughtExceptions();
-
-add_task(async function() {
- info("Make sure that a page can't imitate about:home");
-
- await BrowserTestUtils.withNewTab({ gBrowser, url: "about:home" }, async function(browser) {
- let promise = BrowserTestUtils.browserLoaded(browser);
- browser.loadURI("https://example.com/browser/browser/base/content/test/about/test_bug959531.html");
- await promise;
-
- await ContentTask.spawn(browser, null, async function() {
- let button = content.document.getElementById("settings");
- ok(button, "Found settings button in test page");
- button.click();
- });
-
- await new Promise(resolve => {
- // It may take a few turns of the event loop before the window
- // is displayed, so we wait.
- function check(n) {
- let win = Services.wm.getMostRecentWindow("Browser:Preferences");
- ok(!win, "Preferences window not showing");
- if (win) {
- win.close();
- }
-
- if (n > 0) {
- executeSoon(() => check(n - 1));
- } else {
- resolve();
- }
- }
-
- check(5);
- });
- });
-});
deleted file mode 100644
--- a/browser/base/content/test/about/browser_aboutHome_input.js
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-ChromeUtils.defineModuleGetter(this, "AppConstants",
- "resource://gre/modules/AppConstants.jsm");
-
-ignoreAllUncaughtExceptions();
-
-// The following two tests need to be skipped for the time being, since we're
-// no longer showing the launcher options on about:home. When we remove about:home
-// and all of it's code, we can delete these tests
-add_task(async function() {
- info("Pressing Space while the Addons button is focused should activate it");
-
- // Skip this test on Mac, because Space doesn't activate the button there.
- if (AppConstants.platform == "macosx") {
- return;
- }
-
- await BrowserTestUtils.withNewTab({ gBrowser, url: "about:home" }, async function(browser) {
- info("Waiting for about:addons tab to open...");
- let promiseTabLoaded = BrowserTestUtils.browserLoaded(browser, false, "about:addons");
-
- await ContentTask.spawn(browser, null, async function() {
- let addOnsButton = content.document.getElementById("addons");
- addOnsButton.focus();
- });
- await BrowserTestUtils.synthesizeKey(" ", {}, browser);
-
- await promiseTabLoaded;
- is(browser.currentURI.spec, "about:addons",
- "Should have seen the about:addons tab");
- });
-}).skip();
-
-add_task(async function() {
- info("Sync button should open about:preferences#sync");
-
- await BrowserTestUtils.withNewTab({ gBrowser, url: "about:home" }, async function(browser) {
- let oldOpenPrefs = window.openPreferences;
- let openPrefsPromise = new Promise(resolve => {
- window.openPreferences = function(pane, params) {
- resolve({ pane, params });
- };
- });
-
- await BrowserTestUtils.synthesizeMouseAtCenter("#sync", {}, browser);
-
- let result = await openPrefsPromise;
- window.openPreferences = oldOpenPrefs;
-
- is(result.pane, "paneSync", "openPreferences should be called with paneSync");
- is(result.params.urlParams.entrypoint, "abouthome",
- "openPreferences should be called with abouthome entrypoint");
- });
-}).skip();
-
-add_task(async function() {
- info("Pressing any key should focus the search box in the page, and send the key to it");
-
- await BrowserTestUtils.withNewTab({ gBrowser, url: "about:home" }, async function(browser) {
- await BrowserTestUtils.synthesizeMouseAtCenter("#brandLogo", {}, browser);
-
- await ContentTask.spawn(browser, null, async function() {
- let doc = content.document;
- isnot(doc.getElementById("searchText"), doc.activeElement,
- "Search input should not be the active element.");
- });
-
- await BrowserTestUtils.synthesizeKey("a", {}, browser);
-
- await ContentTask.spawn(browser, null, async function() {
- let doc = content.document;
- let searchInput = doc.getElementById("searchText");
- await ContentTaskUtils.waitForCondition(() => doc.activeElement === searchInput,
- "Search input should be the active element.");
- is(searchInput.value, "a", "Search input should be 'a'.");
- });
- });
-});
deleted file mode 100644
--- a/browser/base/content/test/about/browser_aboutHome_snippets.js
+++ /dev/null
@@ -1,234 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-ChromeUtils.defineModuleGetter(this, "AboutHomeUtils",
- "resource:///modules/AboutHome.jsm");
-
-ignoreAllUncaughtExceptions();
-var gRightsVersion = Services.prefs.getIntPref("browser.rights.version");
-
-add_task(async function setup() {
- // The following prefs would affect tests so make sure to disable them
- // before any tests start.
- await SpecialPowers.pushPrefEnv({set: [
- ["browser.onboarding.enabled", false],
- ["network.cookie.cookieBehavior", 0],
- ["network.cookie.lifetimePolicy", 0],
- ["browser.rights.override", true],
- [`browser.rights.${gRightsVersion}.shown`, false]
- ]});
-});
-
-add_task(async function() {
- info("Check that clearing cookies does not clear storage");
-
- await withSnippetsMap(
- () => {
- Services.obs.notifyObservers(null, "cookie-changed", "cleared");
- },
- function() {
- isnot(content.gSnippetsMap.get("snippets-last-update"), null,
- "snippets-last-update should have a value");
- });
-});
-
-add_task(async function() {
- info("Check default snippets are shown");
-
- await withSnippetsMap(null, function() {
- let doc = content.document;
- let snippetsElt = doc.getElementById("snippets");
- ok(snippetsElt, "Found snippets element");
- is(snippetsElt.getElementsByTagName("span").length, 1,
- "A default snippet is present.");
- });
-});
-
-add_task(async function() {
- info("Check default snippets are shown if snippets are invalid xml");
-
- await withSnippetsMap(
- // This must set some incorrect xhtml code.
- snippetsMap => snippetsMap.set("snippets", "<p><b></p></b>"),
- function() {
- let doc = content.document;
- let snippetsElt = doc.getElementById("snippets");
- ok(snippetsElt, "Found snippets element");
- is(snippetsElt.getElementsByTagName("span").length, 1,
- "A default snippet is present.");
-
- content.gSnippetsMap.delete("snippets");
- });
-});
-
-add_task(async function() {
- info("Check snippets map is cleared if cached version is old");
-
- await withSnippetsMap(
- snippetsMap => {
- snippetsMap.set("snippets", "test");
- snippetsMap.set("snippets-cached-version", 0);
- },
- function() {
- let snippetsMap = content.gSnippetsMap;
- ok(!snippetsMap.has("snippets"), "snippets have been properly cleared");
- ok(!snippetsMap.has("snippets-cached-version"),
- "cached-version has been properly cleared");
- });
-});
-
-add_task(async function() {
- info("Check cached snippets are shown if cached version is current");
-
- await withSnippetsMap(
- snippetsMap => snippetsMap.set("snippets", "test"),
- function(args) {
- let doc = content.document;
- let snippetsMap = content.gSnippetsMap;
-
- let snippetsElt = doc.getElementById("snippets");
- ok(snippetsElt, "Found snippets element");
- is(snippetsElt.innerHTML, "test", "Cached snippet is present.");
-
- is(snippetsMap.get("snippets"), "test", "snippets still cached");
- is(snippetsMap.get("snippets-cached-version"),
- args.expectedVersion,
- "cached-version is correct");
- ok(snippetsMap.has("snippets-last-update"), "last-update still exists");
- }, { expectedVersion: AboutHomeUtils.snippetsVersion });
-});
-
-add_task(async function() {
- info("Check if the 'Know Your Rights' default snippet is shown when " +
- "'browser.rights.override' pref is set and that its link works");
-
- Services.prefs.setBoolPref("browser.rights.override", false);
-
- ok(AboutHomeUtils.showKnowYourRights, "AboutHomeUtils.showKnowYourRights should be TRUE");
-
- await withSnippetsMap(null, function() {
- let doc = content.document;
- let snippetsElt = doc.getElementById("snippets");
- ok(snippetsElt, "Found snippets element");
- let linkEl = snippetsElt.querySelector("a");
- is(linkEl.href, "about:rights", "Snippet link is present.");
- }, null, async function() {
- let loadPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser, false, "about:rights");
- await BrowserTestUtils.synthesizeMouseAtCenter("a[href='about:rights']", {
- button: 0
- }, gBrowser.selectedBrowser);
- await loadPromise;
- is(gBrowser.currentURI.spec, "about:rights", "about:rights should have opened.");
- });
-});
-
-add_task(async function() {
- info("Check if the 'Know Your Rights' default snippet is NOT shown when " +
- "'browser.rights.override' pref is NOT set");
-
- Services.prefs.setBoolPref("browser.rights.override", true);
-
- let rightsData = AboutHomeUtils.knowYourRightsData;
- ok(!rightsData, "AboutHomeUtils.knowYourRightsData should be FALSE");
-
- await withSnippetsMap(null, function() {
- let doc = content.document;
- let snippetsElt = doc.getElementById("snippets");
- ok(snippetsElt, "Found snippets element");
- ok(snippetsElt.getElementsByTagName("a")[0].href != "about:rights",
- "Snippet link should not point to about:rights.");
- });
-});
-
-/**
- * Cleans up snippets and ensures that by default we don't try to check for
- * remote snippets since that may cause network bustage or slowness.
- *
- * @param aSetupFn
- * The setup function to be run.
- * @param testFn
- * the content task to run
- * @param testArgs (optional)
- * the parameters to pass to the content task
- * @param parentFn (optional)
- * the function to run in the parent after the content task has completed.
- * @return {Promise} resolved when the snippets are ready. Gets the snippets map.
- */
-async function withSnippetsMap(setupFn, testFn, testArgs = null, parentFn = null) {
- let setupFnSource;
- if (setupFn) {
- setupFnSource = setupFn.toSource();
- }
-
- await BrowserTestUtils.withNewTab({ gBrowser, url: "about:blank" }, async function(browser) {
- let promiseAfterLocationChange = () => {
- return ContentTask.spawn(browser, {
- setupFnSource,
- version: AboutHomeUtils.snippetsVersion,
- }, async function(args) {
- return new Promise(resolve => {
- let document = content.document;
- // We're not using Promise-based listeners, because they resolve asynchronously.
- // The snippets test setup code relies on synchronous behaviour here.
- document.addEventListener("AboutHomeLoadSnippets", function() {
- let updateSnippets;
- if (args.setupFnSource) {
- // eslint-disable-next-line no-eval
- updateSnippets = eval(`(() => (${args.setupFnSource}))()`);
- }
-
- content.wrappedJSObject.ensureSnippetsMapThen(snippetsMap => {
- snippetsMap = Cu.waiveXrays(snippetsMap);
- info("Got snippets map: " +
- "{ last-update: " + snippetsMap.get("snippets-last-update") +
- ", cached-version: " + snippetsMap.get("snippets-cached-version") +
- " }");
- // Don't try to update.
- snippetsMap.set("snippets-last-update", Date.now());
- snippetsMap.set("snippets-cached-version", args.version);
- // Clear snippets.
- snippetsMap.delete("snippets");
-
- if (updateSnippets) {
- updateSnippets(snippetsMap);
- }
-
- // Tack it to the global object
- content.gSnippetsMap = snippetsMap;
-
- resolve();
- });
- }, {once: true});
- });
- });
- };
-
- // We'd like to listen to the 'AboutHomeLoadSnippets' event on a fresh
- // document as soon as technically possible, so we use webProgress.
- let promise = new Promise(resolve => {
- let wpl = {
- onLocationChange() {
- gBrowser.removeProgressListener(wpl);
- // Phase 2: retrieving the snippets map is the next promise on our agenda.
- promiseAfterLocationChange().then(resolve);
- },
- onProgressChange() {},
- onStatusChange() {},
- onSecurityChange() {}
- };
- gBrowser.addProgressListener(wpl);
- });
-
- // Set the URL to 'about:home' here to allow capturing the 'AboutHomeLoadSnippets'
- // event.
- browser.loadURI("about:home");
- // Wait for LocationChange.
- await promise;
-
- await ContentTask.spawn(browser, testArgs, testFn);
- if (parentFn) {
- await parentFn();
- }
- });
-}
deleted file mode 100644
--- a/browser/base/content/test/about/browser_aboutHome_wrapsCorrectly.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- */
-
-add_task(async function() {
- let newWindow = await BrowserTestUtils.openNewBrowserWindow();
-
- let resizedPromise = BrowserTestUtils.waitForEvent(newWindow, "resize");
- newWindow.resizeTo(300, 300);
- await resizedPromise;
-
- await BrowserTestUtils.openNewForegroundTab(newWindow.gBrowser, "about:home");
-
- await ContentTask.spawn(newWindow.gBrowser.selectedBrowser, {}, async function() {
- Assert.equal(content.document.body.getAttribute("narrow"), "true", "narrow mode");
- });
-
- resizedPromise = BrowserTestUtils.waitForContentEvent(newWindow.gBrowser.selectedBrowser, "resize");
-
-
- await ContentTask.spawn(newWindow.gBrowser.selectedBrowser, {}, async function() {
- content.window.resizeTo(800, 800);
- });
-
- await resizedPromise;
-
- await ContentTask.spawn(newWindow.gBrowser.selectedBrowser, {}, async function() {
- Assert.equal(content.document.body.hasAttribute("narrow"), false, "non-narrow mode");
- });
-
- await BrowserTestUtils.closeWindow(newWindow);
-});
deleted file mode 100644
--- a/browser/base/content/test/about/test_bug959531.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <title>Test for content page with settings button</title>
- </head>
- <body>
- <button name="settings" id="settings">Settings</button>
- </body>
-</html>
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -8,39 +8,16 @@ browser.jar:
* content/browser/aboutDialog.xul (content/aboutDialog.xul)
content/browser/aboutDialog.js (content/aboutDialog.js)
content/browser/aboutDialog.css (content/aboutDialog.css)
content/browser/aboutRestartRequired.js (content/aboutRestartRequired.js)
content/browser/aboutRestartRequired.xhtml (content/aboutRestartRequired.xhtml)
content/browser/aboutRobots.xhtml (content/aboutRobots.xhtml)
content/browser/aboutRobots.js (content/aboutRobots.js)
content/browser/aboutRobots.css (content/aboutRobots.css)
-* content/browser/abouthome/aboutHome.xhtml (content/abouthome/aboutHome.xhtml)
- content/browser/abouthome/aboutHome.js (content/abouthome/aboutHome.js)
-* content/browser/abouthome/aboutHome.css (content/abouthome/aboutHome.css)
- content/browser/abouthome/snippet1.png (content/abouthome/snippet1.png)
- content/browser/abouthome/snippet2.png (content/abouthome/snippet2.png)
- content/browser/abouthome/downloads.png (content/abouthome/downloads.png)
- content/browser/abouthome/bookmarks.png (content/abouthome/bookmarks.png)
- content/browser/abouthome/history.png (content/abouthome/history.png)
- content/browser/abouthome/addons.png (content/abouthome/addons.png)
- content/browser/abouthome/sync.png (content/abouthome/sync.png)
- content/browser/abouthome/settings.png (content/abouthome/settings.png)
- content/browser/abouthome/restore.png (content/abouthome/restore.png)
- content/browser/abouthome/restore-large.png (content/abouthome/restore-large.png)
- content/browser/abouthome/snippet1@2x.png (content/abouthome/snippet1@2x.png)
- content/browser/abouthome/snippet2@2x.png (content/abouthome/snippet2@2x.png)
- content/browser/abouthome/downloads@2x.png (content/abouthome/downloads@2x.png)
- content/browser/abouthome/bookmarks@2x.png (content/abouthome/bookmarks@2x.png)
- content/browser/abouthome/history@2x.png (content/abouthome/history@2x.png)
- content/browser/abouthome/addons@2x.png (content/abouthome/addons@2x.png)
- content/browser/abouthome/sync@2x.png (content/abouthome/sync@2x.png)
- content/browser/abouthome/settings@2x.png (content/abouthome/settings@2x.png)
- content/browser/abouthome/restore@2x.png (content/abouthome/restore@2x.png)
- content/browser/abouthome/restore-large@2x.png (content/abouthome/restore-large@2x.png)
content/browser/illustrations/error-connection-failure.svg (content/illustrations/error-connection-failure.svg)
content/browser/illustrations/error-server-not-found.svg (content/illustrations/error-server-not-found.svg)
content/browser/illustrations/error-malformed-url.svg (content/illustrations/error-malformed-url.svg)
content/browser/illustrations/under-construction.svg (content/illustrations/under-construction.svg)
content/browser/aboutNetError.xhtml (content/aboutNetError.xhtml)
content/browser/aboutNetError.js (content/aboutNetError.js)
content/browser/aboutRobots-icon.png (content/aboutRobots-icon.png)
deleted file mode 100644
index 3f1d2d39652926f67bc4fe9344ea18c09cdde478..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001
--- a/browser/branding/unofficial/content/jar.mn
+++ b/browser/branding/unofficial/content/jar.mn
@@ -2,17 +2,16 @@
# 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/.
browser.jar:
% content branding %content/branding/ contentaccessible=yes
content/branding/about.png
content/branding/about-background.png
content/branding/about-logo.png
- content/branding/about-logo@2x.png
content/branding/about-wordmark.svg
content/branding/icon16.png (../default16.png)
content/branding/icon32.png (../default32.png)
content/branding/icon48.png (../default48.png)
content/branding/icon64.png (../default64.png)
content/branding/icon128.png (../default128.png)
content/branding/identity-icons-brand.svg
content/branding/aboutDialog.css
--- a/browser/components/newtab/aboutNewTabService.js
+++ b/browser/components/newtab/aboutNewTabService.js
@@ -8,19 +8,16 @@
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
ChromeUtils.defineModuleGetter(this, "AboutNewTab",
"resource:///modules/AboutNewTab.jsm");
-// Dummy references to the files that this service no longer allows loading.
-// Bug 1409054 to remove "chrome://browser/content/abouthome/aboutHome.xhtml"
-
const TOPIC_APP_QUIT = "quit-application-granted";
const TOPIC_LOCALES_CHANGE = "intl:app-locales-changed";
// Automated tests ensure packaged locales are in this list. Copied output of:
// https://github.com/mozilla/activity-stream/blob/master/bin/render-activity-stream-html.js
const ACTIVITY_STREAM_LOCALES = "en-US ach an ar ast az be bg bn-BD bn-IN br bs ca cak crh cs cy da de dsb el en-CA en-GB eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn gu-IN he hi-IN hr hsb hu hy-AM ia id it ja ka kab kk km kn ko lij lo lt ltg lv mai mk ml mr ms my nb-NO ne-NP nl nn-NO pa-IN pl pt-BR pt-PT rm ro ru si sk sl sq sr sv-SE ta te th tl tr uk ur uz vi zh-CN zh-TW".split(" ");
const ABOUT_URL = "about:newtab";
--- a/browser/components/nsBrowserGlue.js
+++ b/browser/components/nsBrowserGlue.js
@@ -136,28 +136,27 @@ XPCOMUtils.defineLazyModuleGetters(this,
ShellService: "resource:///modules/ShellService.jsm",
TabCrashHandler: "resource:///modules/ContentCrashHandlers.jsm",
UIState: "resource://services-sync/UIState.jsm",
UITour: "resource:///modules/UITour.jsm",
WebChannel: "resource://gre/modules/WebChannel.jsm",
WindowsRegistry: "resource://gre/modules/WindowsRegistry.jsm",
});
-/* global AboutHome:false, ContentPrefServiceParent:false, ContentSearch:false,
+/* global ContentPrefServiceParent:false, ContentSearch:false,
UpdateListener:false, webrtcUI:false */
/**
* IF YOU ADD OR REMOVE FROM THIS LIST, PLEASE UPDATE THE LIST ABOVE AS WELL.
* XXX Bug 1325373 is for making eslint detect these automatically.
*/
let initializedModules = {};
[
- ["AboutHome", "resource:///modules/AboutHome.jsm", "init"],
["ContentPrefServiceParent", "resource://gre/modules/ContentPrefServiceParent.jsm", "alwaysInit"],
["ContentSearch", "resource:///modules/ContentSearch.jsm", "init"],
["UpdateListener", "resource://gre/modules/UpdateListener.jsm", "init"],
["webrtcUI", "resource:///modules/webrtcUI.jsm", "init"],
].forEach(([name, resource, init]) => {
XPCOMUtils.defineLazyGetter(this, name, () => {
ChromeUtils.import(resource, initializedModules);
initializedModules[name][init]();
@@ -205,18 +204,16 @@ const listeners = {
"FeedConverter:addLiveBookmark": ["Feeds"],
"WCCR:setAutoHandler": ["Feeds"],
"webrtc:UpdateGlobalIndicators": ["webrtcUI"],
"webrtc:UpdatingIndicators": ["webrtcUI"],
},
mm: {
- "AboutHome:MaybeShowMigrateMessage": ["AboutHome"],
- "AboutHome:RequestUpdate": ["AboutHome"],
"Content:Click": ["ContentClick"],
"ContentSearch": ["ContentSearch"],
"FormValidation:ShowPopup": ["FormValidationHandler"],
"FormValidation:HidePopup": ["FormValidationHandler"],
"Prompt:Open": ["RemotePrompt"],
"Reader:FaviconRequest": ["ReaderParent"],
"Reader:UpdateReaderButton": ["ReaderParent"],
// PLEASE KEEP THIS LIST IN SYNC WITH THE MOBILE LISTENERS IN BrowserCLH.js
deleted file mode 100644
--- a/browser/locales/en-US/chrome/browser/aboutHome.dtd
+++ /dev/null
@@ -1,40 +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/. -->
-
-<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
-%brandDTD;
-<!ENTITY % syncBrandDTD SYSTEM "chrome://browser/locale/syncBrand.dtd">
-%syncBrandDTD;
-
-<!-- These strings are used in the about:home page -->
-
-<!ENTITY abouthome.pageTitle "&brandFullName; Start Page">
-
-<!-- LOCALIZATION NOTE (abouthome.defaultSnippet1.v1):
- text in <a/> will be linked to the Firefox features page on mozilla.com
--->
-<!ENTITY abouthome.defaultSnippet1.v1 "Thanks for choosing Firefox! To get the most out of your browser, learn more about the <a>latest features</a>.">
-<!-- LOCALIZATION NOTE (abouthome.defaultSnippet2.v1):
- text in <a/> will be linked to the featured add-ons on addons.mozilla.org
--->
-<!ENTITY abouthome.defaultSnippet2.v1 "It’s easy to customize your Firefox exactly the way you want it. <a>Choose from thousands of add-ons</a>.">
-<!-- LOCALIZATION NOTE (abouthome.rightsSnippet): text in <a/> will be linked to about:rights -->
-<!ENTITY abouthome.rightsSnippet "&brandFullName; is free and open source software from the non-profit Mozilla Foundation. <a>Know your rights…</a>">
-
-<!ENTITY abouthome.bookmarksButton.label "Bookmarks">
-<!ENTITY abouthome.historyButton.label "History">
-<!-- LOCALIZATION NOTE (abouthome.preferencesButtonWin.label): The label for the
- preferences/options item on about:home on Windows -->
-<!ENTITY abouthome.preferencesButtonWin.label "Options">
-<!-- LOCALIZATION NOTE (abouthome.preferencesButtonUnix.label): The label for the
- preferences/options item on about:home on Linux and OS X -->
-<!ENTITY abouthome.preferencesButtonUnix.label "Preferences">
-<!ENTITY abouthome.addonsButton.label "Add-ons">
-<!ENTITY abouthome.downloadsButton.label "Downloads">
-<!ENTITY abouthome.syncButton.label "&syncBrand.shortName.label;">
-
-<!-- LOCALIZATION NOTE (abouthome.aboutMozilla.label): The (invisible) label for
- the mozilla wordmark in the top-right corner that links to Mozilla's main
- about page. -->
-<!ENTITY abouthome.aboutMozilla.label "About Mozilla">
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -11,17 +11,16 @@
browser (%browser/**/*.ftl)
@AB_CD@.jar:
% locale browser @AB_CD@ %locale/browser/
* locale/browser/bookmarks.html (generic/profile/bookmarks.html.in)
locale/browser/aboutDialog.dtd (%chrome/browser/aboutDialog.dtd)
locale/browser/aboutPrivateBrowsing.dtd (%chrome/browser/aboutPrivateBrowsing.dtd)
locale/browser/aboutRobots.dtd (%chrome/browser/aboutRobots.dtd)
- locale/browser/aboutHome.dtd (%chrome/browser/aboutHome.dtd)
locale/browser/accounts.properties (%chrome/browser/accounts.properties)
locale/browser/aboutRestartRequired.dtd (%chrome/browser/aboutRestartRequired.dtd)
locale/browser/aboutSearchReset.dtd (%chrome/browser/aboutSearchReset.dtd)
locale/browser/aboutSessionRestore.dtd (%chrome/browser/aboutSessionRestore.dtd)
locale/browser/aboutTabCrashed.dtd (%chrome/browser/aboutTabCrashed.dtd)
locale/browser/browser.dtd (%chrome/browser/browser.dtd)
locale/browser/baseMenuOverlay.dtd (%chrome/browser/baseMenuOverlay.dtd)
locale/browser/browser.properties (%chrome/browser/browser.properties)
deleted file mode 100644
--- a/browser/modules/AboutHome.jsm
+++ /dev/null
@@ -1,179 +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";
-
-var EXPORTED_SYMBOLS = [ "AboutHomeUtils", "AboutHome" ];
-
-ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
-ChromeUtils.import("resource://gre/modules/Services.jsm");
-
-ChromeUtils.defineModuleGetter(this, "AppConstants",
- "resource://gre/modules/AppConstants.jsm");
-ChromeUtils.defineModuleGetter(this, "AutoMigrate",
- "resource:///modules/AutoMigrate.jsm");
-ChromeUtils.defineModuleGetter(this, "SessionStore",
- "resource:///modules/sessionstore/SessionStore.jsm");
-
-// Url to fetch snippets, in the urlFormatter service format.
-const SNIPPETS_URL_PREF = "browser.aboutHomeSnippets.updateUrl";
-
-// Should be bumped up if the snippets content format changes.
-const STARTPAGE_VERSION = 4;
-
-var AboutHomeUtils = {
- get snippetsVersion() {
- return STARTPAGE_VERSION;
- },
-
- /*
- * showKnowYourRights - Determines if the user should be shown the
- * about:rights notification. The notification should *not* be shown if
- * we've already shown the current version, or if the override pref says to
- * never show it. The notification *should* be shown if it's never been seen
- * before, if a newer version is available, or if the override pref says to
- * always show it.
- */
- get showKnowYourRights() {
- // Look for an unconditional override pref. If set, do what it says.
- // (true --> never show, false --> always show)
- try {
- return !Services.prefs.getBoolPref("browser.rights.override");
- } catch (e) { }
- // Ditto, for the legacy EULA pref.
- try {
- return !Services.prefs.getBoolPref("browser.EULA.override");
- } catch (e) { }
-
- if (!AppConstants.MOZILLA_OFFICIAL) {
- // Non-official builds shouldn't show the notification.
- return false;
- }
-
- // Look to see if the user has seen the current version or not.
- var currentVersion = Services.prefs.getIntPref("browser.rights.version");
- try {
- return !Services.prefs.getBoolPref("browser.rights." + currentVersion + ".shown");
- } catch (e) { }
-
- // Legacy: If the user accepted a EULA, we won't annoy them with the
- // equivalent about:rights page until the version changes.
- try {
- return !Services.prefs.getBoolPref("browser.EULA." + currentVersion + ".accepted");
- } catch (e) { }
-
- // We haven't shown the notification before, so do so now.
- return true;
- }
-};
-
-/**
- * Returns the URL to fetch snippets from, in the urlFormatter service format.
- */
-XPCOMUtils.defineLazyGetter(AboutHomeUtils, "snippetsURL", function() {
- let updateURL = Services.prefs
- .getCharPref(SNIPPETS_URL_PREF)
- .replace("%STARTPAGE_VERSION%", STARTPAGE_VERSION);
- return Services.urlFormatter.formatURL(updateURL);
-});
-
-/**
- * This code provides services to the about:home page. Whenever
- * about:home needs to do something chrome-privileged, it sends a
- * message that's handled here.
- */
-var AboutHome = {
- MESSAGES: [
- "AboutHome:RestorePreviousSession",
- "AboutHome:Downloads",
- "AboutHome:Bookmarks",
- "AboutHome:History",
- "AboutHome:Addons",
- "AboutHome:Sync",
- "AboutHome:Settings",
- ],
-
- init() {
- for (let msg of this.MESSAGES) {
- Services.mm.addMessageListener(msg, this);
- }
- },
-
- // Additional listeners are registered in nsBrowserGlue.js
- receiveMessage(aMessage) {
- let window = aMessage.target.ownerGlobal;
-
- switch (aMessage.name) {
- case "AboutHome:RestorePreviousSession":
- if (SessionStore.canRestoreLastSession) {
- SessionStore.restoreLastSession();
- }
- break;
-
- case "AboutHome:Downloads":
- window.BrowserDownloadsUI();
- break;
-
- case "AboutHome:Bookmarks":
- window.PlacesCommandHook.showPlacesOrganizer("UnfiledBookmarks");
- break;
-
- case "AboutHome:History":
- window.PlacesCommandHook.showPlacesOrganizer("History");
- break;
-
- case "AboutHome:Addons":
- window.BrowserOpenAddonsMgr();
- break;
-
- case "AboutHome:Sync":
- window.openPreferences("paneSync", { urlParams: { entrypoint: "abouthome" }, origin: "aboutHome" });
- break;
-
- case "AboutHome:Settings":
- window.openPreferences(undefined, {origin: "aboutHome"} );
- break;
-
- case "AboutHome:RequestUpdate":
- this.sendAboutHomeData(aMessage.target);
- break;
-
- case "AboutHome:MaybeShowMigrateMessage":
- AutoMigrate.shouldShowMigratePrompt(aMessage.target).then((prompt) => {
- if (prompt) {
- AutoMigrate.showUndoNotificationBar(aMessage.target);
- }
- });
- break;
- }
- },
-
- // Send all the chrome-privileged data needed by about:home. This
- // gets re-sent when the search engine changes.
- sendAboutHomeData(target) {
- SessionStore.promiseInitialized.then(function() {
- let data = {
- showRestoreLastSession: SessionStore.canRestoreLastSession,
- snippetsURL: AboutHomeUtils.snippetsURL,
- showKnowYourRights: AboutHomeUtils.showKnowYourRights,
- snippetsVersion: AboutHomeUtils.snippetsVersion,
- };
-
- if (AboutHomeUtils.showKnowYourRights) {
- // Set pref to indicate we've shown the notification.
- let currentVersion = Services.prefs.getIntPref("browser.rights.version");
- Services.prefs.setBoolPref("browser.rights." + currentVersion + ".shown", true);
- }
-
- if (target && target.messageManager) {
- target.messageManager.sendAsyncMessage("AboutHome:Update", data);
- } else {
- Services.mm.broadcastAsyncMessage("AboutHome:Update", data);
- }
- }).catch(function onError(x) {
- Cu.reportError("Error in AboutHome.sendAboutHomeData: " + x);
- });
- },
-
-};
--- a/browser/modules/moz.build
+++ b/browser/modules/moz.build
@@ -118,17 +118,16 @@ with Files("ZoomUI.jsm"):
BROWSER_CHROME_MANIFESTS += [
'test/browser/browser.ini',
'test/browser/formValidation/browser.ini',
]
XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
EXTRA_JS_MODULES += [
- 'AboutHome.jsm',
'AboutNewTab.jsm',
'AsyncTabSwitcher.jsm',
'AttributionCode.jsm',
'BrowserErrorReporter.jsm',
'BrowserUITelemetry.jsm',
'BrowserUsageTelemetry.jsm',
'BrowserWindowTracker.jsm',
'ContentClick.jsm',
--- a/tools/lint/eslint/modules.json
+++ b/tools/lint/eslint/modules.json
@@ -1,10 +1,9 @@
{
- "AboutHome.jsm": ["AboutHomeUtils", "AboutHome"],
"AddonManager.jsm": ["AddonManager", "AddonManagerPrivate"],
"addons.js": ["AddonsEngine", "AddonValidator"],
"addons.jsm": ["Addon", "STATE_ENABLED", "STATE_DISABLED"],
"addonsreconciler.js": ["AddonsReconciler", "CHANGE_INSTALLED", "CHANGE_UNINSTALLED", "CHANGE_ENABLED", "CHANGE_DISABLED"],
"AddonTestUtils.jsm": ["AddonTestUtils", "MockAsyncShutdown"],
"addonutils.js": ["AddonUtils"],
"ajv-4.1.1.js": ["Ajv"],
"AlertsHelper.jsm": [],