Bug 839206 - Replace plugin installation notification bar with door hanger r=dolske
--HG-- extra : rebase_source : 20a6d7a32805772e9435ec874c049481a863a749
@ -612,6 +612,9 @@ pref("plugins.update.notifyUser", false);
|
||||
|
||||
pref("plugins.click_to_play", false);
|
||||
|
||||
// display door hanger if flash not installed
|
||||
pref("plugins.notifyMissingFlash", true);
|
||||
|
||||
#ifdef XP_WIN
|
||||
pref("browser.preferences.instantApply", false);
|
||||
#else
|
||||
|
@ -3,6 +3,8 @@
|
||||
# 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/.
|
||||
|
||||
const kPrefNotifyMissingFlash = "plugins.notifyMissingFlash";
|
||||
|
||||
var gPluginHandler = {
|
||||
PLUGIN_SCRIPTED_STATE_NONE: 0,
|
||||
PLUGIN_SCRIPTED_STATE_FIRED: 1,
|
||||
@ -148,6 +150,69 @@ var gPluginHandler = {
|
||||
}
|
||||
},
|
||||
|
||||
supportedPlugins: {
|
||||
"mimetypes": {
|
||||
"application/x-shockwave-flash": "flash",
|
||||
"application/futuresplash": "flash",
|
||||
"application/x-java-.*": "java",
|
||||
"application/x-director": "shockwave",
|
||||
"application/(sdp|x-(mpeg|rtsp|sdp))": "quicktime",
|
||||
"audio/(3gpp(2)?|AMR|aiff|basic|mid(i)?|mp4|mpeg|vnd\.qcelp|wav|x-(aiff|m4(a|b|p)|midi|mpeg|wav))": "quicktime",
|
||||
"image/(pict|png|tiff|x-(macpaint|pict|png|quicktime|sgi|targa|tiff))": "quicktime",
|
||||
"video/(3gpp(2)?|flc|mp4|mpeg|quicktime|sd-video|x-mpeg)": "quicktime",
|
||||
"application/x-unknown": "test",
|
||||
},
|
||||
|
||||
"plugins": {
|
||||
"flash": {
|
||||
"displayName": "Flash",
|
||||
"installWINNT": true,
|
||||
"installDarwin": true,
|
||||
"installLinux": true,
|
||||
},
|
||||
"java": {
|
||||
"displayName": "Java",
|
||||
"installWINNT": true,
|
||||
"installDarwin": true,
|
||||
"installLinux": true,
|
||||
},
|
||||
"shockwave": {
|
||||
"displayName": "Shockwave",
|
||||
"installWINNT": true,
|
||||
"installDarwin": true,
|
||||
},
|
||||
"quicktime": {
|
||||
"displayName": "QuickTime",
|
||||
"installWINNT": true,
|
||||
},
|
||||
"test": {
|
||||
"displayName": "Test plugin",
|
||||
"installWINNT": true,
|
||||
"installLinux": true,
|
||||
"installDarwin": true,
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
nameForSupportedPlugin: function (aMimeType) {
|
||||
for (let type in this.supportedPlugins.mimetypes) {
|
||||
let re = new RegExp(type);
|
||||
if (re.test(aMimeType)) {
|
||||
return this.supportedPlugins.mimetypes[type];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
canInstallThisMimeType: function (aMimeType) {
|
||||
let os = Services.appinfo.OS;
|
||||
let pluginName = this.nameForSupportedPlugin(aMimeType);
|
||||
if (pluginName && "install" + os in this.supportedPlugins.plugins[pluginName]) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
handleEvent : function(event) {
|
||||
let plugin = event.target;
|
||||
let doc = plugin.ownerDocument;
|
||||
@ -181,20 +246,20 @@ var gPluginHandler = {
|
||||
break;
|
||||
|
||||
case "PluginNotFound":
|
||||
let installable = this.showInstallNotification(plugin, eventType);
|
||||
// For non-object plugin tags, register a click handler to install the
|
||||
// plugin. Object tags can, and often do, deal with that themselves,
|
||||
// so don't stomp on the page developers toes.
|
||||
if (!(plugin instanceof HTMLObjectElement)) {
|
||||
// We don't yet check to see if there's actually an installer available.
|
||||
if (installable && !(plugin instanceof HTMLObjectElement)) {
|
||||
let installStatus = doc.getAnonymousElementByAttribute(plugin, "class", "installStatus");
|
||||
installStatus.setAttribute("status", "ready");
|
||||
installStatus.setAttribute("installable", "true");
|
||||
let iconStatus = doc.getAnonymousElementByAttribute(plugin, "class", "icon");
|
||||
iconStatus.setAttribute("status", "ready");
|
||||
iconStatus.setAttribute("installable", "true");
|
||||
|
||||
let installLink = doc.getAnonymousElementByAttribute(plugin, "class", "installPluginLink");
|
||||
this.addLinkClickCallback(installLink, "installSinglePlugin", plugin);
|
||||
}
|
||||
/* FALLTHRU */
|
||||
break;
|
||||
|
||||
case "PluginBlocklisted":
|
||||
case "PluginOutdated":
|
||||
@ -436,6 +501,61 @@ var gPluginHandler = {
|
||||
openHelpLink("plugin-crashed", false);
|
||||
},
|
||||
|
||||
showInstallNotification: function (aPlugin) {
|
||||
let browser = gBrowser.getBrowserForDocument(aPlugin.ownerDocument
|
||||
.defaultView.top.document);
|
||||
if (!browser.missingPlugins)
|
||||
browser.missingPlugins = new Map();
|
||||
|
||||
let pluginInfo = this._getPluginInfo(aPlugin);
|
||||
browser.missingPlugins.set(pluginInfo.mimetype, pluginInfo);
|
||||
|
||||
// only show notification for small subset of plugins
|
||||
let mimetype = pluginInfo.mimetype.split(";")[0];
|
||||
if (!this.canInstallThisMimeType(mimetype))
|
||||
return;
|
||||
|
||||
let pluginIdentifier = this.nameForSupportedPlugin(mimetype);
|
||||
if (!pluginIdentifier)
|
||||
return;
|
||||
|
||||
let displayName = this.supportedPlugins.plugins[pluginIdentifier].displayName;
|
||||
|
||||
// don't show several notifications
|
||||
let notification = PopupNotifications.getNotification("plugins-not-found", browser);
|
||||
if (notification)
|
||||
return true;
|
||||
|
||||
let messageString = gNavigatorBundle.getString("installPlugin.message");
|
||||
let mainAction = {
|
||||
label: gNavigatorBundle.getFormattedString("installPlugin.button.label",
|
||||
[displayName]),
|
||||
accessKey: gNavigatorBundle.getString("installPlugin.button.accesskey"),
|
||||
callback: function () {
|
||||
openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul",
|
||||
"PFSWindow", "chrome,centerscreen,resizable=yes",
|
||||
{plugins: browser.missingPlugins, browser: browser});
|
||||
}
|
||||
};
|
||||
let secondaryActions = null;
|
||||
let options = { dismissed: true };
|
||||
|
||||
let showForFlash = Services.prefs.getBoolPref(kPrefNotifyMissingFlash);
|
||||
if (pluginIdentifier == "flash" && showForFlash) {
|
||||
secondaryActions = [{
|
||||
label: gNavigatorBundle.getString("installPlugin.ignoreButton.label"),
|
||||
accessKey: gNavigatorBundle.getString("installPlugin.ignoreButton.accesskey"),
|
||||
callback: function () {
|
||||
Services.prefs.setBoolPref(kPrefNotifyMissingFlash, false);
|
||||
}
|
||||
}];
|
||||
options.dismissed = false;
|
||||
}
|
||||
PopupNotifications.show(browser, "plugins-not-found",
|
||||
messageString, "plugin-install-notification-icon",
|
||||
mainAction, secondaryActions, options);
|
||||
return true;
|
||||
},
|
||||
// Event listener for click-to-play plugins.
|
||||
_handleClickToPlayEvent: function PH_handleClickToPlayEvent(aPlugin) {
|
||||
let doc = aPlugin.ownerDocument;
|
||||
@ -749,7 +869,7 @@ var gPluginHandler = {
|
||||
}
|
||||
},
|
||||
|
||||
// event listener for missing/blocklisted/outdated plugins.
|
||||
// event listener for blocklisted/outdated plugins.
|
||||
pluginUnavailable: function (plugin, eventType) {
|
||||
let browser = gBrowser.getBrowserForDocument(plugin.ownerDocument
|
||||
.defaultView.top.document);
|
||||
@ -765,8 +885,6 @@ var gPluginHandler = {
|
||||
// In order of priority, they are: outdated > missing > blocklisted
|
||||
let outdatedNotification = notificationBox.getNotificationWithValue("outdated-plugins");
|
||||
let blockedNotification = notificationBox.getNotificationWithValue("blocked-plugins");
|
||||
let missingNotification = notificationBox.getNotificationWithValue("missing-plugins");
|
||||
|
||||
|
||||
function showBlocklistInfo() {
|
||||
var url = formatURL("extensions.blocklist.detailsURL", true);
|
||||
@ -781,16 +899,6 @@ var gPluginHandler = {
|
||||
return true;
|
||||
}
|
||||
|
||||
function showPluginsMissing() {
|
||||
// get the urls of missing plugins
|
||||
var missingPlugins = gBrowser.selectedBrowser.missingPlugins;
|
||||
if (missingPlugins) {
|
||||
openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul",
|
||||
"PFSWindow", "chrome,centerscreen,resizable=yes",
|
||||
{plugins: missingPlugins, browser: gBrowser.selectedBrowser});
|
||||
}
|
||||
}
|
||||
|
||||
let notifications = {
|
||||
PluginBlocklisted : {
|
||||
barID : "blocked-plugins",
|
||||
@ -820,17 +928,6 @@ var gPluginHandler = {
|
||||
callback : showOutdatedPluginsInfo
|
||||
}],
|
||||
},
|
||||
PluginNotFound : {
|
||||
barID : "missing-plugins",
|
||||
iconURL : "chrome://mozapps/skin/plugins/notifyPluginGeneric.png",
|
||||
message : gNavigatorBundle.getString("missingpluginsMessage.title"),
|
||||
buttons : [{
|
||||
label : gNavigatorBundle.getString("missingpluginsMessage.button.label"),
|
||||
accessKey : gNavigatorBundle.getString("missingpluginsMessage.button.accesskey"),
|
||||
popup : null,
|
||||
callback : showPluginsMissing
|
||||
}],
|
||||
},
|
||||
};
|
||||
|
||||
// If there is already an outdated plugin notification then do nothing
|
||||
@ -841,7 +938,7 @@ var gPluginHandler = {
|
||||
if (gPrefService.getBoolPref("plugins.hide_infobar_for_missing_plugin")) // XXX add a new pref?
|
||||
return;
|
||||
|
||||
if (blockedNotification || missingNotification)
|
||||
if (blockedNotification)
|
||||
return;
|
||||
}
|
||||
else if (eventType == "PluginOutdated") {
|
||||
@ -851,19 +948,6 @@ var gPluginHandler = {
|
||||
// Cancel any notification about blocklisting/missing plugins
|
||||
if (blockedNotification)
|
||||
blockedNotification.close();
|
||||
if (missingNotification)
|
||||
missingNotification.close();
|
||||
}
|
||||
else if (eventType == "PluginNotFound") {
|
||||
if (gPrefService.getBoolPref("plugins.hide_infobar_for_missing_plugin"))
|
||||
return;
|
||||
|
||||
if (missingNotification)
|
||||
return;
|
||||
|
||||
// Cancel any notification about blocklisting plugins
|
||||
if (blockedNotification)
|
||||
blockedNotification.close();
|
||||
}
|
||||
|
||||
let notify = notifications[eventType];
|
||||
|
@ -581,6 +581,7 @@
|
||||
<image id="plugins-notification-icon" class="notification-anchor-icon" role="button"/>
|
||||
<image id="web-notifications-notification-icon" class="notification-anchor-icon" role="button"/>
|
||||
<image id="blocked-plugins-notification-icon" class="notification-anchor-icon" role="button"/>
|
||||
<image id="plugin-install-notification-icon" class="notification-anchor-icon" role="button"/>
|
||||
<image id="mixed-content-blocked-notification-icon" class="notification-anchor-icon" role="button"/>
|
||||
<image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon" role="button"/>
|
||||
<image id="webRTC-sharingDevices-notification-icon" class="notification-anchor-icon" role="button"/>
|
||||
|
@ -103,7 +103,7 @@ function prepareTest(nextTest, url) {
|
||||
// Tests a page with an unknown plugin in it.
|
||||
function test1() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(notificationBox.getNotificationWithValue("missing-plugins"), "Test 1, Should have displayed the missing plugin notification");
|
||||
ok(PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 1, Should have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 1, Should not have displayed the blocked plugin notification");
|
||||
ok(gTestBrowser.missingPlugins, "Test 1, Should be a missing plugin list");
|
||||
ok(gTestBrowser.missingPlugins.has("application/x-unknown"), "Test 1, Should know about application/x-unknown");
|
||||
@ -124,7 +124,7 @@ function test1() {
|
||||
// Tests a page with a working plugin in it.
|
||||
function test2() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(!notificationBox.getNotificationWithValue("missing-plugins"), "Test 2, Should not have displayed the missing plugin notification");
|
||||
ok(!PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 2, Should not have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 2, Should not have displayed the blocked plugin notification");
|
||||
ok(!gTestBrowser.missingPlugins, "Test 2, Should not be a missing plugin list");
|
||||
|
||||
@ -137,7 +137,7 @@ function test2() {
|
||||
// Tests a page with a disabled plugin in it.
|
||||
function test3() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(!notificationBox.getNotificationWithValue("missing-plugins"), "Test 3, Should not have displayed the missing plugin notification");
|
||||
ok(!PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 3, Should not have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 3, Should not have displayed the blocked plugin notification");
|
||||
ok(!gTestBrowser.missingPlugins, "Test 3, Should not be a missing plugin list");
|
||||
|
||||
@ -168,7 +168,7 @@ function prepareTest5() {
|
||||
// Tests a page with a blocked plugin in it.
|
||||
function test5() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(!notificationBox.getNotificationWithValue("missing-plugins"), "Test 5, Should not have displayed the missing plugin notification");
|
||||
ok(!PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 5, Should not have displayed the missing plugin notification");
|
||||
ok(notificationBox.getNotificationWithValue("blocked-plugins"), "Test 5, Should have displayed the blocked plugin notification");
|
||||
ok(gTestBrowser.missingPlugins, "Test 5, Should be a missing plugin list");
|
||||
ok(gTestBrowser.missingPlugins.has("application/x-test"), "Test 5, Should know about application/x-test");
|
||||
@ -184,8 +184,8 @@ function test5() {
|
||||
// Tests a page with a blocked and unknown plugin in it.
|
||||
function test6() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(notificationBox.getNotificationWithValue("missing-plugins"), "Test 6, Should have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 6, Should not have displayed the blocked plugin notification");
|
||||
ok(PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 6, Should have displayed the missing plugin notification");
|
||||
ok(notificationBox.getNotificationWithValue("blocked-plugins"), "Test 6, Should have displayed the blocked plugin notification");
|
||||
ok(gTestBrowser.missingPlugins, "Test 6, Should be a missing plugin list");
|
||||
ok(gTestBrowser.missingPlugins.has("application/x-unknown"), "Test 6, Should know about application/x-unknown");
|
||||
ok(gTestBrowser.missingPlugins.has("application/x-test"), "Test 6, Should know about application/x-test");
|
||||
@ -196,8 +196,8 @@ function test6() {
|
||||
// Tests a page with a blocked and unknown plugin in it (alternate order to above).
|
||||
function test7() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(notificationBox.getNotificationWithValue("missing-plugins"), "Test 7, Should have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 7, Should not have displayed the blocked plugin notification");
|
||||
ok(PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 7, Should have displayed the missing plugin notification");
|
||||
ok(notificationBox.getNotificationWithValue("blocked-plugins"), "Test 7, Should have displayed the blocked plugin notification");
|
||||
ok(gTestBrowser.missingPlugins, "Test 7, Should be a missing plugin list");
|
||||
ok(gTestBrowser.missingPlugins.has("application/x-unknown"), "Test 7, Should know about application/x-unknown");
|
||||
ok(gTestBrowser.missingPlugins.has("application/x-test"), "Test 7, Should know about application/x-test");
|
||||
@ -214,7 +214,7 @@ function test7() {
|
||||
// Tests a page with a working plugin that is click-to-play
|
||||
function test8() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(!notificationBox.getNotificationWithValue("missing-plugins"), "Test 8, Should not have displayed the missing plugin notification");
|
||||
ok(!PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 8, Should not have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 8, Should not have displayed the blocked plugin notification");
|
||||
ok(!gTestBrowser.missingPlugins, "Test 8, Should not be a missing plugin list");
|
||||
ok(PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser), "Test 8, Should have a click-to-play notification");
|
||||
@ -230,7 +230,7 @@ function test8() {
|
||||
// Tests that activating one click-to-play plugin will activate only that plugin (part 1/3)
|
||||
function test9a() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(!notificationBox.getNotificationWithValue("missing-plugins"), "Test 9a, Should not have displayed the missing plugin notification");
|
||||
ok(!PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 9a, Should not have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 9a, Should not have displayed the blocked plugin notification");
|
||||
ok(!gTestBrowser.missingPlugins, "Test 9a, Should not be a missing plugin list");
|
||||
var notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
@ -261,7 +261,7 @@ function test9a() {
|
||||
// Tests that activating one click-to-play plugin will activate only that plugin (part 2/3)
|
||||
function test9b() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(!notificationBox.getNotificationWithValue("missing-plugins"), "Test 9b, Should not have displayed the missing plugin notification");
|
||||
ok(!PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 9b, Should not have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 9b, Should not have displayed the blocked plugin notification");
|
||||
ok(!gTestBrowser.missingPlugins, "Test 9b, Should not be a missing plugin list");
|
||||
var notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
@ -293,7 +293,7 @@ function test9b() {
|
||||
// Tests that activating one click-to-play plugin will activate only that plugin (part 3/3)
|
||||
function test9c() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(!notificationBox.getNotificationWithValue("missing-plugins"), "Test 9c, Should not have displayed the missing plugin notification");
|
||||
ok(!PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 9c, Should not have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 9c, Should not have displayed the blocked plugin notification");
|
||||
ok(!gTestBrowser.missingPlugins, "Test 9c, Should not be a missing plugin list");
|
||||
ok(!PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser), "Test 9c, Click to play notification should be removed now");
|
||||
@ -319,7 +319,7 @@ function test9c() {
|
||||
// Tests that activating a hidden click-to-play plugin through the notification works (part 1/2)
|
||||
function test10a() {
|
||||
var notificationBox = gBrowser.getNotificationBox(gTestBrowser);
|
||||
ok(!notificationBox.getNotificationWithValue("missing-plugins"), "Test 10a, Should not have displayed the missing plugin notification");
|
||||
ok(!PopupNotifications.getNotification("plugins-not-found", gTestBrowser), "Test 10a, Should not have displayed the missing plugin notification");
|
||||
ok(!notificationBox.getNotificationWithValue("blocked-plugins"), "Test 10a, Should not have displayed the blocked plugin notification");
|
||||
ok(!gTestBrowser.missingPlugins, "Test 10a, Should not be a missing plugin list");
|
||||
var popupNotification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
|
@ -98,9 +98,11 @@ popupWarningDontShowFromLocationbar=Don't show info bar when pop-ups are blocked
|
||||
popupShowPopupPrefix=Show '%S'
|
||||
|
||||
# missing plugin installer
|
||||
missingpluginsMessage.title=Additional plugins are required to display all the media on this page.
|
||||
missingpluginsMessage.button.label=Install Missing Plugins…
|
||||
missingpluginsMessage.button.accesskey=I
|
||||
installPlugin.message = Would you like to install the plugin needed to display the media on this page?
|
||||
installPlugin.button.label=Install %S
|
||||
installPlugin.button.accesskey=I
|
||||
installPlugin.ignoreButton.label=Don't ask again
|
||||
installPlugin.ignoreButton.accesskey=N
|
||||
outdatedpluginsMessage.title=Some plugins used by this page are out of date.
|
||||
outdatedpluginsMessage.updateButton.label=Update Plugins…
|
||||
outdatedpluginsMessage.updateButton.accesskey=U
|
||||
|
@ -1161,6 +1161,10 @@ toolbar[iconsize="small"] #webrtc-status-button {
|
||||
list-style-image: url(chrome://mozapps/skin/plugins/pluginBlocked-64.png);
|
||||
}
|
||||
|
||||
.popup-notification-icon[popupid="plugins-not-found"] {
|
||||
list-style-image: url(chrome://browser/skin/pluginInstall-64.png);
|
||||
}
|
||||
|
||||
.popup-notification-icon[popupid="web-notifications"] {
|
||||
list-style-image: url(chrome://browser/skin/notification-64.png);
|
||||
}
|
||||
@ -1287,6 +1291,10 @@ toolbar[iconsize="small"] #webrtc-status-button {
|
||||
list-style-image: url(chrome://mozapps/skin/plugins/notifyPluginBlocked.png);
|
||||
}
|
||||
|
||||
#plugin-install-notification-icon {
|
||||
list-style-image: url(chrome://browser/skin/pluginInstall-16.png);
|
||||
}
|
||||
|
||||
#notification-popup-box[hidden] {
|
||||
/* Override display:none to make the pluginBlockedNotification animation work
|
||||
when showing the notification repeatedly. */
|
||||
|
@ -39,6 +39,8 @@ browser.jar:
|
||||
* skin/classic/browser/pageInfo.css
|
||||
skin/classic/browser/pageInfo.png
|
||||
skin/classic/browser/page-livemarks.png
|
||||
skin/classic/browser/pluginInstall-16.png
|
||||
skin/classic/browser/pluginInstall-64.png
|
||||
skin/classic/browser/pointerLock-16.png
|
||||
skin/classic/browser/pointerLock-64.png
|
||||
skin/classic/browser/Privacy-16.png
|
||||
|
BIN
browser/themes/linux/pluginInstall-16.png
Normal file
After Width: | Height: | Size: 236 B |
BIN
browser/themes/linux/pluginInstall-64.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
@ -3106,6 +3106,15 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
|
||||
}
|
||||
}
|
||||
|
||||
#plugin-install-notification-icon {
|
||||
list-style-image: url(chrome://browser/skin/pluginInstall-16.png);
|
||||
}
|
||||
@media (min-resolution: 2dppx) {
|
||||
#plugin-install-notification-icon {
|
||||
list-style-image: url(chrome://browser/skin/pluginInstall-16@2x.png);
|
||||
}
|
||||
}
|
||||
|
||||
#notification-popup-box[hidden] {
|
||||
/* Override display:none to make the pluginBlockedNotification animation work
|
||||
when showing the notification repeatedly. */
|
||||
@ -3218,6 +3227,15 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
|
||||
list-style-image: url(chrome://mozapps/skin/plugins/pluginBlocked-64.png);
|
||||
}
|
||||
|
||||
.popup-notification-icon[popupid="plugins-not-found"] {
|
||||
list-style-image: url(chrome://browser/skin/pluginInstall-64.png);
|
||||
}
|
||||
@media (min-resolution: 2dppx) {
|
||||
.popup-notification-icon[popupid="plugins-not-found"] {
|
||||
list-style-image: url(chrome://browser/skin/pluginInstall-64\@2x.png);
|
||||
}
|
||||
}
|
||||
|
||||
.addon-progress-description {
|
||||
width: 350px;
|
||||
max-width: 350px;
|
||||
|
@ -58,6 +58,10 @@ browser.jar:
|
||||
skin/classic/browser/page-livemarks.png
|
||||
skin/classic/browser/page-livemarks@2x.png
|
||||
skin/classic/browser/pageInfo.css
|
||||
skin/classic/browser/pluginInstall-16.png
|
||||
skin/classic/browser/pluginInstall-16@2x.png
|
||||
skin/classic/browser/pluginInstall-64.png
|
||||
skin/classic/browser/pluginInstall-64@2x.png
|
||||
skin/classic/browser/pointerLock-16.png
|
||||
skin/classic/browser/pointerLock-16@2x.png
|
||||
skin/classic/browser/pointerLock-64.png
|
||||
|
BIN
browser/themes/osx/pluginInstall-16.png
Normal file
After Width: | Height: | Size: 236 B |
BIN
browser/themes/osx/pluginInstall-16@2x.png
Normal file
After Width: | Height: | Size: 426 B |
BIN
browser/themes/osx/pluginInstall-64.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
browser/themes/osx/pluginInstall-64@2x.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
@ -2336,6 +2336,10 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
|
||||
list-style-image: url(chrome://mozapps/skin/plugins/pluginBlocked-64.png);
|
||||
}
|
||||
|
||||
.popup-notification-icon[popupid="plugins-not-found"] {
|
||||
list-style-image: url(chrome://browser/skin/pluginInstall-64.png);
|
||||
}
|
||||
|
||||
.popup-notification-icon[popupid="web-notifications"] {
|
||||
list-style-image: url(chrome://browser/skin/notification-64.png);
|
||||
}
|
||||
@ -2468,6 +2472,10 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
|
||||
list-style-image: url(chrome://mozapps/skin/plugins/notifyPluginBlocked.png);
|
||||
}
|
||||
|
||||
#plugin-install-notification-icon {
|
||||
list-style-image: url(chrome://browser/skin/pluginInstall-16.png);
|
||||
}
|
||||
|
||||
#notification-popup-box[hidden] {
|
||||
/* Override display:none to make the pluginBlockedNotification animation work
|
||||
when showing the notification repeatedly. */
|
||||
|
@ -47,6 +47,8 @@ browser.jar:
|
||||
skin/classic/browser/pageInfo.css
|
||||
skin/classic/browser/pageInfo.png
|
||||
skin/classic/browser/page-livemarks.png (feeds/feedIcon16.png)
|
||||
skin/classic/browser/pluginInstall-16.png
|
||||
skin/classic/browser/pluginInstall-64.png
|
||||
skin/classic/browser/pointerLock-16.png
|
||||
skin/classic/browser/pointerLock-64.png
|
||||
skin/classic/browser/Privacy-16.png
|
||||
@ -292,8 +294,10 @@ browser.jar:
|
||||
skin/classic/aero/browser/pageInfo.css
|
||||
skin/classic/aero/browser/pageInfo.png (pageInfo-aero.png)
|
||||
skin/classic/aero/browser/page-livemarks.png (feeds/feedIcon16-aero.png)
|
||||
skin/classic/aero/browser/pointerLock-16.png (pointerLock-16.png)
|
||||
skin/classic/aero/browser/pointerLock-64.png (pointerLock-64.png)
|
||||
skin/classic/aero/browser/pluginInstall-16.png
|
||||
skin/classic/aero/browser/pluginInstall-64.png
|
||||
skin/classic/aero/browser/pointerLock-16.png
|
||||
skin/classic/aero/browser/pointerLock-64.png
|
||||
skin/classic/aero/browser/Privacy-16.png (Privacy-16-aero.png)
|
||||
skin/classic/aero/browser/Privacy-32.png (Privacy-32-aero.png)
|
||||
skin/classic/aero/browser/Privacy-48.png (Privacy-48-aero.png)
|
||||
|
BIN
browser/themes/windows/pluginInstall-16.png
Normal file
After Width: | Height: | Size: 236 B |
BIN
browser/themes/windows/pluginInstall-64.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
@ -102,7 +102,7 @@ html|applet:not([height]), html|applet[height=""] {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.installStatus[status="ready"] .msgInstallPlugin {
|
||||
.installStatus[installable] .msgInstallPlugin {
|
||||
display: block;
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@ html|a {
|
||||
:-moz-type-unsupported .icon {
|
||||
background-image: url(chrome://mozapps/skin/plugins/contentPluginMissing.png);
|
||||
}
|
||||
:-moz-type-unsupported .icon[status="ready"] {
|
||||
:-moz-type-unsupported .icon[installable] {
|
||||
background-image: url(chrome://mozapps/skin/plugins/contentPluginDownload.png);
|
||||
}
|
||||
:-moz-handler-vulnerable-updatable .icon,
|
||||
|
@ -46,7 +46,7 @@ html|a {
|
||||
:-moz-type-unsupported-platform .icon {
|
||||
background-image: url(chrome://mozapps/skin/plugins/contentPluginMissing.png);
|
||||
}
|
||||
:-moz-type-unsupported .icon[status="ready"] {
|
||||
:-moz-type-unsupported .icon[installable] {
|
||||
background-image: url(chrome://mozapps/skin/plugins/contentPluginDownload.png);
|
||||
}
|
||||
:-moz-handler-vulnerable-updatable .icon,
|
||||
|