diff options
23 files changed, 86 insertions, 318 deletions
diff --git a/application/basilisk/base/content/browser-addons.js b/application/basilisk/base/content/browser-addons.js index 1d881536a..733114ba9 100644 --- a/application/basilisk/base/content/browser-addons.js +++ b/application/basilisk/base/content/browser-addons.js @@ -145,10 +145,6 @@ const gXPInstallObserver = { for (let install of installInfo.installs) install.install(); installInfo = null; - - Services.telemetry - .getHistogramById("SECURITY_UI") - .add(Ci.nsISecurityUITelemetry.WARNING_CONFIRM_ADDON_INSTALL_CLICK_THROUGH); }; break; } @@ -208,10 +204,6 @@ const gXPInstallObserver = { options); removeNotificationOnEnd(popup, installInfo.installs); - - Services.telemetry - .getHistogramById("SECURITY_UI") - .add(Ci.nsISecurityUITelemetry.WARNING_CONFIRM_ADDON_INSTALL); }, observe: function (aSubject, aTopic, aData) @@ -262,8 +254,6 @@ const gXPInstallObserver = { messageString = gNavigatorBundle.getFormattedString("xpinstallPromptMessage", [brandShortName]); - let secHistogram = Components.classes["@mozilla.org/base/telemetry;1"].getService(Ci.nsITelemetry).getHistogramById("SECURITY_UI"); - secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_ADDON_ASKING_PREVENTED); let popup = PopupNotifications.show(browser, notificationID, messageString, anchorID, null, null, options); @@ -273,17 +263,14 @@ const gXPInstallObserver = { messageString = gNavigatorBundle.getFormattedString("xpinstallPromptMessage", [brandShortName]); - let secHistogram = Components.classes["@mozilla.org/base/telemetry;1"].getService(Ci.nsITelemetry).getHistogramById("SECURITY_UI"); action = { label: gNavigatorBundle.getString("xpinstallPromptAllowButton"), accessKey: gNavigatorBundle.getString("xpinstallPromptAllowButton.accesskey"), callback: function() { - secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_ADDON_ASKING_PREVENTED_CLICK_THROUGH); installInfo.install(); } }; - secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_ADDON_ASKING_PREVENTED); let popup = PopupNotifications.show(browser, notificationID, messageString, anchorID, action, null, options); diff --git a/application/basilisk/base/content/browser-syncui.js b/application/basilisk/base/content/browser-syncui.js index d0f46247a..f57472658 100644 --- a/application/basilisk/base/content/browser-syncui.js +++ b/application/basilisk/base/content/browser-syncui.js @@ -93,17 +93,25 @@ var gSyncUI = { document.getElementById("sync-setup-state").hidden = !needsSetup; document.getElementById("sync-syncnow-state").hidden = needsSetup; - if (!gBrowser) + if (!gBrowser) { return; + } let button = document.getElementById("sync-button"); - if (!button) + if (!button) { return; + } button.removeAttribute("status"); + this._updateLastSyncTime(); - if (needsSetup) + + if (needsSetup) { button.removeAttribute("tooltiptext"); + button.setAttribute("label", this._stringBundle.GetStringFromName("setupsync.label")); + } else { + button.setAttribute("label", this._stringBundle.GetStringFromName("syncnow.label")); + } }, @@ -117,6 +125,7 @@ var gSyncUI = { return; button.setAttribute("status", "active"); + button.setAttribute("label", this._stringBundle.GetStringFromName("syncing2.label")); }, onSyncDelay: function SUI_onSyncDelay() { @@ -281,11 +290,7 @@ var gSyncUI = { if (!syncButton) return; - let lastSync; - try { - lastSync = Services.prefs.getCharPref("services.sync.lastSync"); - } - catch (e) { }; + let lastSync = Services.prefs.getCharPref("services.sync.lastSync", ""); if (!lastSync || this._needsSetup()) { syncButton.removeAttribute("tooltiptext"); return; diff --git a/application/basilisk/base/content/browser.js b/application/basilisk/base/content/browser.js index 926a369dd..1dee19a1d 100644 --- a/application/basilisk/base/content/browser.js +++ b/application/basilisk/base/content/browser.js @@ -2808,15 +2808,10 @@ var BrowserOnClick = { }, onCertError: function (browser, elementId, isTopFrame, location, securityInfoAsString) { - let secHistogram = Services.telemetry.getHistogramById("SECURITY_UI"); let securityInfo; switch (elementId) { case "exceptionDialogButton": - if (isTopFrame) { - secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_BAD_CERT_TOP_CLICK_ADD_EXCEPTION); - } - securityInfo = getSecurityInfo(securityInfoAsString); let sslStatus = securityInfo.QueryInterface(Ci.nsISSLStatusProvider) .SSLStatus; @@ -2844,64 +2839,27 @@ var BrowserOnClick = { break; case "returnButton": - if (isTopFrame) { - secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_BAD_CERT_TOP_GET_ME_OUT_OF_HERE); - } goBackFromErrorPage(); break; - - case "advancedButton": - if (isTopFrame) { - secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_BAD_CERT_TOP_UNDERSTAND_RISKS); - } - - break; } }, onAboutBlocked: function (elementId, reason, isTopFrame, location) { // Depending on what page we are displaying here (malware/phishing/unwanted) // use the right strings and links for each. - let bucketName = ""; - let sendTelemetry = false; - if (reason === 'malware') { - sendTelemetry = true; - bucketName = "WARNING_MALWARE_PAGE_"; - } else if (reason === 'phishing') { - sendTelemetry = true; - bucketName = "WARNING_PHISHING_PAGE_"; - } else if (reason === 'unwanted') { - sendTelemetry = true; - bucketName = "WARNING_UNWANTED_PAGE_"; - } - let secHistogram = Services.telemetry.getHistogramById("SECURITY_UI"); - let nsISecTel = Ci.nsISecurityUITelemetry; - bucketName += isTopFrame ? "TOP_" : "FRAME_"; switch (elementId) { case "getMeOutButton": - if (sendTelemetry) { - secHistogram.add(nsISecTel[bucketName + "GET_ME_OUT_OF_HERE"]); - } getMeOutOfHere(); break; case "reportButton": // This is the "Why is this site blocked" button. We redirect // to the generic page describing phishing/malware protection. - - // We log even if malware/phishing/unwanted info URL couldn't be found: - // the measurement is for how many users clicked the WHY BLOCKED button - if (sendTelemetry) { - secHistogram.add(nsISecTel[bucketName + "WHY_BLOCKED"]); - } openHelpLink("phishing-malware", false, "current"); break; case "ignoreWarningButton": if (gPrefService.getBoolPref("browser.safebrowsing.allowOverride")) { - if (sendTelemetry) { - secHistogram.add(nsISecTel[bucketName + "IGNORE_WARNING"]); - } this.ignoreWarningButton(reason); } break; diff --git a/application/basilisk/fonts/TwemojiMozilla.ttf b/application/basilisk/fonts/TwemojiMozilla.ttf Binary files differindex 1933891d9..c47cbbf11 100644 --- a/application/basilisk/fonts/TwemojiMozilla.ttf +++ b/application/basilisk/fonts/TwemojiMozilla.ttf diff --git a/application/basilisk/modules/PermissionUI.jsm b/application/basilisk/modules/PermissionUI.jsm index 5fa0f9f06..5c8b94421 100644 --- a/application/basilisk/modules/PermissionUI.jsm +++ b/application/basilisk/modules/PermissionUI.jsm @@ -437,26 +437,12 @@ GeolocationPermissionPrompt.prototype = { }, get promptActions() { - // We collect Telemetry data on Geolocation prompts and how users - // respond to them. The probe keys are a bit verbose, so let's alias them. - const SHARE_LOCATION = - Ci.nsISecurityUITelemetry.WARNING_GEOLOCATION_REQUEST_SHARE_LOCATION; - const ALWAYS_SHARE = - Ci.nsISecurityUITelemetry.WARNING_GEOLOCATION_REQUEST_ALWAYS_SHARE; - const NEVER_SHARE = - Ci.nsISecurityUITelemetry.WARNING_GEOLOCATION_REQUEST_NEVER_SHARE; - - let secHistogram = Services.telemetry.getHistogramById("SECURITY_UI"); - let actions = [{ label: gBrowserBundle.GetStringFromName("geolocation.shareLocation"), accessKey: gBrowserBundle.GetStringFromName("geolocation.shareLocation.accesskey"), action: null, expireType: null, - callback: function() { - secHistogram.add(SHARE_LOCATION); - }, }]; if (!this.principal.URI.schemeIs("file")) { @@ -467,9 +453,6 @@ GeolocationPermissionPrompt.prototype = { gBrowserBundle.GetStringFromName("geolocation.alwaysShareLocation.accesskey"), action: Ci.nsIPermissionManager.ALLOW_ACTION, expireType: null, - callback: function() { - secHistogram.add(ALWAYS_SHARE); - }, }); // Never share location action. @@ -479,9 +462,6 @@ GeolocationPermissionPrompt.prototype = { gBrowserBundle.GetStringFromName("geolocation.neverShareLocation.accesskey"), action: Ci.nsIPermissionManager.DENY_ACTION, expireType: null, - callback: function() { - secHistogram.add(NEVER_SHARE); - }, }); } @@ -489,9 +469,6 @@ GeolocationPermissionPrompt.prototype = { }, onBeforeShow() { - let secHistogram = Services.telemetry.getHistogramById("SECURITY_UI"); - const SHOW_REQUEST = Ci.nsISecurityUITelemetry.WARNING_GEOLOCATION_REQUEST; - secHistogram.add(SHOW_REQUEST); }, }; diff --git a/application/palemoon/base/content/browser-syncui.js b/application/palemoon/base/content/browser-syncui.js index 6fad03cdd..86f6f48f1 100644 --- a/application/palemoon/base/content/browser-syncui.js +++ b/application/palemoon/base/content/browser-syncui.js @@ -93,17 +93,25 @@ var gSyncUI = { document.getElementById("sync-setup-state").hidden = !needsSetup; document.getElementById("sync-syncnow-state").hidden = needsSetup; - if (!gBrowser) + if (!gBrowser) { return; + } let button = document.getElementById("sync-button"); - if (!button) + if (!button) { return; + } button.removeAttribute("status"); + this._updateLastSyncTime(); - if (needsSetup) + + if (needsSetup) { button.removeAttribute("tooltiptext"); + button.setAttribute("label", this._stringBundle.GetStringFromName("setupsync.label")); + } else { + button.setAttribute("label", this._stringBundle.GetStringFromName("syncnow.label")); + } }, @@ -117,6 +125,7 @@ var gSyncUI = { return; button.setAttribute("status", "active"); + button.setAttribute("label", this._stringBundle.GetStringFromName("syncing2.label")); }, onSyncDelay: function SUI_onSyncDelay() { @@ -282,7 +291,7 @@ var gSyncUI = { if (!syncButton) return; - let lastSync = Services.prefs.getCharPref("services.sync.lastSync"); + let lastSync = Services.prefs.getCharPref("services.sync.lastSync", ""); if (!lastSync || this._needsSetup()) { syncButton.removeAttribute("tooltiptext"); return; diff --git a/application/palemoon/config/version.txt b/application/palemoon/config/version.txt index dc6d77132..b5df67405 100644 --- a/application/palemoon/config/version.txt +++ b/application/palemoon/config/version.txt @@ -1 +1 @@ -28.5.0a1
\ No newline at end of file +28.5.0a2
\ No newline at end of file diff --git a/application/palemoon/fonts/TwemojiMozilla.ttf b/application/palemoon/fonts/TwemojiMozilla.ttf Binary files differindex 8139089f1..c47cbbf11 100644 --- a/application/palemoon/fonts/TwemojiMozilla.ttf +++ b/application/palemoon/fonts/TwemojiMozilla.ttf diff --git a/config/milestone.txt b/config/milestone.txt index f525cbbb4..7aab8cfcb 100644 --- a/config/milestone.txt +++ b/config/milestone.txt @@ -10,4 +10,4 @@ # hardcoded milestones in the tree from these two files. #-------------------------------------------------------- -4.1.10 +4.2.0 diff --git a/devtools/shared/css/lexer.js b/devtools/shared/css/lexer.js index 9013b63ea..192fa95b3 100644 --- a/devtools/shared/css/lexer.js +++ b/devtools/shared/css/lexer.js @@ -1067,6 +1067,7 @@ Scanner.prototype = { // aToken.mIdent may be "url" at this point; clear that out aToken.mIdent.length = 0; + let hasString = false; let ch = this.Peek(); // Do we have a string? if (ch == QUOTATION_MARK || ch == APOSTROPHE) { @@ -1075,6 +1076,7 @@ Scanner.prototype = { aToken.mType = eCSSToken_Bad_URL; return; } + hasString = true; } else { // Otherwise, this is the start of a non-quoted url (which may be empty). aToken.mSymbol = 0; @@ -1093,6 +1095,25 @@ Scanner.prototype = { } } else { aToken.mType = eCSSToken_Bad_URL; + if (!hasString) { + // Consume until before the next right parenthesis, which follows + // how <bad-url-token> is consumed in CSS Syntax 3 spec. + // Note that, we only do this when "url(" is not followed by a + // string, because in the spec, "url(" followed by a string is + // handled as a url function rather than a <url-token>, so the + // rest of content before ")" should be consumed in balance, + // which will be done by the parser. + // The closing ")" is not consumed here. It is left to the parser + // so that the parser can handle both cases. + do { + if (IsVertSpace(ch)) { + this.AdvanceLine(); + } else { + this.Advance(); + } + ch = this.Peek(); + } while (ch >= 0 && ch != RIGHT_PARENTHESIS); + } } }, diff --git a/devtools/shared/tests/unit/test_csslexer.js b/devtools/shared/tests/unit/test_csslexer.js index 35855640b..b2dfdf5aa 100644 --- a/devtools/shared/tests/unit/test_csslexer.js +++ b/devtools/shared/tests/unit/test_csslexer.js @@ -128,8 +128,7 @@ var LEX_TESTS = [ ["url:http://example.com"]], // In CSS Level 3, this is an ordinary URL, not a BAD_URL. ["url(http://example.com", ["url:http://example.com"]], - // See bug 1153981 to understand why this gets a SYMBOL token. - ["url(http://example.com @", ["bad_url:http://example.com", "symbol:@"]], + ["url(http://example.com @", ["bad_url:http://example.com"]], ["quo\\ting", ["ident:quoting"]], ["'bad string\n", ["bad_string:bad string", "whitespace"]], ["~=", ["includes"]], diff --git a/layout/reftests/css-parsing/invalid-url-handling.xhtml b/layout/reftests/css-parsing/invalid-url-handling.xhtml index da1709b01..e6b85a81c 100644 --- a/layout/reftests/css-parsing/invalid-url-handling.xhtml +++ b/layout/reftests/css-parsing/invalid-url-handling.xhtml @@ -22,17 +22,16 @@ #two { background-color: green; } </style> <style type="text/css"> - /* not a URI token; the unterminated string ends at end of line, so - the brace never matches */ - #three { background-color: green; } + /* not a URI token; bad-url token is consumed until the first closing ) */ #foo { background: url(foo"bar) } - #three { background-color: red; } + #three { background-color: green; } </style> <style type="text/css"> - /* not a URI token; the unterminated string ends at end of line */ + /* not a URI token; bad-url token is consumed until the first closing ) */ + #four { background-color: green; } #foo { background: url(foo"bar) } ) } - #four { background-color: green; } + #four { background-color: red; } </style> <style type="text/css"> /* not a URI token; the unterminated string ends at end of line, so @@ -68,18 +67,19 @@ #eleven { background: url([) green; } </style> <style type="text/css"> - /* not a URI token; brace matching should work only after invalid URI token */ - #twelve { background: url(}{""{)}); background-color: green; } + /* not a URI token; bad-url token is consumed until the first closing ) + so the brace immediately after it closes the declaration block */ + #twelve { background-color: green; } + #twelve { background: url(}{""{)}); background-color: red; } </style> <style type="text/css"> /* invalid URI token absorbs the [ */ #thirteen { background: url([""); background-color: green; } </style> <style type="text/css"> - /* not a URI token; the opening ( is never matched */ - #fourteen { background-color: green; } + /* not a URI token; bad-url token is consumed until the first closing ) */ #foo { background: url(() } - #fourteen { background-color: red; } + #fourteen { background-color: green; } </style> <!-- The next three tests test that invalid URI tokens absorb [ and { --> <style type="text/css"> diff --git a/layout/style/nsCSSScanner.cpp b/layout/style/nsCSSScanner.cpp index 771c8936b..2110be78c 100644 --- a/layout/style/nsCSSScanner.cpp +++ b/layout/style/nsCSSScanner.cpp @@ -1164,6 +1164,7 @@ nsCSSScanner::NextURL(nsCSSToken& aToken) // aToken.mIdent may be "url" at this point; clear that out aToken.mIdent.Truncate(); + bool hasString = false; int32_t ch = Peek(); // Do we have a string? if (ch == '"' || ch == '\'') { @@ -1173,7 +1174,7 @@ nsCSSScanner::NextURL(nsCSSToken& aToken) return; } MOZ_ASSERT(aToken.mType == eCSSToken_String, "unexpected token type"); - + hasString = true; } else { // Otherwise, this is the start of a non-quoted url (which may be empty). aToken.mSymbol = char16_t(0); @@ -1193,6 +1194,25 @@ nsCSSScanner::NextURL(nsCSSToken& aToken) } else { mSeenBadToken = true; aToken.mType = eCSSToken_Bad_URL; + if (!hasString) { + // Consume until before the next right parenthesis, which follows + // how <bad-url-token> is consumed in CSS Syntax 3 spec. + // Note that, we only do this when "url(" is not followed by a + // string, because in the spec, "url(" followed by a string is + // handled as a url function rather than a <url-token>, so the + // rest of content before ")" should be consumed in balance, + // which will be done by the parser. + // The closing ")" is not consumed here. It is left to the parser + // so that the parser can handle both cases. + do { + if (IsVertSpace(ch)) { + AdvanceLine(); + } else { + Advance(); + } + ch = Peek(); + } while (ch >= 0 && ch != ')'); + } } } diff --git a/layout/style/test/test_csslexer.js b/layout/style/test/test_csslexer.js index a71c02d8f..4ba3b9c5c 100644 --- a/layout/style/test/test_csslexer.js +++ b/layout/style/test/test_csslexer.js @@ -55,8 +55,7 @@ var LEX_TESTS = [ ["url:http://example.com"]], // In CSS Level 3, this is an ordinary URL, not a BAD_URL. ["url(http://example.com", ["url:http://example.com"]], - // See bug 1153981 to understand why this gets a SYMBOL token. - ["url(http://example.com @", ["bad_url:http://example.com", "symbol:@"]], + ["url(http://example.com @", ["bad_url:http://example.com"]], ["quo\\ting", ["ident:quoting"]], ["'bad string\n", ["bad_string:bad string", "whitespace"]], ["~=", ["includes"]], diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 93eb2addc..535f7e607 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -4704,46 +4704,18 @@ var ErrorPageEventHandler = { // The event came from a button on a malware/phishing block page // First check whether it's malware, phishing or unwanted, so that we // can use the right strings/links - let bucketName = ""; - let sendTelemetry = false; - if (errorDoc.documentURI.includes("e=malwareBlocked")) { - sendTelemetry = true; - bucketName = "WARNING_MALWARE_PAGE_"; - } else if (errorDoc.documentURI.includes("e=deceptiveBlocked")) { - sendTelemetry = true; - bucketName = "WARNING_PHISHING_PAGE_"; - } else if (errorDoc.documentURI.includes("e=unwantedBlocked")) { - sendTelemetry = true; - bucketName = "WARNING_UNWANTED_PAGE_"; - } - let nsISecTel = Ci.nsISecurityUITelemetry; let isIframe = (errorDoc.defaultView.parent === errorDoc.defaultView); - bucketName += isIframe ? "TOP_" : "FRAME_"; - let formatter = Cc["@mozilla.org/toolkit/URLFormatterService;1"].getService(Ci.nsIURLFormatter); if (target == errorDoc.getElementById("getMeOutButton")) { - if (sendTelemetry) { - Telemetry.addData("SECURITY_UI", nsISecTel[bucketName + "GET_ME_OUT_OF_HERE"]); - } errorDoc.location = "about:home"; } else if (target == errorDoc.getElementById("reportButton")) { - // We log even if malware/phishing info URL couldn't be found: - // the measurement is for how many users clicked the WHY BLOCKED button - if (sendTelemetry) { - Telemetry.addData("SECURITY_UI", nsISecTel[bucketName + "WHY_BLOCKED"]); - } - // This is the "Why is this site blocked" button. We redirect // to the generic page describing phishing/malware protection. let url = Services.urlFormatter.formatURLPref("app.support.baseURL"); BrowserApp.selectedBrowser.loadURI(url + "phishing-malware"); } else if (target == errorDoc.getElementById("ignoreWarningButton") && Services.prefs.getBoolPref("browser.safebrowsing.allowOverride")) { - if (sendTelemetry) { - Telemetry.addData("SECURITY_UI", nsISecTel[bucketName + "IGNORE_WARNING"]); - } - // Allow users to override and continue through to the site, let webNav = BrowserApp.selectedBrowser.docShell.QueryInterface(Ci.nsIWebNavigation); let location = BrowserApp.selectedBrowser.contentWindow.location; diff --git a/security/manager/pki/resources/content/exceptionDialog.js b/security/manager/pki/resources/content/exceptionDialog.js index 0ca24a614..c106cdbf5 100644 --- a/security/manager/pki/resources/content/exceptionDialog.js +++ b/security/manager/pki/resources/content/exceptionDialog.js @@ -12,8 +12,6 @@ var gCert; var gChecking; var gBroken; var gNeedReset; -var gSecHistogram; -var gNsISecTel; Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm"); @@ -49,10 +47,6 @@ function initExceptionDialog() { gDialog = document.documentElement; gBundleBrand = document.getElementById("brand_bundle"); gPKIBundle = document.getElementById("pippki_bundle"); - gSecHistogram = Components.classes["@mozilla.org/base/telemetry;1"]. - getService(Components.interfaces.nsITelemetry). - getHistogramById("SECURITY_UI"); - gNsISecTel = Components.interfaces.nsISecurityUITelemetry; var brandName = gBundleBrand.getString("brandShortName"); setText("warningText", gPKIBundle.getFormattedString("addExceptionBrandedWarning2", [brandName])); @@ -190,7 +184,6 @@ function updateCertStatus() { var shortDesc3, longDesc3; var use2 = false; var use3 = false; - let bucketId = gNsISecTel.WARNING_BAD_CERT_TOP_ADD_EXCEPTION_BASE; if (gCert) { if (gBroken) { var mms = "addExceptionDomainMismatchShort"; @@ -201,13 +194,11 @@ function updateCertStatus() { var utl = "addExceptionUnverifiedOrBadSignatureLong2"; var use1 = false; if (gSSLStatus.isDomainMismatch) { - bucketId += gNsISecTel.WARNING_BAD_CERT_TOP_ADD_EXCEPTION_FLAG_DOMAIN; use1 = true; shortDesc = mms; longDesc = mml; } if (gSSLStatus.isNotValidAtThisTime) { - bucketId += gNsISecTel.WARNING_BAD_CERT_TOP_ADD_EXCEPTION_FLAG_TIME; if (!use1) { use1 = true; shortDesc = exs; @@ -220,7 +211,6 @@ function updateCertStatus() { } } if (gSSLStatus.isUntrusted) { - bucketId += gNsISecTel.WARNING_BAD_CERT_TOP_ADD_EXCEPTION_FLAG_UNTRUSTED; if (!use1) { use1 = true; shortDesc = uts; @@ -235,7 +225,6 @@ function updateCertStatus() { longDesc3 = utl; } } - gSecHistogram.add(bucketId); // In these cases, we do want to enable the "Add Exception" button gDialog.getButton("extra1").disabled = false; @@ -307,7 +296,6 @@ function updateCertStatus() { * Handle user request to display certificate details */ function viewCertButtonClick() { - gSecHistogram.add(gNsISecTel.WARNING_BAD_CERT_TOP_CLICK_VIEW_CERT); if (gCert) { viewCertHelper(this, gCert); } @@ -324,27 +312,19 @@ function addException() { var overrideService = Components.classes["@mozilla.org/security/certoverride;1"] .getService(Components.interfaces.nsICertOverrideService); var flags = 0; - let confirmBucketId = gNsISecTel.WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_BASE; if (gSSLStatus.isUntrusted) { flags |= overrideService.ERROR_UNTRUSTED; - confirmBucketId += gNsISecTel.WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_FLAG_UNTRUSTED; } if (gSSLStatus.isDomainMismatch) { flags |= overrideService.ERROR_MISMATCH; - confirmBucketId += gNsISecTel.WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_FLAG_DOMAIN; } if (gSSLStatus.isNotValidAtThisTime) { flags |= overrideService.ERROR_TIME; - confirmBucketId += gNsISecTel.WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_FLAG_TIME; } var permanentCheckbox = document.getElementById("permanent"); var shouldStorePermanently = permanentCheckbox.checked && !inPrivateBrowsingMode(); - if (!permanentCheckbox.checked) { - gSecHistogram.add(gNsISecTel.WARNING_BAD_CERT_TOP_DONT_REMEMBER_EXCEPTION); - } - gSecHistogram.add(confirmBucketId); var uri = getURI(); overrideService.rememberValidityOverride( uri.asciiHost, uri.port, diff --git a/security/manager/ssl/moz.build b/security/manager/ssl/moz.build index 8c8d25dcc..94d766a0b 100644 --- a/security/manager/ssl/moz.build +++ b/security/manager/ssl/moz.build @@ -32,7 +32,6 @@ XPIDL_SOURCES += [ 'nsIPKCS11Slot.idl', 'nsIProtectedAuthThread.idl', 'nsISecretDecoderRing.idl', - 'nsISecurityUITelemetry.idl', 'nsISiteSecurityService.idl', 'nsISSLStatus.idl', 'nsISSLStatusProvider.idl', diff --git a/security/manager/ssl/nsISecurityUITelemetry.idl b/security/manager/ssl/nsISecurityUITelemetry.idl deleted file mode 100644 index 05d3473ad..000000000 --- a/security/manager/ssl/nsISecurityUITelemetry.idl +++ /dev/null @@ -1,150 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * - * 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/. */ - -#include "nsISupports.idl" - -[scriptable, uuid(5d1acf82-223a-46fb-a8f3-a1b16e2ceb04)] - -interface nsISecurityUITelemetry : nsISupports { - -/* - * Addon installation warnings - */ - -// Firefox prevented this site from asking you to install addon -const uint32_t WARNING_ADDON_ASKING_PREVENTED = 1; -// User clicks through and allows site to ask to install addons -const uint32_t WARNING_ADDON_ASKING_PREVENTED_CLICK_THROUGH = 2; -// Are you sure you want to install this addon? Only install addons you trust -const uint32_t WARNING_CONFIRM_ADDON_INSTALL = 3; -// User clicked she is sure after waiting 3secs -const uint32_t WARNING_CONFIRM_ADDON_INSTALL_CLICK_THROUGH = 4; - - -/* - * modal dialogs/warnings - */ - -// removed WARNING_ENTERING_SECURE_SITE = 5; -// removed WARNING_ENTERING_WEAK_SITE = 6; -// removed WARNING_LEAVING_SECURE_SITE = 7; -// removed WARNING_MIXED_CONTENT = 8; - -// For confirmation dialogs, the clickthrough constant needs to be 1 -// more than the dialog constant so that -// WARNING_CONFIRM_<X> + 1 == WARNING_CONFIRM_<X>_CLICK_THROUGH -const uint32_t WARNING_CONFIRM_POST_TO_INSECURE_FROM_SECURE = 9; -const uint32_t WARNING_CONFIRM_POST_TO_INSECURE_FROM_SECURE_CLICK_THROUGH = 10; -// removed WARNING_CONFIRM_POST_TO_INSECURE_FROM_INSECURE = 11; -// removed WARNING_CONFIRM_POST_TO_INSECURE_FROM_INSECURE_CLICK_THROUGH = 12; - -/* - * Phishing / Malware page warnings - * deprecated: we use the _TOP and _FRAME versions below - */ - -const uint32_t WARNING_MALWARE_PAGE = 13; -const uint32_t WARNING_MALWARE_PAGE_WHY_BLOCKED = 14; -const uint32_t WARNING_MALWARE_PAGE_GET_ME_OUT_OF_HERE = 15; -const uint32_t WARNING_MALWARE_PAGE_IGNORE_WARNING = 16; - -const uint32_t WARNING_PHISHING_PAGE = 17; -const uint32_t WARNING_PHISHING_PAGE_WHY_BLOCKED = 18; -const uint32_t WARNING_PHISHING_PAGE_GET_ME_OUT_OF_HERE = 19; -const uint32_t WARNING_PHISHING_PAGE_IGNORE_WARNING = 20; - -/* - * SSL Error dialogs - * deprecated: we use the _TOP versions below - */ - -const uint32_t WARNING_BAD_CERT = 21; -const uint32_t WARNING_BAD_CERT_STS = 22; -const uint32_t WARNING_BAD_CERT_CLICK_ADD_EXCEPTION = 23; -const uint32_t WARNING_BAD_CERT_CLICK_VIEW_CERT = 24; -const uint32_t WARNING_BAD_CERT_DONT_REMEMBER_EXCEPTION = 25; -const uint32_t WARNING_BAD_CERT_GET_ME_OUT_OF_HERE = 27; -const uint32_t WARNING_BAD_CERT_UNDERSTAND_RISKS = 28; -const uint32_t WARNING_BAD_CERT_TECHINICAL_DETAILS = 29; - -/* - * Note that if we add more possibilities in the warning dialogs, - * it is a new experiment and we shouldn't reuse these buckets. - */ -const uint32_t WARNING_BAD_CERT_ADD_EXCEPTION_BASE = 30; -const uint32_t WARNING_BAD_CERT_ADD_EXCEPTION_FLAG_UNTRUSTED = 1; -const uint32_t WARNING_BAD_CERT_ADD_EXCEPTION_FLAG_DOMAIN = 2; -const uint32_t WARNING_BAD_CERT_ADD_EXCEPTION_FLAG_TIME = 4; - -const uint32_t WARNING_BAD_CERT_CONFIRM_ADD_EXCEPTION_BASE = 38; -const uint32_t WARNING_BAD_CERT_CONFIRM_ADD_EXCEPTION_FLAG_UNTRUSTED = 1; -const uint32_t WARNING_BAD_CERT_CONFIRM_ADD_EXCEPTION_FLAG_DOMAIN = 2; -const uint32_t WARNING_BAD_CERT_CONFIRM_ADD_EXCEPTION_FLAG_TIME = 4; -// This uses up buckets till 45 - -/* - * Geolocation Popup Telemetry - */ - -const uint32_t WARNING_GEOLOCATION_REQUEST = 46; -const uint32_t WARNING_GEOLOCATION_REQUEST_SHARE_LOCATION = 47; -const uint32_t WARNING_GEOLOCATION_REQUEST_ALWAYS_SHARE = 48; -const uint32_t WARNING_GEOLOCATION_REQUEST_NEVER_SHARE = 49; -// It would be nice to measure the two cases of user clicking -// "not now", and user closing the popup. This is currently not implemented. - -const uint32_t WARNING_MALWARE_PAGE_TOP = 52; -const uint32_t WARNING_MALWARE_PAGE_TOP_WHY_BLOCKED = 53; -const uint32_t WARNING_MALWARE_PAGE_TOP_GET_ME_OUT_OF_HERE = 54; -const uint32_t WARNING_MALWARE_PAGE_TOP_IGNORE_WARNING = 55; - -const uint32_t WARNING_PHISHING_PAGE_TOP = 56; -const uint32_t WARNING_PHISHING_PAGE_TOP_WHY_BLOCKED = 57; -const uint32_t WARNING_PHISHING_PAGE_TOP_GET_ME_OUT_OF_HERE = 58; -const uint32_t WARNING_PHISHING_PAGE_TOP_IGNORE_WARNING = 59; - -const uint32_t WARNING_MALWARE_PAGE_FRAME = 60; -const uint32_t WARNING_MALWARE_PAGE_FRAME_WHY_BLOCKED = 61; -const uint32_t WARNING_MALWARE_PAGE_FRAME_GET_ME_OUT_OF_HERE = 62; -const uint32_t WARNING_MALWARE_PAGE_FRAME_IGNORE_WARNING = 63; - -const uint32_t WARNING_PHISHING_PAGE_FRAME = 64; -const uint32_t WARNING_PHISHING_PAGE_FRAME_WHY_BLOCKED = 65; -const uint32_t WARNING_PHISHING_PAGE_FRAME_GET_ME_OUT_OF_HERE = 66; -const uint32_t WARNING_PHISHING_PAGE_FRAME_IGNORE_WARNING = 67; - -const uint32_t WARNING_BAD_CERT_TOP = 68; -const uint32_t WARNING_BAD_CERT_TOP_STS = 69; -const uint32_t WARNING_BAD_CERT_TOP_CLICK_ADD_EXCEPTION = 70; -const uint32_t WARNING_BAD_CERT_TOP_CLICK_VIEW_CERT = 71; -const uint32_t WARNING_BAD_CERT_TOP_DONT_REMEMBER_EXCEPTION = 72; -const uint32_t WARNING_BAD_CERT_TOP_GET_ME_OUT_OF_HERE = 73; -const uint32_t WARNING_BAD_CERT_TOP_UNDERSTAND_RISKS = 74; -// removed WARNING_BAD_CERT_TOP_TECHNICAL_DETAILS = 75; - -const uint32_t WARNING_BAD_CERT_TOP_ADD_EXCEPTION_BASE = 76; -const uint32_t WARNING_BAD_CERT_TOP_ADD_EXCEPTION_FLAG_UNTRUSTED = 1; -const uint32_t WARNING_BAD_CERT_TOP_ADD_EXCEPTION_FLAG_DOMAIN = 2; -const uint32_t WARNING_BAD_CERT_TOP_ADD_EXCEPTION_FLAG_TIME = 4; - -const uint32_t WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_BASE = 84; -const uint32_t WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_FLAG_UNTRUSTED = 1; -const uint32_t WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_FLAG_DOMAIN = 2; -const uint32_t WARNING_BAD_CERT_TOP_CONFIRM_ADD_EXCEPTION_FLAG_TIME = 4; - -// Another Safe Browsing list (like malware & phishing above) -const uint32_t WARNING_UNWANTED_PAGE_TOP = 92; -const uint32_t WARNING_UNWANTED_PAGE_TOP_WHY_BLOCKED = 93; -const uint32_t WARNING_UNWANTED_PAGE_TOP_GET_ME_OUT_OF_HERE = 94; -const uint32_t WARNING_UNWANTED_PAGE_TOP_IGNORE_WARNING = 95; -const uint32_t WARNING_UNWANTED_PAGE_FRAME = 96; -const uint32_t WARNING_UNWANTED_PAGE_FRAME_WHY_BLOCKED = 97; -const uint32_t WARNING_UNWANTED_PAGE_FRAME_GET_ME_OUT_OF_HERE = 98; -const uint32_t WARNING_UNWANTED_PAGE_FRAME_IGNORE_WARNING = 99; - -// This uses up buckets till 99 (including) -// We only have buckets up to 100. -}; diff --git a/services/sync/locales/en-US/sync.properties b/services/sync/locales/en-US/sync.properties index 93369dd37..af40e125a 100644 --- a/services/sync/locales/en-US/sync.properties +++ b/services/sync/locales/en-US/sync.properties @@ -52,3 +52,4 @@ sync.eol.learnMore.accesskey = L syncnow.label = Sync Now syncing2.label = Syncing… +setupsync.label = Set Up Sync diff --git a/toolkit/components/viewsource/content/viewSource-content.js b/toolkit/components/viewsource/content/viewSource-content.js index 70d23eaa4..bad90febf 100644 --- a/toolkit/components/viewsource/content/viewSource-content.js +++ b/toolkit/components/viewsource/content/viewSource-content.js @@ -128,8 +128,7 @@ var ViewSourceContent = { let objects = msg.objects; switch (msg.name) { case "ViewSource:LoadSource": - this.viewSource(data.URL, data.outerWindowID, data.lineNumber, - data.shouldWrap); + this.viewSource(data.URL, data.outerWindowID, data.lineNumber); break; case "ViewSource:LoadSourceOriginal": this.viewSourceOriginal(data.URL, objects.pageDescriptor, data.lineNumber, diff --git a/toolkit/modules/UpdateUtils.jsm b/toolkit/modules/UpdateUtils.jsm index fed7c7637..4e796a2da 100644 --- a/toolkit/modules/UpdateUtils.jsm +++ b/toolkit/modules/UpdateUtils.jsm @@ -31,9 +31,9 @@ this.UpdateUtils = { * Whether or not to include the partner bits. Default: true. */ getUpdateChannel(aIncludePartners = true) { + let defaults = Services.prefs.getDefaultBranch(null); let channel = defaults.getCharPref("app.update.channel", AppConstants.MOZ_UPDATE_CHANNEL); - let defaults = Services.prefs.getDefaultBranch(null); if (aIncludePartners) { try { diff --git a/toolkit/mozapps/extensions/amWebInstallListener.js b/toolkit/mozapps/extensions/amWebInstallListener.js index 088f56640..9b9c53f44 100644 --- a/toolkit/mozapps/extensions/amWebInstallListener.js +++ b/toolkit/mozapps/extensions/amWebInstallListener.js @@ -172,10 +172,6 @@ Installer.prototype = { args.wrappedJSObject = args; try { - Cc["@mozilla.org/base/telemetry;1"]. - getService(Ci.nsITelemetry). - getHistogramById("SECURITY_UI"). - add(Ci.nsISecurityUITelemetry.WARNING_CONFIRM_ADDON_INSTALL); let parentWindow = null; if (this.browser) { parentWindow = this.browser.ownerDocument.defaultView; diff --git a/toolkit/mozapps/extensions/content/xpinstallConfirm.js b/toolkit/mozapps/extensions/content/xpinstallConfirm.js index 5660cdaaf..29be5f5e9 100644 --- a/toolkit/mozapps/extensions/content/xpinstallConfirm.js +++ b/toolkit/mozapps/extensions/content/xpinstallConfirm.js @@ -179,10 +179,6 @@ XPInstallConfirm.init = function() XPInstallConfirm.onOK = function() { - Components.classes["@mozilla.org/base/telemetry;1"]. - getService(Components.interfaces.nsITelemetry). - getHistogramById("SECURITY_UI"). - add(Components.interfaces.nsISecurityUITelemetry.WARNING_CONFIRM_ADDON_INSTALL_CLICK_THROUGH); // Perform the install or cancel after the window has unloaded XPInstallConfirm._installOK = true; return true; |