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>