summaryrefslogtreecommitdiffstats
path: root/toolkit/content/plugins.html
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/plugins.html')
-rw-r--r--toolkit/content/plugins.html217
1 files changed, 217 insertions, 0 deletions
diff --git a/toolkit/content/plugins.html b/toolkit/content/plugins.html
new file mode 100644
index 000000000..84cbba596
--- /dev/null
+++ b/toolkit/content/plugins.html
@@ -0,0 +1,217 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+
+<!-- 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/. -->
+
+<html>
+<head>
+<script type="application/javascript">
+ "use strict";
+
+ Components.utils.import("resource://gre/modules/Services.jsm");
+
+ var Ci = Components.interfaces;
+ var strBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].getService(Ci.nsIStringBundleService);
+ var pluginsbundle = strBundleService.createBundle("chrome://global/locale/plugins.properties");
+
+ document.writeln("<title>" + pluginsbundle.GetStringFromName("title_label") + "<\/title>");
+</script>
+<link rel="stylesheet" type="text/css" href="chrome://global/content/plugins.css">
+<link rel="stylesheet" type="text/css" href="chrome://global/skin/plugins.css">
+</head>
+<body>
+<div id="outside">
+<script type="application/javascript">
+ "use strict";
+
+ function setDirection() {
+ var frame = document.getElementById("directionDetector");
+ var direction = frame.contentDocument
+ .defaultView
+ .window
+ .getComputedStyle(frame.contentDocument.getElementById("target"), "")
+ .getPropertyValue("direction");
+ document.body.removeChild(frame);
+ document.dir = direction;
+ }
+
+ function setupDirection() {
+ var frame = document.createElement("iframe");
+ frame.setAttribute("id", "directionDetector");
+ frame.setAttribute("src", "chrome://global/content/directionDetector.html");
+ frame.setAttribute("width", "0");
+ frame.setAttribute("height", "0");
+ frame.setAttribute("style", "visibility: hidden;");
+ frame.setAttribute("onload", "setDirection();");
+ document.body.appendChild(frame);
+ }
+ setupDirection();
+
+ /* JavaScript to enumerate and display all installed plug-ins
+
+ * First, refresh plugins in case anything has been changed recently in
+ * prefs: (The "false" argument tells refresh not to reload or activate
+ * any plug-ins that would be active otherwise. In contrast, one would
+ * use "true" in the case of ASD instead of restarting)
+ */
+ navigator.plugins.refresh(false);
+
+ addMessageListener("PluginList", function({ data: aPlugins }) {
+ var fragment = document.createDocumentFragment();
+
+ // "Installed plugins"
+ var id, label;
+ if (aPlugins.length > 0) {
+ id = "plugs";
+ label = "installedplugins_label";
+ } else {
+ id = "noplugs";
+ label = "nopluginsareinstalled_label";
+ }
+ var enabledplugins = document.createElement("h1");
+ enabledplugins.setAttribute("id", id);
+ enabledplugins.appendChild(document.createTextNode(pluginsbundle.GetStringFromName(label)));
+ fragment.appendChild(enabledplugins);
+
+ var deprecation = document.createElement("p");
+ deprecation.setAttribute("class", "notice");
+ deprecation.textContent = pluginsbundle.GetStringFromName("deprecation_description") + " \u00A0 ";
+ var deprecationLink = document.createElement("a");
+ deprecationLink.textContent = pluginsbundle.GetStringFromName("deprecation_learn_more");
+ deprecationLink.href = Services.urlFormatter.formatURLPref("app.support.baseURL") + "npapi";
+ deprecation.appendChild(deprecationLink);
+ fragment.appendChild(deprecation);
+
+ var stateNames = {};
+ ["STATE_SOFTBLOCKED",
+ "STATE_BLOCKED",
+ "STATE_OUTDATED",
+ "STATE_VULNERABLE_UPDATE_AVAILABLE",
+ "STATE_VULNERABLE_NO_UPDATE"].forEach(function(label) {
+ stateNames[Ci.nsIBlocklistService[label]] = label;
+ });
+
+ for (var i = 0; i < aPlugins.length; i++) {
+ var plugin = aPlugins[i];
+ if (plugin) {
+ // "Shockwave Flash"
+ var plugname = document.createElement("h2");
+ plugname.setAttribute("class", "plugname");
+ plugname.appendChild(document.createTextNode(plugin.name));
+ fragment.appendChild(plugname);
+
+ var dl = document.createElement("dl");
+ fragment.appendChild(dl);
+
+ // "File: Flash Player.plugin"
+ var fileDd = document.createElement("dd");
+ var file = document.createElement("span");
+ file.setAttribute("class", "label");
+ file.appendChild(document.createTextNode(pluginsbundle.GetStringFromName("file_label") + " "));
+ fileDd.appendChild(file);
+ fileDd.appendChild(document.createTextNode(plugin.pluginLibraries));
+ dl.appendChild(fileDd);
+
+ // "Path: /usr/lib/mozilla/plugins/libtotem-cone-plugin.so"
+ var pathDd = document.createElement("dd");
+ var path = document.createElement("span");
+ path.setAttribute("class", "label");
+ path.appendChild(document.createTextNode(pluginsbundle.GetStringFromName("path_label") + " "));
+ pathDd.appendChild(path);
+ pathDd.appendChild(document.createTextNode(plugin.pluginFullpath));
+ dl.appendChild(pathDd);
+
+ // "Version: "
+ var versionDd = document.createElement("dd");
+ var version = document.createElement("span");
+ version.setAttribute("class", "label");
+ version.appendChild(document.createTextNode(pluginsbundle.GetStringFromName("version_label") + " "));
+ versionDd.appendChild(version);
+ versionDd.appendChild(document.createTextNode(plugin.version));
+ dl.appendChild(versionDd);
+
+ // "State: "
+ var stateDd = document.createElement("dd");
+ var state = document.createElement("span");
+ state.setAttribute("label", "state");
+ state.appendChild(document.createTextNode(pluginsbundle.GetStringFromName("state_label") + " "));
+ stateDd.appendChild(state);
+ var status = plugin.isActive ? pluginsbundle.GetStringFromName("state_enabled") : pluginsbundle.GetStringFromName("state_disabled");
+ if (plugin.blocklistState in stateNames) {
+ status += " (" + stateNames[plugin.blocklistState] + ")";
+ }
+ stateDd.appendChild(document.createTextNode(status));
+ dl.appendChild(stateDd);
+
+ // Plugin Description
+ var descDd = document.createElement("dd");
+ descDd.appendChild(document.createTextNode(plugin.description));
+ dl.appendChild(descDd);
+
+ // MIME Type table
+ var mimetypeTable = document.createElement("table");
+ mimetypeTable.setAttribute("border", "1");
+ mimetypeTable.setAttribute("class", "contenttable");
+ fragment.appendChild(mimetypeTable);
+
+ var thead = document.createElement("thead");
+ mimetypeTable.appendChild(thead);
+ var tr = document.createElement("tr");
+ thead.appendChild(tr);
+
+ // "MIME Type" column header
+ var typeTh = document.createElement("th");
+ typeTh.setAttribute("class", "type");
+ typeTh.appendChild(document.createTextNode(pluginsbundle.GetStringFromName("mimetype_label")));
+ tr.appendChild(typeTh);
+
+ // "Description" column header
+ var descTh = document.createElement("th");
+ descTh.setAttribute("class", "desc");
+ descTh.appendChild(document.createTextNode(pluginsbundle.GetStringFromName("description_label")));
+ tr.appendChild(descTh);
+
+ // "Suffixes" column header
+ var suffixesTh = document.createElement("th");
+ suffixesTh.setAttribute("class", "suff");
+ suffixesTh.appendChild(document.createTextNode(pluginsbundle.GetStringFromName("suffixes_label")));
+ tr.appendChild(suffixesTh);
+
+ var tbody = document.createElement("tbody");
+ mimetypeTable.appendChild(tbody);
+
+ var mimeTypes = plugin.pluginMimeTypes;
+ for (var j = 0; j < mimeTypes.length; j++) {
+ var mimetype = mimeTypes[j];
+ if (mimetype) {
+ var mimetypeRow = document.createElement("tr");
+ tbody.appendChild(mimetypeRow);
+
+ // "application/x-shockwave-flash"
+ var typename = document.createElement("td");
+ typename.appendChild(document.createTextNode(mimetype.type));
+ mimetypeRow.appendChild(typename);
+
+ // "Shockwave Flash"
+ var description = document.createElement("td");
+ description.appendChild(document.createTextNode(mimetype.description));
+ mimetypeRow.appendChild(description);
+
+ // "swf"
+ var suffixes = document.createElement("td");
+ suffixes.appendChild(document.createTextNode(mimetype.suffixes));
+ mimetypeRow.appendChild(suffixes);
+ }
+ }
+ }
+ }
+
+ document.getElementById("outside").appendChild(fragment);
+ });
+
+ sendAsyncMessage("RequestPlugins");
+</script>
+</div>
+</body>
+</html>