Bug 1384464 - Intermittent browser/base/content/test/urlbar/browser_page_action_menu.js.
MozReview-Commit-ID: A2rypvJjvcz
--- a/browser/base/content/test/urlbar/head.js
+++ b/browser/base/content/test/urlbar/head.js
@@ -270,23 +270,35 @@ function promisePanelEvent(panelIDOrNode
}
panel.addEventListener(eventType, () => {
executeSoon(resolve);
}, { once: true });
});
}
function promisePageActionViewShown() {
- return new Promise(resolve => {
- BrowserPageActions.panelNode.addEventListener("ViewShown", (event) => {
- let target = event.originalTarget;
- window.setTimeout(() => {
- resolve(target);
- }, 5000);
- }, { once: true });
+ let dwu = window.QueryInterface(Ci.nsIInterfaceRequestor)
+ .getInterface(Ci.nsIDOMWindowUtils);
+ info("promisePageActionViewShown waiting for ViewShown");
+ return BrowserTestUtils.waitForEvent(BrowserPageActions.panelNode, "ViewShown").then(async event => {
+ let panelViewNode = event.originalTarget;
+ // Wait for the subview to be really truly shown by making sure there's at
+ // least one child with non-zero bounds.
+ info("promisePageActionViewShown waiting for a child node to be visible");
+ await BrowserTestUtils.waitForCondition(() => {
+ let bodyNode = panelViewNode.firstChild;
+ for (let childNode of bodyNode.childNodes) {
+ let bounds = dwu.getBoundsWithoutFlushing(childNode);
+ if (bounds.width > 0 && bounds.height > 0) {
+ return true;
+ }
+ }
+ return false;
+ });
+ return panelViewNode;
});
}
function promiseSpeculativeConnection(httpserver) {
return BrowserTestUtils.waitForCondition(() => {
if (httpserver) {
return httpserver.connectionNumber == 1;
}