summarylogtreecommitdiffstats
path: root/firefox-45-disable-sponsored-tiles.patch
diff options
context:
space:
mode:
Diffstat (limited to 'firefox-45-disable-sponsored-tiles.patch')
-rw-r--r--firefox-45-disable-sponsored-tiles.patch192
1 files changed, 192 insertions, 0 deletions
diff --git a/firefox-45-disable-sponsored-tiles.patch b/firefox-45-disable-sponsored-tiles.patch
new file mode 100644
index 00000000000..caf5aa1814e
--- /dev/null
+++ b/firefox-45-disable-sponsored-tiles.patch
@@ -0,0 +1,192 @@
+--- firefox-45.0esr.bak/browser/modules/DirectoryLinksProvider.jsm 2016-03-13
++++ firefox-45.0esr/browser/modules/DirectoryLinksProvider.jsm 2016-03-13
+@@ -58,16 +58,16 @@
+ const DIRECTORY_LINKS_TYPE = "application/json";
+
+ // The preference that tells whether to match the OS locale
+-const PREF_MATCH_OS_LOCALE = "intl.locale.matchOS";
++const PREF_MATCH_OS_LOCALE = "";
+
+ // The preference that tells what locale the user selected
+-const PREF_SELECTED_LOCALE = "general.useragent.locale";
++const PREF_SELECTED_LOCALE = "";
+
+ // The preference that tells where to obtain directory links
+-const PREF_DIRECTORY_SOURCE = "browser.newtabpage.directory.source";
++const PREF_DIRECTORY_SOURCE = "";
+
+ // The preference that tells where to send click/view pings
+-const PREF_DIRECTORY_PING = "browser.newtabpage.directory.ping";
++const PREF_DIRECTORY_PING = "";
+
+ // The preference that tells if newtab is enhanced
+ const PREF_NEWTAB_ENHANCED = "browser.newtabpage.enhanced";
+@@ -200,30 +200,6 @@
+ * @return the selected locale or "en-US" if none is selected
+ */
+ get locale() {
+- let matchOS;
+- try {
+- matchOS = Services.prefs.getBoolPref(PREF_MATCH_OS_LOCALE);
+- }
+- catch (e) {}
+-
+- if (matchOS) {
+- return Services.locale.getLocaleComponentForUserAgent();
+- }
+-
+- try {
+- let locale = Services.prefs.getComplexValue(PREF_SELECTED_LOCALE,
+- Ci.nsIPrefLocalizedString);
+- if (locale) {
+- return locale.data;
+- }
+- }
+- catch (e) {}
+-
+- try {
+- return Services.prefs.getCharPref(PREF_SELECTED_LOCALE);
+- }
+- catch (e) {}
+-
+ return "en-US";
+ },
+
+@@ -294,13 +270,6 @@
+ },
+
+ _fetchAndCacheLinks: function DirectoryLinksProvider_fetchAndCacheLinks(uri) {
+- // Replace with the same display locale used for selecting links data
+- uri = uri.replace("%LOCALE%", this.locale);
+- uri = uri.replace("%CHANNEL%", UpdateUtils.UpdateChannel);
+-
+- return this._downloadJsonData(uri).then(json => {
+- return OS.File.writeAtomic(this._directoryFilePath, json, {tmpPath: this._directoryFilePath + ".tmp"});
+- });
+ },
+
+ /**
+@@ -309,33 +278,6 @@
+ * @return promise resolved to json string, "{}" returned if status != 200
+ */
+ _downloadJsonData: function DirectoryLinksProvider__downloadJsonData(uri) {
+- let deferred = Promise.defer();
+- let xmlHttp = this._newXHR();
+-
+- xmlHttp.onload = function(aResponse) {
+- let json = this.responseText;
+- if (this.status && this.status != 200) {
+- json = "{}";
+- }
+- deferred.resolve(json);
+- };
+-
+- xmlHttp.onerror = function(e) {
+- deferred.reject("Fetching " + uri + " results in error code: " + e.target.status);
+- };
+-
+- try {
+- xmlHttp.open("GET", uri);
+- // Override the type so XHR doesn't complain about not well-formed XML
+- xmlHttp.overrideMimeType(DIRECTORY_LINKS_TYPE);
+- // Set the appropriate request type for servers that require correct types
+- xmlHttp.setRequestHeader("Content-Type", DIRECTORY_LINKS_TYPE);
+- xmlHttp.send();
+- } catch (e) {
+- deferred.reject("Error fetching " + uri);
+- Cu.reportError(e);
+- }
+- return deferred.promise;
+ },
+
+ /**
+@@ -343,30 +285,6 @@
+ * @return promise resolved immediately if no download needed, or upon completion
+ */
+ _fetchAndCacheLinksIfNecessary: function DirectoryLinksProvider_fetchAndCacheLinksIfNecessary(forceDownload=false) {
+- if (this._downloadDeferred) {
+- // fetching links already - just return the promise
+- return this._downloadDeferred.promise;
+- }
+-
+- if (forceDownload || this._needsDownload) {
+- this._downloadDeferred = Promise.defer();
+- this._fetchAndCacheLinks(this._linksURL).then(() => {
+- // the new file was successfully downloaded and cached, so update a timestamp
+- this._lastDownloadMS = Date.now();
+- this._downloadDeferred.resolve();
+- this._downloadDeferred = null;
+- this._callObservers("onManyLinksChanged")
+- },
+- error => {
+- this._downloadDeferred.resolve();
+- this._downloadDeferred = null;
+- this._callObservers("onDownloadFail");
+- });
+- return this._downloadDeferred.promise;
+- }
+-
+- // download is not needed
+- return Promise.resolve();
+ },
+
+ /**
+@@ -574,40 +492,6 @@
+ }
+ catch (ex) {}
+
+- // Only send pings when enhancing tiles with an endpoint and valid action
+- let invalidAction = PING_ACTIONS.indexOf(action) == -1;
+- if (!newtabEnhanced || pingEndPoint == "" || invalidAction) {
+- return Promise.resolve();
+- }
+-
+- let actionIndex;
+- let data = {
+- locale: this.locale,
+- tiles: sites.reduce((tiles, site, pos) => {
+- // Only add data for non-empty tiles
+- if (site) {
+- // Remember which tiles data triggered the action
+- let {link} = site;
+- let tilesIndex = tiles.length;
+- if (triggeringSiteIndex == pos) {
+- actionIndex = tilesIndex;
+- }
+-
+- // Make the payload in a way so keys can be excluded when stringified
+- let id = link.directoryId;
+- tiles.push({
+- id: id || site.enhancedId,
+- pin: site.isPinned() ? 1 : undefined,
+- pos: pos != tilesIndex ? pos : undefined,
+- past_impressions: pos == triggeringSiteIndex ? pastImpressions : undefined,
+- score: Math.round(link.frecency / PING_SCORE_DIVISOR) || undefined,
+- url: site.enhancedId && "",
+- });
+- }
+- return tiles;
+- }, []),
+- };
+-
+ // Provide a direct index to the tile triggering the action
+ if (actionIndex !== undefined) {
+ data[action] = actionIndex;
+@@ -1021,17 +905,6 @@
+ * @return a promise resolved when lookup Set for sites is built
+ */
+ _loadInadjacentSites: function DirectoryLinksProvider_loadInadjacentSites() {
+- return this._downloadJsonData(this._inadjacentSitesUrl).then(jsonString => {
+- let jsonObject = {};
+- try {
+- jsonObject = JSON.parse(jsonString);
+- }
+- catch (e) {
+- Cu.reportError(e);
+- }
+-
+- this._inadjacentSites = new Set(jsonObject.domains);
+- });
+ },
+
+ /**