mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
bug 820303 - scripted click-to-play plugins: handle deny permission r=jaws
This commit is contained in:
parent
90fdd69121
commit
df5293530a
@ -256,8 +256,12 @@ var gPluginHandler = {
|
||||
|
||||
let cwu = contentWindow.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
let haveVisibleCTPPlugin = cwu.plugins.some(function(plugin) {
|
||||
let plugins = cwu.plugins.filter(function(plugin) {
|
||||
let objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
|
||||
return gPluginHandler.canActivatePlugin(objLoadingContent);
|
||||
});
|
||||
|
||||
let haveVisibleCTPPlugin = plugins.some(function(plugin) {
|
||||
let doc = plugin.ownerDocument;
|
||||
let overlay = doc.getAnonymousElementByAttribute(plugin, "class", "mainBox");
|
||||
if (!overlay)
|
||||
@ -271,12 +275,11 @@ var gPluginHandler = {
|
||||
let isInvisible = ((computedStyle.width == "240px" &&
|
||||
computedStyle.height == "200px") ||
|
||||
gPluginHandler.isTooSmall(plugin, overlay));
|
||||
return (!isInvisible &&
|
||||
gPluginHandler.canActivatePlugin(objLoadingContent));
|
||||
return !isInvisible;
|
||||
});
|
||||
|
||||
let notification = PopupNotifications.getNotification("click-to-play-plugins", aBrowser);
|
||||
if (notification && !haveVisibleCTPPlugin && !this._notificationDisplayedOnce) {
|
||||
if (notification && plugins.length > 0 && !haveVisibleCTPPlugin && !this._notificationDisplayedOnce) {
|
||||
notification.dismissed = false;
|
||||
PopupNotifications._update(notification.anchorElement);
|
||||
this._notificationDisplayedOnce = true;
|
||||
|
@ -1,5 +1,5 @@
|
||||
const gHttpTestRoot = getRootDirectory(gTestPath).replace("chrome://mochitests/content/", "http://127.0.0.1:8888/");
|
||||
const EXPECTED_PLUGINSCRIPTED_EVENT_COUNT = 6;
|
||||
const EXPECTED_PLUGINSCRIPTED_EVENT_COUNT = 7;
|
||||
|
||||
var gTestBrowser = null;
|
||||
var gNextTestList = [];
|
||||
@ -90,6 +90,35 @@ function testNoEventFired() {
|
||||
ok(notification.dismissed, "notification should not be showing (" + getCurrentTestLocation() + ")");
|
||||
ok(!gPluginScriptedFired, "PluginScripted should not have fired (" + getCurrentTestLocation() + ")");
|
||||
|
||||
prepareTest(testDenyPermissionPart1, gHttpTestRoot + "plugin_test_noScriptNoPopup.html");
|
||||
}
|
||||
|
||||
function testDenyPermissionPart1() {
|
||||
var notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
ok(notification, "test deny permission: should have a click-to-play notification");
|
||||
// Simulate clicking the "Deny Always" button.
|
||||
notification.secondaryActions[1].callback();
|
||||
gPluginScriptedFired = false;
|
||||
prepareTest(testDenyPermissionPart2, gHttpTestRoot + "plugin_test_scriptedPopup1.html");
|
||||
}
|
||||
|
||||
function testDenyPermissionPart2() {
|
||||
var condition = function() gPluginScriptedFired;
|
||||
waitForCondition(condition, testDenyPermissionPart3, "test deny permission: waited too long for PluginScripted event");
|
||||
}
|
||||
|
||||
function testDenyPermissionPart3() {
|
||||
var condition = function() gTestBrowser._pluginScriptedState == gPluginHandler.PLUGIN_SCRIPTED_STATE_DONE;
|
||||
waitForCondition(condition, testDenyPermissionPart4, "test deny permission: waited too long for PluginScripted event handling");
|
||||
}
|
||||
|
||||
function testDenyPermissionPart4() {
|
||||
var notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
ok(!notification, "test deny permission: should not have a click-to-play notification");
|
||||
|
||||
var pluginHost = Components.classes["@mozilla.org/plugin/host;1"].getService(Components.interfaces.nsIPluginHost);
|
||||
Services.perms.remove("127.0.0.1:8888", pluginHost.getPermissionStringForType("application/x-test"));
|
||||
|
||||
runNextTest();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user