diff options
-rw-r--r-- | libre/iceweasel-libre/PKGBUILD | 6 | ||||
-rw-r--r-- | libre/iceweasel-libre/gnu_headshadow.png | bin | 0 -> 6785 bytes | |||
-rw-r--r-- | libre/iceweasel-libre/libre.patch | 348 |
3 files changed, 303 insertions, 51 deletions
diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD index 69abce460..6b7ee920d 100644 --- a/libre/iceweasel-libre/PKGBUILD +++ b/libre/iceweasel-libre/PKGBUILD @@ -53,6 +53,7 @@ source=("$_debrepo/`debfile $_debname`_$_debver.orig.tar.bz2" mozconfig mozconfig.pgo libre.patch + gnu_headshadow.png iceweasel.desktop iceweasel-install-dir.patch vendor.js @@ -63,7 +64,8 @@ md5sums=('219cf21e0642e8a364365286f23d0624' '2001d0477bcefd0eeaab584402133691' '023120a970670dc85cea19393f0b94b6' 'df08eaa1ac3bc6c2356be4fbf8ec8932' - '74b5e9d9d16cfe9dc7d08fabf1f52c7c' + '0debcc1c5515ce174cf3d3c8e934b42c' + 'b03a979a78484503ba8dddad4f2c96d1' '7b9e5996dd9fe0b186a43a297db1c6b5' '6620e724ec9a1be74e65089d81d802f7' '816013881cfc9a1f4f0ede72b014f8b3' @@ -92,6 +94,8 @@ prepare() { quilt push -av + install -m644 "$srcdir/gnu_headshadow.png" browser/base/content/abouthome # Put gnu_headshadow.png on the source code + patch -Np1 -i "$srcdir/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch" # Adding fixed Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch patch -Np1 -i "$srcdir/Fixup-Reset-Firefox-after-bad-merge.patch" patch -Np1 -i "$srcdir/iceweasel-install-dir.patch" # install to /usr/lib/$_pkgname diff --git a/libre/iceweasel-libre/gnu_headshadow.png b/libre/iceweasel-libre/gnu_headshadow.png Binary files differnew file mode 100644 index 000000000..e0f73a3bf --- /dev/null +++ b/libre/iceweasel-libre/gnu_headshadow.png diff --git a/libre/iceweasel-libre/libre.patch b/libre/iceweasel-libre/libre.patch index a4eb23831..aca8983b9 100644 --- a/libre/iceweasel-libre/libre.patch +++ b/libre/iceweasel-libre/libre.patch @@ -18,7 +18,7 @@ index 331edc8..e18bd20 100644 pref("security.csp.speccompliant", true); diff --git a/browser/base/content/abouthome/aboutHome.css b/browser/base/content/abouthome/aboutHome.css -index c270318..8a647c7 100644 +index c270318..c67d112 100644 --- a/browser/base/content/abouthome/aboutHome.css +++ b/browser/base/content/abouthome/aboutHome.css @@ -49,11 +49,6 @@ a { @@ -92,7 +92,45 @@ index c270318..8a647c7 100644 #launcher { display: -moz-box; -moz-box-align: center; -@@ -366,20 +318,6 @@ body[narrow] #restorePreviousSession::before { +@@ -335,28 +287,23 @@ body[narrow] #restorePreviousSession::before { + width: 32px; + } + +-#aboutMozilla { ++#aboutGNU { ++ background: url("chrome://browser/content/abouthome/gnu_headshadow.png"); + display: block; +- position: relative; /* pin wordmark to edge of document, not of viewport */ ++ position: absolute; ++ top: 12px; ++ right: 12px; ++ width: 200px; ++ height: 110px; + -moz-box-ordinal-group: 0; + opacity: .5; +- transition: opacity 150ms; ++ transition:opacity 150ms; + } + +-#aboutMozilla:hover { ++#aboutGNU:hover { + opacity: 1; + } + +-#aboutMozilla::before { +- content: url("chrome://browser/content/abouthome/mozilla.png"); +- display: block; +- position: absolute; +- top: 12px; +- right: 12px; +- width: 69px; +- height: 19px; +-} +- + /* [HiDPI] + * At resolutions above 1dppx, prefer downscaling the 2x Retina graphics + * rather than upscaling the original-size ones (bug 818940). +@@ -366,26 +313,7 @@ body[narrow] #restorePreviousSession::before { background-image: url("chrome://branding/content/about-logo@2x.png"); } @@ -111,13 +149,29 @@ index c270318..8a647c7 100644 - } - .launchButton::before, - #aboutMozilla::before { - transform: scale(.5); +- #aboutMozilla::before { +- transform: scale(.5); +- transform-origin: 0 0; +- } +- + #downloads::before { + content: url("chrome://browser/content/abouthome/downloads@2x.png"); + } +@@ -421,9 +349,5 @@ body[narrow] #restorePreviousSession::before { + body[narrow] #restorePreviousSession::before { + content: url("chrome://browser/content/abouthome/restore@2x.png"); + } +- +- #aboutMozilla::before { +- content: url("chrome://browser/content/abouthome/mozilla@2x.png"); +- } + } + diff --git a/browser/base/content/abouthome/aboutHome.js b/browser/base/content/abouthome/aboutHome.js -index 432fcdc..0d81017 100644 +index 432fcdc..8e85f1f 100644 --- a/browser/base/content/abouthome/aboutHome.js +++ b/browser/base/content/abouthome/aboutHome.js -@@ -3,152 +3,44 @@ +@@ -3,317 +3,99 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ const SEARCH_ENGINES = { @@ -293,46 +347,59 @@ index 432fcdc..0d81017 100644 - "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 = 86400000; // 1 Day. -- ++// Bug with dom.storage.enabled set as false ++// We are using DDG as a default in this case. ++let gSearchEngine = {"name": "DuckDuckGo HTML", "searchUrl": "https://duckduckgo.com/html/?t=iceweasel&q=_searchTerms_"}; + -// IndexedDB storage constants. -const DATABASE_NAME = "abouthome"; -const DATABASE_VERSION = 1; -const SNIPPETS_OBJECTSTORE_NAME = "snippets"; - - // This global tracks if the page has been set up before, to prevent double inits - let gInitialized = false; - let gObserver = new MutationObserver(function (mutations) { -@@ -156,7 +48,6 @@ let gObserver = new MutationObserver(function (mutations) { - if (mutation.attributeName == "searchEngineName") { - setupSearchEngine(); - if (!gInitialized) { +-// This global tracks if the page has been set up before, to prevent double inits +-let gInitialized = false; +-let gObserver = new MutationObserver(function (mutations) { +- for (let mutation of mutations) { +- if (mutation.attributeName == "searchEngineName") { +- setupSearchEngine(); +- if (!gInitialized) { - ensureSnippetsMapThen(loadSnippets); - gInitialized = true; - } - return; -@@ -170,10 +61,6 @@ window.addEventListener("pageshow", function () { - window.gObserver.observe(document.documentElement, { attributes: true }); - fitToWidth(); - window.addEventListener("resize", fitToWidth); +- 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(); +- 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); ++document.addEventListener("DOMContentLoaded", function init() { ++ setupSearchEngine(); }); - - window.addEventListener("pagehide", function() { -@@ -181,117 +68,6 @@ window.addEventListener("pagehide", function() { - window.removeEventListener("resize", fitToWidth); - }); ++window.addEventListener("load", fitToWidth); ++window.addEventListener("resize", fitToWidth); -// 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. -let gSnippetsMap; -let gSnippetsMapCallbacks = []; -- + -/** - * Ensure the snippets map is properly initialized. - * @@ -342,7 +409,8 @@ index 432fcdc..0d81017 100644 - * it may change inadvertently. - */ -function ensureSnippetsMapThen(aCallback) --{ ++function onSearchSubmit(aEvent) + { - if (gSnippetsMap) { - aCallback(gSnippetsMap); - return; @@ -358,30 +426,44 @@ index 432fcdc..0d81017 100644 - let invokeCallbacks = function () { - if (!gSnippetsMap) { - gSnippetsMap = Object.freeze(new Map()); -- } ++ let searchTerms = document.getElementById("searchText").value; ++ if (gSearchEngine && searchTerms.length > 0) { ++ const SEARCH_TOKENS = { ++ "_searchTerms_": encodeURIComponent(searchTerms) + } - - for (let callback of gSnippetsMapCallbacks) { - callback(gSnippetsMap); -- } ++ let url = gSearchEngine.searchUrl; ++ for (let key in SEARCH_TOKENS) { ++ url = url.replace(key, SEARCH_TOKENS[key]); + } - gSnippetsMapCallbacks.length = 0; -- } -- ++ window.location.href = url; + } + - let openRequest = indexedDB.open(DATABASE_NAME, DATABASE_VERSION); -- ++ aEvent.preventDefault(); ++} + - 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); - } -- } -- ++function setupSearchEngine() ++{ ++ if (localStorage && localStorage["search-engine"]) { ++ gSearchEngine = JSON.parse(localStorage["search-engine"]); + } + - openRequest.onsuccess = function (event) { - let db = event.target.result; - @@ -435,16 +517,71 @@ index 432fcdc..0d81017 100644 - - setTimeout(invokeCallbacks, 0); - } -- } ++ ++ // Look for extended information, like logo and links. ++ var searchEngineInfo = SEARCH_ENGINES[gSearchEngine.name]; ++ if (searchEngineInfo) { ++ for (let prop in searchEngineInfo) ++ gSearchEngine[prop] = searchEngineInfo[prop]; + } -} -- - function onSearchSubmit(aEvent) - { - let searchTerms = document.getElementById("searchText").value; -@@ -341,156 +117,6 @@ function setupSearchEngine() - } +-function onSearchSubmit(aEvent) +-{ +- let searchTerms = document.getElementById("searchText").value; +- let engineName = document.documentElement.getAttribute("searchEngineName"); ++ // Enqueue additional params if required by the engine definition. ++ if (gSearchEngine.params) ++ gSearchEngine.searchUrl += "&" + gSearchEngine.params; + +- if (engineName && searchTerms.length > 0) { +- // Send an event that will perform a search and Firefox Health Report will +- // record that a search from about:home has occurred. +- let eventData = JSON.stringify({ +- engineName: engineName, +- searchTerms: searchTerms +- }); +- let event = new CustomEvent("AboutHomeSearchEvent", {detail: eventData}); +- document.dispatchEvent(event); ++ // Add search engine logo. ++ if (gSearchEngine.image) { ++ let logoElt = document.getElementById("searchEngineLogo"); ++ logoElt.src = gSearchEngine.image; ++ logoElt.alt = gSearchEngine.name; + } +- aEvent.preventDefault(); +-} +- +- +-function setupSearchEngine() +-{ + // 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. +@@ -322,173 +104,6 @@ function setupSearchEngine() + searchText.removeEventListener("blur", searchText_onBlur); + searchText.removeAttribute("autofocus"); + }); +- +- let searchEngineName = document.documentElement.getAttribute("searchEngineName"); +- let searchEngineInfo = SEARCH_ENGINES[searchEngineName]; +- let logoElt = document.getElementById("searchEngineLogo"); +- +- // Add search engine logo. +- if (searchEngineInfo && searchEngineInfo.image) { +- logoElt.parentNode.hidden = false; +- logoElt.src = searchEngineInfo.image; +- logoElt.alt = searchEngineName; +- searchText.placeholder = ""; +- } +- else { +- logoElt.parentNode.hidden = true; +- searchText.placeholder = searchEngineName; +- } +- +-} +- -/** - * Inform the test harness that we're done loading the page. - */ @@ -593,16 +730,14 @@ index 432fcdc..0d81017 100644 - } - // Move the default snippet to the snippets element. - snippetsElt.appendChild(entry); --} -- + } + function fitToWidth() { - if (window.scrollMaxX) { - document.body.setAttribute("narrow", "true"); diff --git a/browser/base/content/abouthome/aboutHome.xhtml b/browser/base/content/abouthome/aboutHome.xhtml -index 1d03d38..e3cd254 100644 +index 1d03d38..5555f72 100644 --- a/browser/base/content/abouthome/aboutHome.xhtml +++ b/browser/base/content/abouthome/aboutHome.xhtml -@@ -43,15 +43,6 @@ +@@ -43,19 +43,10 @@ <input id="searchSubmit" type="submit" value="&abouthome.searchEngineButton.label;"/> </form> </div> @@ -618,6 +753,21 @@ index 1d03d38..e3cd254 100644 </div> <div class="spacer"/> +- <div id="launcher"> ++ <div id="launcher" session="true"> + <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> +@@ -66,7 +57,7 @@ + <div id="restorePreviousSessionSeparator"/> + <button class="launchButton" id="restorePreviousSession">&historyRestoreLastSession.label;</button> + </div> +- +- <a id="aboutMozilla" href="https://www.mozilla.org/about/?utm_source=about-home&utm_medium=Referral"/> ++ <a href="http://directory.fsf.org/wiki/GNU_IceCat">Help GNU and FSF: Help add free addons to the directory!</a> ++ <a id="aboutGNU" href="http://gnu.org"></a> + </body> + </html> diff --git a/browser/locales/en-US/chrome/browser-region/region.properties b/browser/locales/en-US/chrome/browser-region/region.properties index 087cc50..5654eb9 100644 --- a/browser/locales/en-US/chrome/browser-region/region.properties @@ -700,6 +850,104 @@ index e925c1e..5101035 100644 + <DT><A HREF="http://www.h-node.org/" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABgElEQVQ4jaXRz2uSARzHcb0vlRGEzTVWISU1BVkFYTIyjNK1pKcxHA+yhWMWIamHYikFgpoLIi9jwegi3QbL9SzdLmMbM9J+DkJBgm5RDvEPeHeQHOyQz0OH9+V7ePGBr0pqpPmfVPsP8a0AR4MnMEwf48x9K0s/E8oAY9iEMOvD+8yP2qVjrhhRBnSN61n5sIpULqC+pGHh8wNlgEY8jPQXcGh4VXukDND5evYAl46odIuXtYdKAANSudAChO52/XeMZMohecCbcoGdH99Y+7LO72adT9+/4nh8nYOjBl7/SsoB8gBkpHk8T0S2K++pN3fRin3cfnFDHvCuWkI9rEMvHGEo5gbAHnXhnLF1BpZLeRaLOVT2A8Q3A5wMngXgWtKLxX9KPqC+rCWQvYkpeK4NWKcGOgO50ts2MJJ0cPreeQDciTHMchZYIhcwh2wcuqjn+ccwGm9v6wsTxxn0dVgQXZ7Ek3Agpq6QrcaQGmmebtxFSDkRU1fJVmL/BpT2ByV/3eDMhinRAAAAAElFTkSuQmCC">h-node</A> </DL><p> </DL><p> +diff --git a/browser/modules/AboutHome.jsm b/browser/modules/AboutHome.jsm +index 98c443d..0173762 100644 +--- a/browser/modules/AboutHome.jsm ++++ b/browser/modules/AboutHome.jsm +@@ -8,7 +8,7 @@ let Cc = Components.classes; + let Ci = Components.interfaces; + let Cu = Components.utils; + +-this.EXPORTED_SYMBOLS = [ "AboutHomeUtils", "AboutHome" ]; ++this.EXPORTED_SYMBOLS = [ "AboutHome" ]; + + Components.utils.import("resource://gre/modules/XPCOMUtils.jsm"); + Components.utils.import("resource://gre/modules/Services.jsm"); +@@ -16,66 +16,6 @@ Components.utils.import("resource://gre/modules/Services.jsm"); + XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils", + "resource://gre/modules/PrivateBrowsingUtils.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; +- +-this.AboutHomeUtils = { +- get snippetsVersion() 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) { } +- +-#ifndef MOZILLA_OFFICIAL +- // Non-official builds shouldn't show the notification. +- return false; +-#endif +- +- // 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 +@@ -185,17 +125,8 @@ let AboutHome = { + ss.promiseInitialized.then(function() { + let data = { + showRestoreLastSession: ss.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.sendAsyncMessage("AboutHome:Update", data); + } else { diff --git a/dom/ipc/test.xul b/dom/ipc/test.xul index 3eede17..1b47a70 100644 --- a/dom/ipc/test.xul |