gecko-dev/dom/plugins/test/mochitest/test_bug751809.html

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

83 строки
3.0 KiB
HTML
Исходник Обычный вид История

<html>
<head>
<title>Bug 751809</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/paint_listener.js"></script>
<script type="application/javascript" src="plugin-utils.js"></script>
<script type="application/javascript">
Bug 1514594: Part 3 - Change ChromeUtils.import API. *** Bug 1514594: Part 3a - Change ChromeUtils.import to return an exports object; not pollute global. r=mccr8 This changes the behavior of ChromeUtils.import() to return an exports object, rather than a module global, in all cases except when `null` is passed as a second argument, and changes the default behavior not to pollute the global scope with the module's exports. Thus, the following code written for the old model: ChromeUtils.import("resource://gre/modules/Services.jsm"); is approximately the same as the following, in the new model: var {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm"); Since the two behaviors are mutually incompatible, this patch will land with a scripted rewrite to update all existing callers to use the new model rather than the old. *** Bug 1514594: Part 3b - Mass rewrite all JS code to use the new ChromeUtils.import API. rs=Gijs This was done using the followng script: https://bitbucket.org/kmaglione/m-c-rewrites/src/tip/processors/cu-import-exports.jsm *** Bug 1514594: Part 3c - Update ESLint plugin for ChromeUtils.import API changes. r=Standard8 Differential Revision: https://phabricator.services.mozilla.com/D16747 *** Bug 1514594: Part 3d - Remove/fix hundreds of duplicate imports from sync tests. r=Gijs Differential Revision: https://phabricator.services.mozilla.com/D16748 *** Bug 1514594: Part 3e - Remove no-op ChromeUtils.import() calls. r=Gijs Differential Revision: https://phabricator.services.mozilla.com/D16749 *** Bug 1514594: Part 3f.1 - Cleanup various test corner cases after mass rewrite. r=Gijs *** Bug 1514594: Part 3f.2 - Cleanup various non-test corner cases after mass rewrite. r=Gijs Differential Revision: https://phabricator.services.mozilla.com/D16750 --HG-- extra : rebase_source : 359574ee3064c90f33bf36c2ebe3159a24cc8895 extra : histedit_source : b93c8f42808b1599f9122d7842d2c0b3e656a594%2C64a3a4e3359dc889e2ab2b49461bab9e27fc10a7
2019-01-17 21:18:31 +03:00
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
Services.prefs.setBoolPref("plugins.click_to_play", true);
setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_CLICKTOPLAY);
</script>
</head>
<body onload="go();">
<embed id="plugin" type="application/x-test" width="400" height="400" drawmode="solid" color="FF00FFFF"></embed>
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
const utils = window.windowUtils;
function go() {
var plugin = document.getElementById('plugin');
var objLoadingContent = SpecialPowers.wrap(plugin);
ok(!objLoadingContent.activated, "plugin should not be activated");
SimpleTest.waitForFocus(afterWindowFocus);
}
function afterWindowFocus() {
var plugin = document.getElementById('plugin');
var objLoadingContent = SpecialPowers.wrap(plugin);
objLoadingContent.playPlugin();
var condition = () => plugin.setColor !== undefined;
SimpleTest.waitForCondition(condition, afterPluginActivation,
"Waited too long for plugin to activate");
}
function afterPluginActivation() {
var plugin = document.getElementById('plugin');
var objLoadingContent = SpecialPowers.wrap(plugin);
ok(objLoadingContent.activated, "plugin should be activated now");
// Triggering a paint and waiting for it to be flushed makes sure
// that both plugin and platform see the plugin element as visible.
// See bug 805330 for details.
plugin.setColor("FF000088");
waitForAllPaintsFlushed(afterPaintsFlushed);
}
function afterPaintsFlushed() {
var plugin = document.getElementById('plugin');
try {
is(plugin.getMouseUpEventCount(), 0, "Plugin should not have received mouse events yet.");
} catch(e) {
ok(false, "plugin.getMouseUpEventCount() shouldn't throw");
}
synthesizeMouseAtCenter(plugin, {});
var condition = () => plugin.getMouseUpEventCount() > 0;
SimpleTest.waitForCondition(condition, afterFirstClick,
"Waited too long for plugin to receive the mouse click");
}
function afterFirstClick() {
var plugin = document.getElementById('plugin');
try {
is(plugin.getMouseUpEventCount(), 1, "Plugin should have received 1 mouse up event.");
} catch(e) {
ok(false, "plugin.getMouseUpEventCount() shouldn't throw");
}
Services.prefs.clearUserPref("plugins.click_to_play");
SimpleTest.finish();
}
</script>
</body>
</html>