dom/plugins/test/mochitest/test_refresh_navigator_plugins.html

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/dom/plugins/test/mochitest/test_refresh_navigator_plugins.html	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,69 @@
     1.4 +<!DOCTYPE html>
     1.5 +<!-- bug 820708 -->
     1.6 +<html>
     1.7 +  <head>
     1.8 +    <meta><charset="utf-8"/>
     1.9 +    <title>Test Refreshing navigator.plugins (bug 820708)</title>
    1.10 +    <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
    1.11 +    <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js"></script>
    1.12 +    <script type="application/javascript" src="utils.js"></script>
    1.13 +  </head>
    1.14 +  <body>
    1.15 +    <script class="testbody" type="application/javascript">
    1.16 +      "use strict";
    1.17 +
    1.18 +      SimpleTest.waitForExplicitFinish();
    1.19 +      setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED);
    1.20 +
    1.21 +      var pluginHost = Components.classes["@mozilla.org/plugin/host;1"]
    1.22 +                       .getService(Components.interfaces.nsIPluginHost);
    1.23 +      var pluginTags = pluginHost.getPluginTags();
    1.24 +      var nextTest = null;
    1.25 +      var obsService = Components.classes["@mozilla.org/observer-service;1"]
    1.26 +                       .getService(Components.interfaces.nsIObserverService);
    1.27 +      var observer = {
    1.28 +        observe: function(aSubject, aTopic, aData) {
    1.29 +          if (aTopic == "plugin-info-updated") {
    1.30 +            SimpleTest.executeSoon(nextTest);
    1.31 +          }
    1.32 +        }
    1.33 +      };
    1.34 +      obsService.addObserver(observer, "plugin-info-updated", false);
    1.35 +
    1.36 +      var navTestPlugin1 = navigator.plugins.namedItem("Test Plug-in");
    1.37 +      ok(navTestPlugin1, "navigator.plugins should have Test Plug-in");
    1.38 +      var tagTestPlugin = null;
    1.39 +      for (var plugin of pluginTags) {
    1.40 +        if (plugin.name == navTestPlugin1.name) {
    1.41 +          tagTestPlugin = plugin;
    1.42 +          break;
    1.43 +        }
    1.44 +      }
    1.45 +      ok(tagTestPlugin, "plugin tags should have Test Plug-in");
    1.46 +      var mimeType = tagTestPlugin.getMimeTypes()[0];
    1.47 +      ok(mimeType, "should have a MIME type for Test Plug-in");
    1.48 +      ok(navigator.mimeTypes[mimeType], "navigator.mimeTypes should have an entry for '" + mimeType + "'");
    1.49 +      ok(!tagTestPlugin.disabled, "test plugin should not be disabled");
    1.50 +
    1.51 +      nextTest = testPart2;
    1.52 +      tagTestPlugin.enabledState = Components.interfaces.nsIPluginTag.STATE_DISABLED;
    1.53 +
    1.54 +      function testPart2() {
    1.55 +        var navTestPlugin2 = navigator.plugins.namedItem("Test Plug-in");
    1.56 +        ok(!navTestPlugin2, "now navigator.plugins should not have Test Plug-in");
    1.57 +        ok(!navigator.mimeTypes[mimeType], "now navigator.mimeTypes should not have an entry for '" + mimeType + "'");
    1.58 +
    1.59 +        nextTest = testPart3;
    1.60 +        tagTestPlugin.enabledState = Components.interfaces.nsIPluginTag.STATE_ENABLED;
    1.61 +      }
    1.62 +
    1.63 +      function testPart3() {
    1.64 +        var navTestPlugin3 = navigator.plugins.namedItem("Test Plug-in");
    1.65 +        ok(navTestPlugin3, "now navigator.plugins should have Test Plug-in again");
    1.66 +        ok(navigator.mimeTypes[mimeType], "now navigator.mimeTypes should have an entry for '" + mimeType + "' again");
    1.67 +        obsService.removeObserver(observer, "plugin-info-updated");
    1.68 +        SimpleTest.finish();
    1.69 +      }
    1.70 +    </script>
    1.71 +  </body>
    1.72 +</html>

mercurial