forked from mirrors/gecko-dev
When we migrate SpecialPowers to a JSWindowActor, it will no longer be able to use synchronous IPC messaging, which means that its current synchronous APIs will have to become asynchronous. This patch doesn't change the behavior of those functions, but it does change their callers to `await` their return values rather than using them directly. This pattern will work the same whether the functions return a promise or a plain value, which simplifies the migration. Differential Revision: https://phabricator.services.mozilla.com/D35053 --HG-- extra : rebase_source : baffba2107b175250573baae3f54d48becbd2a16 extra : source : b4ed40bea2698802ef562a0931c0b560737fb89d
32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
// 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);
|