summaryrefslogtreecommitdiffstats
path: root/dom/plugins/test/mochitest/test_refresh_navigator_plugins.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/plugins/test/mochitest/test_refresh_navigator_plugins.html')
-rw-r--r--dom/plugins/test/mochitest/test_refresh_navigator_plugins.html68
1 files changed, 68 insertions, 0 deletions
diff --git a/dom/plugins/test/mochitest/test_refresh_navigator_plugins.html b/dom/plugins/test/mochitest/test_refresh_navigator_plugins.html
new file mode 100644
index 000000000..e39b3217a
--- /dev/null
+++ b/dom/plugins/test/mochitest/test_refresh_navigator_plugins.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<!-- bug 820708 -->
+<html>
+ <head>
+ <meta><charset="utf-8"/>
+ <title>Test Refreshing navigator.plugins (bug 820708)</title>
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="application/javascript" src="plugin-utils.js"></script>
+ </head>
+ <body>
+ <script class="testbody" type="application/javascript">
+ "use strict";
+
+ SimpleTest.waitForExplicitFinish();
+ setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED);
+
+ var pluginHost = Components.classes["@mozilla.org/plugin/host;1"]
+ .getService(Components.interfaces.nsIPluginHost);
+ var pluginTags = pluginHost.getPluginTags();
+ var nextTest = null;
+ var obsService = Components.classes["@mozilla.org/observer-service;1"]
+ .getService(Components.interfaces.nsIObserverService);
+ var observer = {
+ observe: function(aSubject, aTopic, aData) {
+ if (aTopic == "plugin-info-updated") {
+ SimpleTest.executeSoon(nextTest);
+ }
+ }
+ };
+ obsService.addObserver(observer, "plugin-info-updated", false);
+
+ var navTestPlugin1 = navigator.plugins.namedItem("Test Plug-in");
+ ok(navTestPlugin1, "navigator.plugins should have Test Plug-in");
+ var tagTestPlugin = null;
+ for (var plugin of pluginTags) {
+ if (plugin.name == navTestPlugin1.name) {
+ tagTestPlugin = plugin;
+ break;
+ }
+ }
+ ok(tagTestPlugin, "plugin tags should have Test Plug-in");
+ var mimeType = tagTestPlugin.getMimeTypes()[0];
+ ok(mimeType, "should have a MIME type for Test Plug-in");
+ ok(navigator.mimeTypes[mimeType], "navigator.mimeTypes should have an entry for '" + mimeType + "'");
+ ok(!tagTestPlugin.disabled, "test plugin should not be disabled");
+
+ nextTest = testPart2;
+ tagTestPlugin.enabledState = Components.interfaces.nsIPluginTag.STATE_DISABLED;
+
+ function testPart2() {
+ var navTestPlugin2 = navigator.plugins.namedItem("Test Plug-in");
+ ok(!navTestPlugin2, "now navigator.plugins should not have Test Plug-in");
+ ok(!navigator.mimeTypes[mimeType], "now navigator.mimeTypes should not have an entry for '" + mimeType + "'");
+
+ nextTest = testPart3;
+ tagTestPlugin.enabledState = Components.interfaces.nsIPluginTag.STATE_ENABLED;
+ }
+
+ function testPart3() {
+ var navTestPlugin3 = navigator.plugins.namedItem("Test Plug-in");
+ ok(navTestPlugin3, "now navigator.plugins should have Test Plug-in again");
+ ok(navigator.mimeTypes[mimeType], "now navigator.mimeTypes should have an entry for '" + mimeType + "' again");
+ obsService.removeObserver(observer, "plugin-info-updated");
+ SimpleTest.finish();
+ }
+ </script>
+ </body>
+</html>