forked from mirrors/gecko-dev
		
	MozReview-Commit-ID: 69tMivPVxuW --HG-- extra : rebase_source : bd4d2979beff0f460a20156b0f954e2f1a2a5e85
		
			
				
	
	
		
			206 lines
		
	
	
	
		
			8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
	
		
			8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!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";
 | 
						|
 | 
						|
  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 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>
 |