summaryrefslogtreecommitdiff
path: root/browser/base/content/test/browser_bug787619.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/browser_bug787619.js')
-rw-r--r--browser/base/content/test/browser_bug787619.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/browser/base/content/test/browser_bug787619.js b/browser/base/content/test/browser_bug787619.js
new file mode 100644
index 000000000..1917100eb
--- /dev/null
+++ b/browser/base/content/test/browser_bug787619.js
@@ -0,0 +1,52 @@
+const gHttpTestRoot = getRootDirectory(gTestPath).replace("chrome://mochitests/content/", "http://127.0.0.1:8888/");
+
+let gTestBrowser = null;
+let gWrapperClickCount = 0;
+
+function test() {
+ waitForExplicitFinish();
+ registerCleanupFunction(function() {
+ Services.prefs.clearUserPref("plugins.click_to_play");
+ let plugin = getTestPlugin();
+ plugin.enabledState = Ci.nsIPluginTag.STATE_ENABLED;
+ });
+ Services.prefs.setBoolPref("plugins.click_to_play", true);
+ let plugin = getTestPlugin();
+ plugin.enabledState = Ci.nsIPluginTag.STATE_CLICKTOPLAY;
+
+ gBrowser.selectedTab = gBrowser.addTab();
+ gTestBrowser = gBrowser.selectedBrowser;
+ gTestBrowser.addEventListener("load", pageLoad, true);
+ gTestBrowser.contentWindow.location = gHttpTestRoot + "plugin_bug787619.html";
+}
+
+function pageLoad() {
+ // Due to layout being async, "PluginBindAttached" may trigger later.
+ // This forces a layout flush, thus triggering it, and schedules the
+ // test so it is definitely executed afterwards.
+ gTestBrowser.contentDocument.getElementById('plugin').clientTop;
+ executeSoon(part1);
+}
+
+function part1() {
+ let wrapper = gTestBrowser.contentDocument.getElementById('wrapper');
+ wrapper.addEventListener('click', function() ++gWrapperClickCount, false);
+
+ let plugin = gTestBrowser.contentDocument.getElementById('plugin');
+ ok(plugin, 'got plugin element');
+ ok(!plugin.activated, 'plugin should not be activated');
+ ok(PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser).dismissed, "Doorhanger should not be open");
+
+ EventUtils.synthesizeMouseAtCenter(plugin, {}, gTestBrowser.contentWindow);
+ let condition = function() !PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser).dismissed;
+ waitForCondition(condition, part2,
+ 'waited too long for plugin to activate');
+}
+
+function part2() {
+ is(gWrapperClickCount, 0, 'wrapper should not have received any clicks');
+ gTestBrowser.removeEventListener("load", pageLoad, true);
+ gBrowser.removeCurrentTab();
+ window.focus();
+ finish();
+}