mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 13:55:43 +00:00
Bug 1434883 - Part 1 - Fix tests for the activated page action panel. r=Gijs
The promisePanelEvent function was unreliable because it did not raise an error if the provided panel did not exist, which caused one of the callers to ignore a missing panel silently. All the callers have now been updated based on whether they expect the panel to exist or not. MozReview-Commit-ID: AGT4rHls4OB --HG-- extra : rebase_source : f95967444ffbd2bbdc99560104845af31b71e94b
This commit is contained in:
parent
0cb35f87a6
commit
815f92794b
@ -560,10 +560,10 @@ add_task(async function sendToDevice_inUrlbar() {
|
||||
Assert.notEqual(urlbarButton, null, "The urlbar button should exist");
|
||||
Assert.ok(!urlbarButton.disabled,
|
||||
"The urlbar button should not be disabled");
|
||||
let panelPromise =
|
||||
promisePanelShown(BrowserPageActions._activatedActionPanelID);
|
||||
EventUtils.synthesizeMouseAtCenter(urlbarButton, {});
|
||||
await panelPromise;
|
||||
// The panel element for _activatedActionPanelID is created synchronously
|
||||
// only after the associated button has been clicked.
|
||||
await promisePanelShown(BrowserPageActions._activatedActionPanelID);
|
||||
Assert.equal(urlbarButton.getAttribute("open"), "true",
|
||||
"Button has open attribute");
|
||||
|
||||
|
@ -266,10 +266,14 @@ function promisePanelHidden(panelIDOrNode) {
|
||||
|
||||
function promisePanelEvent(panelIDOrNode, eventType) {
|
||||
return new Promise(resolve => {
|
||||
let panel = typeof(panelIDOrNode) != "string" ? panelIDOrNode :
|
||||
document.getElementById(panelIDOrNode);
|
||||
if (!panel ||
|
||||
(eventType == "popupshown" && panel.state == "open") ||
|
||||
let panel = panelIDOrNode;
|
||||
if (typeof panel == "string") {
|
||||
panel = document.getElementById(panelIDOrNode);
|
||||
if (!panel) {
|
||||
throw new Error(`Panel with ID "${panelIDOrNode}" does not exist.`);
|
||||
}
|
||||
}
|
||||
if ((eventType == "popupshown" && panel.state == "open") ||
|
||||
(eventType == "popuphidden" && panel.state == "closed")) {
|
||||
executeSoon(resolve);
|
||||
return;
|
||||
|
@ -431,7 +431,7 @@ add_task(async function withSubview() {
|
||||
Assert.notEqual(panelViewButtonNodeUrlbar, null, "panelViewButtonNodeUrlbar");
|
||||
onButtonCommandExpectedButtonID = panelViewButtonIDUrlbar;
|
||||
EventUtils.synthesizeMouseAtCenter(panelViewButtonNodeUrlbar, {});
|
||||
await promisePanelHidden(BrowserPageActions._activatedActionPanelID);
|
||||
assertActivatedPageActionPanelHidden();
|
||||
Assert.equal(onButtonCommandCallCount, 2,
|
||||
"onButtonCommandCallCount should be inc'ed");
|
||||
|
||||
@ -532,7 +532,7 @@ add_task(async function withIframe() {
|
||||
Assert.notEqual(aaPanel, null, "activated-action panel");
|
||||
Assert.equal(aaPanel.anchorNode.id, urlbarButtonID, "aaPanel.anchorNode.id");
|
||||
EventUtils.synthesizeMouseAtCenter(urlbarButtonNode, {});
|
||||
await promisePanelHidden(BrowserPageActions._activatedActionPanelID);
|
||||
assertActivatedPageActionPanelHidden();
|
||||
|
||||
// Click the action's urlbar button.
|
||||
EventUtils.synthesizeMouseAtCenter(urlbarButtonNode, {});
|
||||
@ -546,7 +546,7 @@ add_task(async function withIframe() {
|
||||
Assert.notEqual(aaPanel, null, "aaPanel");
|
||||
Assert.equal(aaPanel.anchorNode.id, urlbarButtonID, "aaPanel.anchorNode.id");
|
||||
EventUtils.synthesizeMouseAtCenter(urlbarButtonNode, {});
|
||||
await promisePanelHidden(BrowserPageActions._activatedActionPanelID);
|
||||
assertActivatedPageActionPanelHidden();
|
||||
|
||||
// Hide the action's button in the urlbar.
|
||||
action.pinnedToUrlbar = false;
|
||||
@ -567,7 +567,7 @@ add_task(async function withIframe() {
|
||||
Assert.equal(aaPanel.anchorNode.id, BrowserPageActions.mainButtonNode.id,
|
||||
"aaPanel.anchorNode.id");
|
||||
EventUtils.synthesizeMouseAtCenter(BrowserPageActions.mainButtonNode, {});
|
||||
await promisePanelHidden(BrowserPageActions._activatedActionPanelID);
|
||||
assertActivatedPageActionPanelHidden();
|
||||
|
||||
// Remove the action.
|
||||
action.remove();
|
||||
@ -1416,6 +1416,10 @@ add_task(async function contextMenu() {
|
||||
});
|
||||
|
||||
|
||||
function assertActivatedPageActionPanelHidden() {
|
||||
Assert.ok(!document.getElementById(BrowserPageActions._activatedActionPanelID));
|
||||
}
|
||||
|
||||
function promisePageActionPanelOpen() {
|
||||
let dwu = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
@ -1459,10 +1463,14 @@ function promisePanelHidden(panelIDOrNode) {
|
||||
|
||||
function promisePanelEvent(panelIDOrNode, eventType) {
|
||||
return new Promise(resolve => {
|
||||
let panel = typeof(panelIDOrNode) != "string" ? panelIDOrNode :
|
||||
document.getElementById(panelIDOrNode);
|
||||
if (!panel ||
|
||||
(eventType == "popupshown" && panel.state == "open") ||
|
||||
let panel = panelIDOrNode;
|
||||
if (typeof panel == "string") {
|
||||
panel = document.getElementById(panelIDOrNode);
|
||||
if (!panel) {
|
||||
throw new Error(`Panel with ID "${panelIDOrNode}" does not exist.`);
|
||||
}
|
||||
}
|
||||
if ((eventType == "popupshown" && panel.state == "open") ||
|
||||
(eventType == "popuphidden" && panel.state == "closed")) {
|
||||
executeSoon(resolve);
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user