author | Margaret Leibovic <margaret.leibovic@gmail.com> |
Fri, 29 Jan 2016 16:30:35 -0500 | |
changeset 319167 | 6599b14546f1a62e7089e9b8b404799db54b5da0 |
parent 319166 | 97c27a348f0963da5bce6b667612e7ba2d209078 |
child 319168 | 02c10e42184757f2ca1a656910f4fc3ce04337b6 |
push id | 5913 |
push user | jlund@mozilla.com |
push date | Mon, 25 Apr 2016 16:57:49 +0000 |
treeherder | mozilla-beta@dcaf0a6fa115 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | liuche |
bugs | 1241566 |
milestone | 47.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/mobile/android/app/mobile.js +++ b/mobile/android/app/mobile.js @@ -630,18 +630,18 @@ pref("media.android-media-codec.preferre pref("media.mediasource.enabled", true); // optimize images memory usage pref("image.downscale-during-decode.enabled", true); #ifdef MOZ_SAFE_BROWSING pref("browser.safebrowsing.enabled", true); pref("browser.safebrowsing.malware.enabled", true); -pref("browser.safebrowsing.downloads.enabled", true); -pref("browser.safebrowsing.downloads.remote.enabled", true); +pref("browser.safebrowsing.downloads.enabled", false); +pref("browser.safebrowsing.downloads.remote.enabled", false); pref("browser.safebrowsing.downloads.remote.timeout_ms", 10000); pref("browser.safebrowsing.downloads.remote.url", "https://sb-ssl.google.com/safebrowsing/clientreport/download?key=%GOOGLE_API_KEY%"); pref("browser.safebrowsing.downloads.remote.block_dangerous", true); pref("browser.safebrowsing.downloads.remote.block_dangerous_host", true); pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false); pref("browser.safebrowsing.downloads.remote.block_uncommon", false); pref("browser.safebrowsing.debug", false);
--- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -3,16 +3,17 @@ * 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/. */ package org.mozilla.gecko; import android.Manifest; import android.os.AsyncTask; import android.support.annotation.NonNull; +import org.json.JSONArray; import org.mozilla.gecko.adjust.AdjustHelperInterface; import org.mozilla.gecko.annotation.RobocopTarget; import org.mozilla.gecko.AppConstants.Versions; import org.mozilla.gecko.DynamicToolbar.PinReason; import org.mozilla.gecko.DynamicToolbar.VisibilityTransition; import org.mozilla.gecko.GeckoProfileDirectories.NoMozillaDirectoryException; import org.mozilla.gecko.Tabs.TabEvents; import org.mozilla.gecko.animation.PropertyAnimator; @@ -677,16 +678,17 @@ public class BrowserApp extends GeckoApp "Menu:Update", "LightweightTheme:Update", "Search:Keyword", "Prompt:ShowTop"); EventDispatcher.getInstance().registerGeckoThreadListener((NativeEventListener)this, "CharEncoding:Data", "CharEncoding:State", + "Experiments:GetActive", "Favicon:CacheLoad", "Feedback:LastUrl", "Feedback:MaybeLater", "Feedback:OpenPlayStore", "Menu:Add", "Menu:Remove", "Reader:Share", "Sanitize:ClearHistory", @@ -1372,16 +1374,17 @@ public class BrowserApp extends GeckoApp "Menu:Update", "LightweightTheme:Update", "Search:Keyword", "Prompt:ShowTop"); EventDispatcher.getInstance().unregisterGeckoThreadListener((NativeEventListener) this, "CharEncoding:Data", "CharEncoding:State", + "Experiments:GetActive", "Favicon:CacheLoad", "Feedback:LastUrl", "Feedback:MaybeLater", "Feedback:OpenPlayStore", "Menu:Add", "Menu:Remove", "Reader:Share", "Sanitize:ClearHistory", @@ -1654,16 +1657,20 @@ public class BrowserApp extends GeckoApp @Override public void run() { if (menu != null) { menu.findItem(R.id.char_encoding).setVisible(visible); } } }); + } else if ("Experiments:GetActive".equals(event)) { + final List<String> experiments = SwitchBoard.getActiveExperiments(this); + final JSONArray json = new JSONArray(experiments); + callback.sendSuccess(json.toString()); } else if ("Favicon:CacheLoad".equals(event)) { final String url = message.getString("url"); getFaviconFromCache(callback, url); } else if ("Feedback:LastUrl".equals(event)) { getLastUrl(callback); } else if ("Feedback:MaybeLater".equals(event)) {
--- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -498,16 +498,17 @@ var BrowserApp = { CharacterEncoding.init(); ActivityObserver.init(); RemoteDebugger.init(); UserAgentOverrides.init(); DesktopUserAgent.init(); Distribution.init(); Tabs.init(); SearchEngines.init(); + Experiments.init(); if ("arguments" in window) { if (window.arguments[0]) gScreenWidth = window.arguments[0]; if (window.arguments[1]) gScreenHeight = window.arguments[1]; } @@ -6817,16 +6818,43 @@ var ActivityObserver = { var Telemetry = { addData: function addData(aHistogramId, aValue) { let histogram = Services.telemetry.getHistogramById(aHistogramId); histogram.add(aValue); }, }; +var Experiments = { + + // Enable malware download protection (bug 936041) + MALWARE_DOWNLOAD_PROTECTION: "malware-download-protection", + + init() { + Messaging.sendRequestForResult({ + type: "Experiments:GetActive" + }).then(experiments => { + let names = JSON.parse(experiments); + for (let name of names) { + switch (name) { + case this.MALWARE_DOWNLOAD_PROTECTION: { + // Apply experiment preferences on the default branch. This allows + // us to avoid migrating user prefs when experiments are enabled/disabled, + // and it also allows users to override these prefs in about:config. + let defaults = Services.prefs.getDefaultBranch(null); + defaults.setBoolPref("browser.safebrowsing.downloads.enabled", true); + defaults.setBoolPref("browser.safebrowsing.downloads.remote.enabled", true); + continue; + } + } + } + }); + } +}; + var ExternalApps = { _contextMenuId: null, // extend _getLink to pickup html5 media links. _getMediaLink: function(aElement) { let uri = NativeWindow.contextmenus._getLink(aElement); if (uri == null && aElement.nodeType == Ci.nsIDOMNode.ELEMENT_NODE && (aElement instanceof Ci.nsIDOMHTMLMediaElement)) { try {