mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 882858 - Add a "showing" notification to PopupNotifications, r=jaws sr=gavin
This commit is contained in:
parent
ea547b000f
commit
db222ba461
@ -132,7 +132,10 @@ function part11() {
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
function part12() {
|
||||
function part12(type) {
|
||||
if (type != "shown") {
|
||||
return;
|
||||
}
|
||||
let notification = PopupNotifications.getNotification("click-to-play-plugins", gNewWindow.gBrowser.selectedBrowser);
|
||||
notification.options.eventCallback = null;
|
||||
let centerAction = null;
|
||||
|
@ -718,6 +718,9 @@ function test18f() {
|
||||
var objLoadingContent = plugin.QueryInterface(Ci.nsIObjectLoadingContent);
|
||||
ok(!objLoadingContent.activated, "Test 18f, Plugin should not be activated");
|
||||
|
||||
// XXXBAD: this code doesn't do what you think it does! it is actually
|
||||
// observing the "removed" event of the old notification, since we create
|
||||
// a *new* one when the plugin is clicked.
|
||||
notification.options.eventCallback = function() { executeSoon(test18g); };
|
||||
EventUtils.synthesizeMouseAtCenter(plugin, {}, gTestBrowser.contentWindow);
|
||||
}
|
||||
@ -879,7 +882,10 @@ function test21a() {
|
||||
notification.reshow();
|
||||
}
|
||||
|
||||
function test21b() {
|
||||
function test21b(type) {
|
||||
if (type != "shown") {
|
||||
return;
|
||||
}
|
||||
var notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
notification.options.eventCallback = null;
|
||||
var centerAction = null;
|
||||
@ -938,7 +944,10 @@ function test21c() {
|
||||
notification.reshow();
|
||||
}
|
||||
|
||||
function test21d() {
|
||||
function test21d(type) {
|
||||
if (type != "shown") {
|
||||
return;
|
||||
}
|
||||
var notification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
notification.options.eventCallback = null;
|
||||
|
||||
|
@ -111,7 +111,10 @@ function testActivateAddSameTypePart2() {
|
||||
popupNotification.reshow();
|
||||
}
|
||||
|
||||
function testActivateAddSameTypePart3() {
|
||||
function testActivateAddSameTypePart3(type) {
|
||||
if (type != "shown") {
|
||||
return;
|
||||
}
|
||||
let popupNotification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
popupNotification.options.eventCallback = null;
|
||||
let centerAction = null;
|
||||
@ -189,7 +192,10 @@ function testActivateAddDifferentTypePart2() {
|
||||
popupNotification.reshow();
|
||||
}
|
||||
|
||||
function testActivateAddDifferentTypePart3() {
|
||||
function testActivateAddDifferentTypePart3(type) {
|
||||
if (type != "shown") {
|
||||
return;
|
||||
}
|
||||
let popupNotification = PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
popupNotification.options.eventCallback = null;
|
||||
let centerAction = null;
|
||||
|
@ -137,6 +137,9 @@ function basicNotification() {
|
||||
case "dismissed":
|
||||
self.dismissalCallbackTriggered = true;
|
||||
break;
|
||||
case "showing":
|
||||
self.showingCallbackTriggered = true;
|
||||
break;
|
||||
case "shown":
|
||||
self.shownCallbackTriggered = true;
|
||||
break;
|
||||
@ -858,6 +861,27 @@ var tests = [
|
||||
this.notification1.remove();
|
||||
this.notification2.remove();
|
||||
}
|
||||
},
|
||||
{ // Test #30 - Showing should be able to modify the popup data
|
||||
run: function() {
|
||||
this.notifyObj = new basicNotification();
|
||||
var normalCallback = this.notifyObj.options.eventCallback;
|
||||
this.notifyObj.options.eventCallback = function (eventName) {
|
||||
if (eventName == "showing") {
|
||||
this.mainAction.label = "Alternate Label";
|
||||
}
|
||||
normalCallback.call(this, eventName);
|
||||
};
|
||||
showNotification(this.notifyObj);
|
||||
},
|
||||
onShown: function(popup) {
|
||||
// checkPopup checks for the matching label. Note that this assumes that
|
||||
// this.notifyObj.mainAction is the same as notification.mainAction,
|
||||
// which could be a problem if we ever decided to deep-copy.
|
||||
checkPopup(popup, this.notifyObj);
|
||||
triggerMainCommand(popup);
|
||||
},
|
||||
onHidden: function() { }
|
||||
}
|
||||
];
|
||||
|
||||
@ -874,6 +898,7 @@ function showNotification(notifyObj) {
|
||||
function checkPopup(popup, notificationObj) {
|
||||
info("[Test #" + gTestIndex + "] checking popup");
|
||||
|
||||
ok(notificationObj.showingCallbackTriggered, "showing callback was triggered");
|
||||
ok(notificationObj.shownCallbackTriggered, "shown callback was triggered");
|
||||
|
||||
let notifications = popup.childNodes;
|
||||
|
@ -10,6 +10,7 @@ Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const NOTIFICATION_EVENT_DISMISSED = "dismissed";
|
||||
const NOTIFICATION_EVENT_REMOVED = "removed";
|
||||
const NOTIFICATION_EVENT_SHOWING = "showing";
|
||||
const NOTIFICATION_EVENT_SHOWN = "shown";
|
||||
|
||||
const ICON_SELECTOR = ".notification-anchor-icon";
|
||||
@ -521,6 +522,9 @@ PopupNotifications.prototype = {
|
||||
_showPanel: function PopupNotifications_showPanel(notificationsToShow, anchorElement) {
|
||||
this.panel.hidden = false;
|
||||
|
||||
notificationsToShow.forEach(function (n) {
|
||||
this._fireCallback(n, NOTIFICATION_EVENT_SHOWING);
|
||||
}, this);
|
||||
this._refreshPanel(notificationsToShow);
|
||||
|
||||
if (this.isPanelOpen && this._currentAnchorElement == anchorElement)
|
||||
|
Loading…
Reference in New Issue
Block a user