--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -708,19 +708,16 @@ pref("accessibility.support.url", "https
pref("accessibility.indicator.enabled", false);
pref("plugins.click_to_play", true);
pref("plugins.testmode", false);
// Should plugins that are hidden show the infobar UI?
pref("plugins.show_infobar", false);
-// Should dismissing the hidden plugin infobar suppress it permanently?
-pref("plugins.remember_infobar_dismissal", true);
-
pref("plugin.default.state", 1);
// Plugins bundled in XPIs are enabled by default.
pref("plugin.defaultXpi.state", 2);
// Java is Click-to-Activate by default on all channels.
pref("plugin.state.java", 1);
--- a/browser/base/content/browser-plugins.js
+++ b/browser/base/content/browser-plugins.js
@@ -1,23 +1,20 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 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/. */
var gPluginHandler = {
PREF_SESSION_PERSIST_MINUTES: "plugin.sessionPermissionNow.intervalInMinutes",
PREF_PERSISTENT_DAYS: "plugin.persistentPermissionAlways.intervalInDays",
- PREF_SHOW_INFOBAR: "plugins.show_infobar",
- PREF_INFOBAR_DISMISSAL_PERMANENT: "plugins.remember_infobar_dismissal",
MESSAGES: [
"PluginContent:ShowClickToPlayNotification",
"PluginContent:RemoveNotification",
- "PluginContent:UpdateHiddenPluginUI",
"PluginContent:HideNotificationBar",
"PluginContent:InstallSinglePlugin",
"PluginContent:ShowPluginCrashedNotification",
"PluginContent:SubmitReport",
"PluginContent:LinkClickCallback",
],
init() {
@@ -46,21 +43,16 @@ var gPluginHandler = {
switch (msg.name) {
case "PluginContent:ShowClickToPlayNotification":
this.showClickToPlayNotification(msg.target, msg.data.plugins, msg.data.showNow,
msg.principal, msg.data.location);
break;
case "PluginContent:RemoveNotification":
this.removeNotification(msg.target, msg.data.name);
break;
- case "PluginContent:UpdateHiddenPluginUI":
- this.updateHiddenPluginUI(msg.target, msg.data.haveInsecure, msg.data.actions,
- msg.principal, msg.data.location)
- .catch(Cu.reportError);
- break;
case "PluginContent:HideNotificationBar":
this.hideNotificationBar(msg.target, msg.data.name);
break;
case "PluginContent:InstallSinglePlugin":
this.installSinglePlugin(msg.data.pluginInfo);
break;
case "PluginContent:ShowPluginCrashedNotification":
this.showPluginCrashedNotification(msg.target, msg.data.messageString,
@@ -291,17 +283,16 @@ var gPluginHandler = {
}
if (notification) {
// Don't modify the notification UI while it's on the screen, that would be
// jumpy and might allow clickjacking.
if (showNow) {
notification.options.primaryPlugin = primaryPluginPermission;
notification.reshow();
- browser.messageManager.sendAsyncMessage("BrowserPlugins:NotificationShown");
}
return;
}
if (plugins.length == 1) {
let pluginInfo = plugins[0];
// If a block contains an infoURL, we should always prefer that to the default
// URL that we construct in-product, even for other blocklist types.
@@ -391,17 +382,16 @@ var gPluginHandler = {
accessKey: gNavigatorBundle.getString("flashActivate.noAllow.accesskey"),
dismiss: true,
}];
}
PopupNotifications.show(browser, "click-to-play-plugins",
description, "plugins-notification-icon",
mainAction, secondaryActions, options);
- browser.messageManager.sendAsyncMessage("BrowserPlugins:NotificationShown");
} else {
this.removeNotification(browser, "click-to-play-plugins");
}
},
removeNotification(browser, name) {
let notification = PopupNotifications.getNotification(name, browser);
if (notification)
@@ -410,185 +400,16 @@ var gPluginHandler = {
hideNotificationBar(browser, name) {
let notificationBox = gBrowser.getNotificationBox(browser);
let notification = notificationBox.getNotificationWithValue(name);
if (notification)
notificationBox.removeNotification(notification, true);
},
- infobarBlockedForURI(uri) {
- return new Promise((resolve, reject) => {
- let tableName = Services.prefs.getStringPref("urlclassifier.flashInfobarTable", "");
- if (!tableName) {
- resolve(false);
- }
- let classifier = Cc["@mozilla.org/url-classifier/dbservice;1"]
- .getService(Ci.nsIURIClassifier);
- classifier.asyncClassifyLocalWithTables(uri, tableName, (c, list) => {
- resolve(list.length > 0);
- });
- });
- },
-
- async updateHiddenPluginUI(browser, haveInsecure, actions,
- principal, location) {
- let origin = principal.originNoSuffix;
-
- let shouldShowNotification = !(await this.infobarBlockedForURI(browser.documentURI));
-
- // It is possible that we've received a message from the frame script to show
- // the hidden plugin notification for a principal that no longer matches the one
- // that the browser's content now has assigned (ie, the browser has browsed away
- // after the message was sent, but before the message was received). In that case,
- // we should just ignore the message.
- if (!principal.equals(browser.contentPrincipal)) {
- return;
- }
-
- // Data URIs, when linked to from some page, inherit the principal of that
- // page. That means that we also need to compare the actual locations to
- // ensure we aren't getting a message from a Data URI that we're no longer
- // looking at.
- let receivedURI = Services.io.newURI(location);
- if (!browser.documentURI.equalsExceptRef(receivedURI)) {
- return;
- }
-
- // Set up the icon
- document.getElementById("plugins-notification-icon").classList.
- toggle("plugin-blocked", haveInsecure);
-
- // Now configure the notification bar
- let notificationBox = gBrowser.getNotificationBox(browser);
-
- function hideNotification() {
- let n = notificationBox.getNotificationWithValue("plugin-hidden");
- if (n) {
- notificationBox.removeNotification(n, true);
- }
- }
-
- // There are three different cases when showing an infobar:
- // 1. A single type of plugin is hidden on the page. Show the UI for that
- // plugin.
- // 2a. Multiple types of plugins are hidden on the page. Show the multi-UI
- // with the vulnerable styling.
- // 2b. Multiple types of plugins are hidden on the page, but none are
- // vulnerable. Show the nonvulnerable multi-UI.
- function showNotification() {
- if (!Services.prefs.getBoolPref(gPluginHandler.PREF_SHOW_INFOBAR, true)) {
- return;
- }
-
- let n = notificationBox.getNotificationWithValue("plugin-hidden");
- if (n) {
- // If something is already shown, just keep it
- return;
- }
-
- Services.telemetry.getHistogramById("PLUGINS_INFOBAR_SHOWN").
- add(true);
-
- let message;
- // Icons set directly cannot be manipulated using moz-image-region, so
- // we use CSS classes instead.
- let brand = document.getElementById("bundle_brand").getString("brandShortName");
-
- if (actions.length == 1) {
- let pluginInfo = actions[0];
- let pluginName = pluginInfo.pluginName;
-
- switch (pluginInfo.fallbackType) {
- case Ci.nsIObjectLoadingContent.PLUGIN_CLICK_TO_PLAY:
- case Ci.nsIObjectLoadingContent.PLUGIN_CLICK_TO_PLAY_QUIET:
- message = gNavigatorBundle.getFormattedString(
- "pluginActivationWarning.message",
- [brand]);
- break;
- case Ci.nsIObjectLoadingContent.PLUGIN_VULNERABLE_UPDATABLE:
- message = gNavigatorBundle.getFormattedString(
- "pluginActivateOutdated.message",
- [pluginName, origin, brand]);
- break;
- case Ci.nsIObjectLoadingContent.PLUGIN_VULNERABLE_NO_UPDATE:
- message = gNavigatorBundle.getFormattedString(
- "pluginActivateVulnerable.message",
- [pluginName, origin, brand]);
- }
- } else {
- // Multi-plugin
- message = gNavigatorBundle.getFormattedString(
- "pluginActivateMultiple.message", [origin]);
- }
-
- let buttons = [
- {
- label: gNavigatorBundle.getString("pluginContinueBlocking.label"),
- accessKey: gNavigatorBundle.getString("pluginContinueBlocking.accesskey"),
- callback() {
- Services.telemetry.getHistogramById("PLUGINS_INFOBAR_BLOCK").
- add(true);
-
- Services.perms.addFromPrincipal(principal,
- "plugin-hidden-notification",
- Services.perms.DENY_ACTION);
- }
- },
- {
- label: gNavigatorBundle.getString("pluginActivateTrigger.label"),
- accessKey: gNavigatorBundle.getString("pluginActivateTrigger.accesskey"),
- callback() {
- Services.telemetry.getHistogramById("PLUGINS_INFOBAR_ALLOW").
- add(true);
-
- let curNotification =
- PopupNotifications.getNotification("click-to-play-plugins",
- browser);
- if (curNotification) {
- curNotification.reshow();
- }
- }
- }
- ];
- function notificationCallback(type) {
- if (type == "dismissed") {
- Services.telemetry.getHistogramById("PLUGINS_INFOBAR_DISMISSED").
- add(true);
- if (Services.prefs.getBoolPref(gPluginHandler.PREF_INFOBAR_DISMISSAL_PERMANENT, false)) {
- Services.perms.addFromPrincipal(principal,
- "plugin-hidden-notification",
- Services.perms.DENY_ACTION);
- }
- }
- }
- n = notificationBox.
- appendNotification(message, "plugin-hidden", null,
- notificationBox.PRIORITY_INFO_HIGH, buttons,
- notificationCallback);
- if (haveInsecure) {
- n.classList.add("pluginVulnerable");
- }
- }
-
- if (actions.length == 0) {
- shouldShowNotification = false;
- }
- if (shouldShowNotification &&
- Services.perms.testPermissionFromPrincipal(principal, "plugin-hidden-notification") ==
- Ci.nsIPermissionManager.DENY_ACTION) {
- shouldShowNotification = false;
- }
- if (shouldShowNotification) {
- showNotification();
- } else {
- hideNotification();
- }
- },
-
contextMenuCommand(browser, plugin, command) {
browser.messageManager.sendAsyncMessage("BrowserPlugins:ContextMenuCommand",
{ command }, { plugin });
},
// Crashed-plugin observer. Notified once per plugin crash, before events
// are dispatched to individual plugin instances.
NPAPIPluginCrashed(subject, topic, data) {
--- a/browser/locales/en-US/chrome/browser/browser.properties
+++ b/browser/locales/en-US/chrome/browser/browser.properties
@@ -277,38 +277,16 @@ crashedpluginsMessage.learnMore=Learn More…
# loaded a search page for the given word. An infobar then asks to the user
# whether he rather wanted to visit the host. %S is the recognized host.
keywordURIFixup.message=Did you mean to go to %S?
keywordURIFixup.goTo=Yes, take me to %S
keywordURIFixup.goTo.accesskey=Y
keywordURIFixup.dismiss=No thanks
keywordURIFixup.dismiss.accesskey=N
-## Plugin doorhanger strings
-# LOCALIZATION NOTE (pluginActivate2.message):
-# Used for normal plugin activation if we don't know of a specific security issue.
-# %1$S is the plugin name, %2$S is the domain, and %3$S is brandShortName.
-pluginActivate2.message=Would you like to allow %2$S to run %1$S? Plugins may slow %3$S.
-pluginActivateMultiple.message=Allow %S to run plugins?
-
-# LOCALIZATION NOTE (pluginActivationWarning.message): this should use the
-# same string as "pluginActivationWarning" in pluginproblem.dtd
-pluginActivationWarning.message=This site uses a plugin that may slow %S.
-
-pluginActivate.learnMore=Learn More…
-# LOCALIZATION NOTE (pluginActivateOutdated.message, pluginActivateOutdated.label):
-# These strings are used when an unsafe plugin has an update available.
-# %1$S is the plugin name, %2$S is the domain, and %3$S is brandShortName.
-pluginActivateOutdated.message=%3$S has prevented the outdated plugin “%1$S” from running on %2$S.
-pluginActivateOutdated.label=Outdated plugin
-pluginActivate.updateLabel=Update now…
-# LOCALIZATION NOTE (pluginActivateVulnerable.message):
-# This string is used when an unsafe plugin has no update available.
-# %1$S is the plugin name, %2$S is the domain, and %3$S is brandShortName.
-pluginActivateVulnerable.message=%3$S has prevented the unsafe plugin “%1$S” from running on %2$S.
pluginInfo.unknownPlugin=Unknown
# LOCALIZATION NOTE (pluginActivateNow.label, pluginActivateAlways.label, pluginBlockNow.label): These should be the same as the matching strings in browser.dtd
# LOCALIZATION NOTE (pluginActivateNow.label): This button will enable the
# plugin in the current session for an short time (about an hour), auto-renewed
# if the site keeps using the plugin.
pluginActivateNow.label=Allow Now
pluginActivateNow.accesskey=N
@@ -339,24 +317,16 @@ flashActivate.allow.accesskey=A
# the best one.
# The second change is that we removed the period at the end of the phrase, because
# it's not natural in our UI, and the underline was removed from this, so it doesn't
# look like a link anymore. We suggest that everyone removes that period too.
PluginClickToActivate2=Run %S
PluginVulnerableUpdatable=This plugin is vulnerable and should be updated.
PluginVulnerableNoUpdate=This plugin has security vulnerabilities.
-# infobar UI
-pluginContinueBlocking.label=Continue Blocking
-pluginContinueBlocking.accesskey=B
-# LOCALIZATION NOTE (pluginActivateTrigger): Use the unicode ellipsis char, \u2026,
-# or use "..." if \u2026 doesn't suit traditions in your locale.
-pluginActivateTrigger.label=Allow…
-pluginActivateTrigger.accesskey=A
-
# Sanitize
# LOCALIZATION NOTE (sanitizeDialog2.everything.title): When "Time range to
# clear" is set to "Everything", the Clear Recent History dialog's title is
# changed to this. See UI mockup and comment 11 at bug 480169 -->
sanitizeDialog2.everything.title=Clear All History
sanitizeButtonOK=Clear Now
# LOCALIZATION NOTE (sanitizeButtonClearing): The label for the default
# button between the user clicking it and the window closing. Indicates the
--- a/browser/modules/PluginContent.jsm
+++ b/browser/modules/PluginContent.jsm
@@ -55,17 +55,16 @@ PluginContent.prototype = {
global.addEventListener("PluginInstantiated", this, true);
global.addEventListener("PluginRemoved", this, true);
global.addEventListener("pagehide", this, true);
global.addEventListener("pageshow", this, true);
global.addEventListener("unload", this);
global.addEventListener("HiddenPlugin", this, true);
global.addMessageListener("BrowserPlugins:ActivatePlugins", this);
- global.addMessageListener("BrowserPlugins:NotificationShown", this);
global.addMessageListener("BrowserPlugins:ContextMenuCommand", this);
global.addMessageListener("BrowserPlugins:NPAPIPluginProcessCrashed", this);
global.addMessageListener("BrowserPlugins:CrashReportSubmitted", this);
global.addMessageListener("BrowserPlugins:Test:ClearCrashData", this);
Services.obs.addObserver(this, "decoder-doctor-notification");
},
@@ -79,36 +78,32 @@ PluginContent.prototype = {
global.removeEventListener("PluginInstantiated", this, true);
global.removeEventListener("PluginRemoved", this, true);
global.removeEventListener("pagehide", this, true);
global.removeEventListener("pageshow", this, true);
global.removeEventListener("unload", this);
global.removeEventListener("HiddenPlugin", this, true);
global.removeMessageListener("BrowserPlugins:ActivatePlugins", this);
- global.removeMessageListener("BrowserPlugins:NotificationShown", this);
global.removeMessageListener("BrowserPlugins:ContextMenuCommand", this);
global.removeMessageListener("BrowserPlugins:NPAPIPluginProcessCrashed", this);
global.removeMessageListener("BrowserPlugins:CrashReportSubmitted", this);
global.removeMessageListener("BrowserPlugins:Test:ClearCrashData", this);
Services.obs.removeObserver(this, "decoder-doctor-notification");
delete this.global;
delete this.content;
},
receiveMessage(msg) {
switch (msg.name) {
case "BrowserPlugins:ActivatePlugins":
this.activatePlugins(msg.data.pluginInfo, msg.data.newState);
break;
- case "BrowserPlugins:NotificationShown":
- setTimeout(() => this.updateNotificationUI(), 0);
- break;
case "BrowserPlugins:ContextMenuCommand":
let contextMenu = this.global.contextMenu;
switch (msg.data.command) {
case "play":
this._showClickToPlayNotification(contextMenu.getTarget(msg, "plugin"), true);
break;
case "hide":
@@ -142,17 +137,16 @@ PluginContent.prototype = {
case "decoder-doctor-notification":
let data = JSON.parse(aData);
let type = data.type.toLowerCase();
if (type == "cannot-play" &&
this.haveShownNotification &&
aSubject.top.document == this.content.document &&
data.formats.toLowerCase().includes("application/x-mpegurl", 0)) {
this.global.content.pluginRequiresReload = true;
- this.updateNotificationUI(this.content.document);
}
}
},
onPageShow(event) {
// Ignore events that aren't from the main document.
if (!this.content || event.target != this.content.document) {
return;
@@ -470,21 +464,16 @@ PluginContent.prototype = {
return;
}
if (eventType == "pageshow") {
this.onPageShow(event);
return;
}
- if (eventType == "PluginRemoved") {
- this.updateNotificationUI(event.target);
- return;
- }
-
if (eventType == "click") {
this.onOverlayClick(event);
return;
}
if (eventType == "PluginCrashed" &&
!(event.target instanceof Ci.nsIObjectLoadingContent)) {
// If the event target is not a plugin object (i.e., an <object> or
@@ -598,17 +587,16 @@ PluginContent.prototype = {
let overlay = this.getPluginUI(plugin, "main");
if (eventType != "PluginCrashed") {
if (overlay != null) {
this.setVisibility(plugin, overlay,
this.computeAndAdjustOverlayDisplay(plugin, overlay));
let resizeListener = () => {
this.setVisibility(plugin, overlay,
this.computeAndAdjustOverlayDisplay(plugin, overlay));
- this.updateNotificationUI();
};
plugin.addEventListener("overflow", resizeListener);
plugin.addEventListener("underflow", resizeListener);
}
}
let closeIcon = this.getPluginUI(plugin, "closeIcon");
if (closeIcon) {
@@ -804,17 +792,16 @@ PluginContent.prototype = {
// If there are no instances of the plugin on the page any more, what the
// user probably needs is for us to allow and then refresh. Additionally, if
// this is content that requires HLS or we replaced the placeholder the page
// needs to be refreshed for it to insert its plugins
if (newState != "block" && newState != "blockalways" && newState != "continueblocking" &&
(!pluginFound || placeHolderFound || contentWindow.pluginRequiresReload)) {
this.reloadPage();
}
- this.updateNotificationUI();
},
_showClickToPlayNotification(plugin, showNow) {
let plugins = [];
// If plugin is null, that means the user has navigated back to a page with
// plugins, and we need to collect all the plugins.
if (plugin === null) {
@@ -871,100 +858,16 @@ PluginContent.prototype = {
this.global.sendAsyncMessage("PluginContent:ShowClickToPlayNotification", {
plugins: [...this.pluginData.values()],
showNow,
location,
}, null, principal);
},
- /**
- * Updates the "hidden plugin" notification bar UI.
- *
- * @param document (optional)
- * Specify the document that is causing the update.
- * This is useful when the document is possibly no longer
- * the current loaded document (for example, if we're
- * responding to a PluginRemoved event for an unloading
- * document). If this parameter is omitted, it defaults
- * to the current top-level document.
- */
- updateNotificationUI(document) {
- document = document || this.content.document;
-
- // We're only interested in the top-level document, since that's
- // the one that provides the Principal that we send back to the
- // parent.
- let principal = document.defaultView.top.document.nodePrincipal;
- let location = document.location.href;
-
- // Make a copy of the actions from the last popup notification.
- let haveInsecure = false;
- let actions = new Map();
- for (let action of this.pluginData.values()) {
- switch (action.fallbackType) {
- // haveInsecure will trigger the red flashing icon and the infobar
- // styling below
- case Ci.nsIObjectLoadingContent.PLUGIN_VULNERABLE_UPDATABLE:
- case Ci.nsIObjectLoadingContent.PLUGIN_VULNERABLE_NO_UPDATE:
- haveInsecure = true;
- // fall through
-
- case Ci.nsIObjectLoadingContent.PLUGIN_CLICK_TO_PLAY_QUIET:
- case Ci.nsIObjectLoadingContent.PLUGIN_CLICK_TO_PLAY:
- actions.set(action.permissionString, action);
- continue;
- }
- }
-
- // Remove plugins that are already active, or large enough to show an overlay.
- let cwu = this.content.QueryInterface(Ci.nsIInterfaceRequestor)
- .getInterface(Ci.nsIDOMWindowUtils);
- for (let plugin of cwu.plugins) {
- let info = this._getPluginInfo(plugin);
- if (!actions.has(info.permissionString)) {
- continue;
- }
- let fallbackType = info.fallbackType;
- if (fallbackType == Ci.nsIObjectLoadingContent.PLUGIN_ACTIVE) {
- actions.delete(info.permissionString);
- if (actions.size == 0) {
- break;
- }
- continue;
- }
- if (fallbackType != Ci.nsIObjectLoadingContent.PLUGIN_CLICK_TO_PLAY &&
- fallbackType != Ci.nsIObjectLoadingContent.PLUGIN_CLICK_TO_PLAY_QUIET &&
- fallbackType != Ci.nsIObjectLoadingContent.PLUGIN_VULNERABLE_UPDATABLE &&
- fallbackType != Ci.nsIObjectLoadingContent.PLUGIN_VULNERABLE_NO_UPDATE) {
- continue;
- }
- let overlay = this.getPluginUI(plugin, "main");
- if (!overlay) {
- continue;
- }
- let overlayDisplayState = this.computeAndAdjustOverlayDisplay(plugin, overlay);
- this.setVisibility(plugin, overlay, overlayDisplayState);
- if (overlayDisplayState > OVERLAY_DISPLAY.BLANK) {
- actions.delete(info.permissionString);
- if (actions.size == 0) {
- break;
- }
- }
- }
-
- // If there are any items remaining in `actions` now, they are hidden
- // plugins that need a notification bar.
- this.global.sendAsyncMessage("PluginContent:UpdateHiddenPluginUI", {
- haveInsecure,
- actions: [...actions.values()],
- location,
- }, null, principal);
- },
-
removeNotification(name) {
this.global.sendAsyncMessage("PluginContent:RemoveNotification", { name });
},
clearPluginCaches() {
this.pluginData.clear();
this.pluginCrashData.clear();
},
--- a/browser/themes/linux/browser.css
+++ b/browser/themes/linux/browser.css
@@ -547,17 +547,16 @@ notification[value="translation"] menuli
#statuspanel[mirror] > #statuspanel-inner > #statuspanel-label:-moz-locale-dir(ltr) {
border-left-style: solid;
border-top-left-radius: .3em;
margin-left: 1em;
}
%include ../shared/fullscreen/warning.inc.css
%include ../shared/ctrlTab.inc.css
-%include ../shared/plugin-doorhanger.inc.css
.gcli-panel {
padding: 0;
}
.gclitoolbar-input-node > .textbox-input-box > html|*.textbox-input::-moz-selection {
color: hsl(210,11%,16%);
}
--- a/browser/themes/osx/browser.css
+++ b/browser/themes/osx/browser.css
@@ -1020,17 +1020,16 @@ html|*.addon-webext-perm-list {
#statuspanel[mirror] > #statuspanel-inner > #statuspanel-label:-moz-locale-dir(ltr) {
border-left-style: solid;
border-top-left-radius: .3em;
margin-left: 1em;
}
%include ../shared/fullscreen/warning.inc.css
%include ../shared/ctrlTab.inc.css
-%include ../shared/plugin-doorhanger.inc.css
/* On mac, the popup notification contents are indented by default and so
the default closebutton margins from notification.css require adjustment */
.click-to-play-plugins-notification-description-box > .popup-notification-closebutton {
margin-inline-end: -6px;
margin-top: -7px;
}
deleted file mode 100644
--- a/browser/themes/shared/plugin-doorhanger.inc.css
+++ /dev/null
@@ -1,14 +0,0 @@
-.messageImage[value="plugin-hidden"] {
- list-style-image: url(chrome://mozapps/skin/plugins/plugin.svg);
-}
-
-/* Keep any changes to this style in sync with pluginProblem.css */
-notification.pluginVulnerable {
- background-color: rgb(72,72,72);
- background-image: url(chrome://mozapps/skin/plugins/contentPluginStripe.png);
- color: white;
-}
-
-notification.pluginVulnerable .messageImage {
- list-style-image: url(chrome://mozapps/skin/plugins/plugin-blocked.svg);
-}
--- a/browser/themes/windows/browser.css
+++ b/browser/themes/windows/browser.css
@@ -944,17 +944,16 @@ notification[value="translation"] {
/* disabled for triggering grayscale AA (bug 659213)
border-top-left-radius: .3em;
*/
margin-left: 1em;
}
%include ../shared/fullscreen/warning.inc.css
%include ../shared/ctrlTab.inc.css
-%include ../shared/plugin-doorhanger.inc.css
/* Error counter */
#developer-toolbar-toolbox-button[error-count]:before {
color: #FDF3DE;
min-width: 16px;
text-shadow: none;
background-image: linear-gradient(#B4211B, #8A1915);
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -8003,52 +8003,16 @@
"releaseChannelCollection": "opt-out",
"expires_in_version": "never",
"kind": "enumerated",
"n_values": 8,
"description": "User actions taken in the plugin notification: 0: allownow 1: allowalways 2: block 3: blockalways",
"bug_numbers": [902075, 1345894, 1398972],
"alert_emails": ["flashvideo-2015@mozilla.com"]
},
- "PLUGINS_INFOBAR_SHOWN": {
- "record_in_processes": ["main"],
- "releaseChannelCollection": "opt-out",
- "expires_in_version": "never",
- "kind": "boolean",
- "description": "Count of when the hidden-plugin infobar was displayed.",
- "bug_numbers": [902075, 1345894],
- "alert_emails": ["flashvideo-2015@mozilla.com"]
- },
- "PLUGINS_INFOBAR_BLOCK": {
- "record_in_processes": ["main"],
- "releaseChannelCollection": "opt-out",
- "expires_in_version": "never",
- "kind": "boolean",
- "description": "Count the number of times the user clicked 'block' on the hidden-plugin infobar.",
- "bug_numbers": [902075, 1345894],
- "alert_emails": ["flashvideo-2015@mozilla.com"]
- },
- "PLUGINS_INFOBAR_ALLOW": {
- "record_in_processes": ["main"],
- "releaseChannelCollection": "opt-out",
- "expires_in_version": "never",
- "kind": "boolean",
- "description": "Count the number of times the user clicked 'allow' on the hidden-plugin infobar.",
- "bug_numbers": [902075, 1345894],
- "alert_emails": ["flashvideo-2015@mozilla.com"]
- },
- "PLUGINS_INFOBAR_DISMISSED": {
- "record_in_processes": ["main"],
- "releaseChannelCollection": "opt-out",
- "expires_in_version": "never",
- "kind": "boolean",
- "description": "Count the number of times the user explicitly dismisses the hidden-plugin infobar without choosing allow or continue-blocking.",
- "bug_numbers": [1368060],
- "alert_emails": ["flashvideo-2015@mozilla.com"]
- },
"POPUP_NOTIFICATION_STATS": {
"record_in_processes": ["main", "content"],
"releaseChannelCollection": "opt-out",
"alert_emails": ["firefox-dev@mozilla.org"],
"bug_numbers": [1207089],
"expires_in_version": "55",
"kind": "enumerated",
"keyed": true,
--- a/toolkit/components/telemetry/TelemetryEnvironment.jsm
+++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm
@@ -246,17 +246,16 @@ const DEFAULT_ENVIRONMENT_PREFS = new Ma
["layers.prefer-opengl", {what: RECORD_PREF_VALUE}],
["layout.css.devPixelsPerPx", {what: RECORD_PREF_VALUE}],
["marionette.enabled", {what: RECORD_PREF_VALUE}],
["network.proxy.autoconfig_url", {what: RECORD_PREF_STATE}],
["network.proxy.http", {what: RECORD_PREF_STATE}],
["network.proxy.ssl", {what: RECORD_PREF_STATE}],
["pdfjs.disabled", {what: RECORD_PREF_VALUE}],
["places.history.enabled", {what: RECORD_PREF_VALUE}],
- ["plugins.remember_infobar_dismissal", {what: RECORD_PREF_VALUE}],
["plugins.show_infobar", {what: RECORD_PREF_VALUE}],
["privacy.trackingprotection.enabled", {what: RECORD_PREF_VALUE}],
["privacy.donottrackheader.enabled", {what: RECORD_PREF_VALUE}],
["security.mixed_content.block_active_content", {what: RECORD_PREF_VALUE}],
["security.mixed_content.block_display_content", {what: RECORD_PREF_VALUE}],
["xpinstall.signatures.required", {what: RECORD_PREF_VALUE}],
]);
--- a/toolkit/themes/mobile/mozapps/plugins/pluginProblem.css
+++ b/toolkit/themes/mobile/mozapps/plugins/pluginProblem.css
@@ -1,16 +1,15 @@
/* 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/. */
@namespace html url(http://www.w3.org/1999/xhtml);
/* These styles affect only the bound element, not other page content. */
-/* Keep any changes to these styles in sync with plugin-doorhanger.inc.css */
.mainBox {
font: message-box;
font-size: 12px;
text-align: center;
display: table;
width: 100%;
height: 100%;
background-color: rgb(72,72,72);
--- a/toolkit/themes/shared/plugins/pluginProblem.css
+++ b/toolkit/themes/shared/plugins/pluginProblem.css
@@ -1,16 +1,15 @@
/* 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/. */
@namespace html url(http://www.w3.org/1999/xhtml);
/* These styles affect only the bound element, not other page content. */
-/* Keep any changes to these styles in sync with plugin-doorhanger.inc.css */
.mainBox {
--grey-10: #f9f9fa;
--grey-60: #4a4a4f;
--grey-70: #38383d;
}
.mainBox {
font: message-box;