summaryrefslogtreecommitdiffstats
path: root/dom/base/test/plugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/base/test/plugin.js')
-rw-r--r--dom/base/test/plugin.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/dom/base/test/plugin.js b/dom/base/test/plugin.js
new file mode 100644
index 0000000000..7c6f61cf1b
--- /dev/null
+++ b/dom/base/test/plugin.js
@@ -0,0 +1,36 @@
+// Copied from /dom/plugins/test/mochitest/utils.js
+function getTestPlugin(pluginName) {
+ var ph = SpecialPowers.Cc["@mozilla.org/plugin/host;1"].getService(
+ SpecialPowers.Ci.nsIPluginHost
+ );
+ var tags = ph.getPluginTags();
+ var name = pluginName || "Test Plug-in";
+ for (var tag of tags) {
+ if (tag.name == name) {
+ return tag;
+ }
+ }
+
+ ok(false, "Could not find plugin tag with plugin name '" + name + "'");
+ return null;
+}
+// Copied from /dom/plugins/test/mochitest/utils.js
+async function setTestPluginEnabledState(newEnabledState, pluginName) {
+ var oldEnabledState = await SpecialPowers.setTestPluginEnabledState(
+ newEnabledState,
+ pluginName
+ );
+ if (!oldEnabledState) {
+ return;
+ }
+ var plugin = getTestPlugin(pluginName);
+ // Run a nested event loop to wait for the preference change to
+ // propagate to the child. Yuck!
+ SpecialPowers.Services.tm.spinEventLoopUntil(() => {
+ return plugin.enabledState == newEnabledState;
+ });
+ SimpleTest.registerCleanupFunction(function() {
+ return SpecialPowers.setTestPluginEnabledState(oldEnabledState, pluginName);
+ });
+}
+setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED);