From 7d5d797ff3d5f8d74a176839a6575a40e87161ac Mon Sep 17 00:00:00 2001 From: Neil Deakin Date: Fri, 22 May 2020 19:03:02 +0000 Subject: [PATCH] Bug 1640240, remove message manager usage from browser_test_focus_after_modal_state.js, r=smaug Differential Revision: https://phabricator.services.mozilla.com/D76517 --- .../browser_test_focus_after_modal_state.js | 47 ++++++++----------- 1 file changed, 19 insertions(+), 28 deletions(-) diff --git a/dom/tests/browser/browser_test_focus_after_modal_state.js b/dom/tests/browser/browser_test_focus_after_modal_state.js index 9bc6afd39c50..9036728e80ca 100644 --- a/dom/tests/browser/browser_test_focus_after_modal_state.js +++ b/dom/tests/browser/browser_test_focus_after_modal_state.js @@ -12,17 +12,6 @@ function awaitAndClosePrompt() { Services.obs.addObserver(onDialogShown, "tabmodal-dialog-loaded"); }); } -/* global messageManager */ -let lastMessageReceived = ""; -function waitForMessage(message) { - return new Promise((resolve, reject) => { - messageManager.addMessageListener(message, function() { - ok(true, "Received message: " + message); - lastMessageReceived = message; - resolve(); - }); - }); -} add_task(async function() { let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_URL); @@ -38,31 +27,37 @@ add_task(async function() { ); }); - await ContentTask.spawn(browser, null, async function() { - content.document - .getElementById("edit") - .contentDocument.addEventListener("focus", function(event) { - sendAsyncMessage("Test:FocusReceived"); + let focusBlurPromise = SpecialPowers.spawn(browser, [], async function() { + let focusOccurred = false; + let blurOccurred = false; + + return new Promise(resolve => { + let doc = content.document.getElementById("edit").contentDocument; + doc.addEventListener("focus", function(event) { + focusOccurred = true; + if (blurOccurred) { + resolve(true); + } }); - content.document - .getElementById("edit") - .contentDocument.addEventListener("blur", function(event) { - sendAsyncMessage("Test:BlurReceived"); + doc.addEventListener("blur", function(event) { + blurOccurred = true; + if (focusOccurred) { + resolve(false); + } }); + }); }); // Click on div that triggers a prompt, and then check that focus is back on // the editable iframe. let dialogShown = awaitAndClosePrompt(); - let waitForBlur = waitForMessage("Test:BlurReceived"); - let waitForFocus = waitForMessage("Test:FocusReceived"); await SpecialPowers.spawn(tab.linkedBrowser, [], async function() { let div = content.document.getElementById("clickMeDiv"); div.click(); }); await dialogShown; - await Promise.all([waitForBlur, waitForFocus]); + let blurCameFirst = await focusBlurPromise; await SpecialPowers.spawn(browser, [], async function() { is( content.document.activeElement, @@ -70,11 +65,7 @@ add_task(async function() { "Focus should be back on iframe element" ); }); - is( - lastMessageReceived, - "Test:FocusReceived", - "Should receive blur and then focus event" - ); + ok(blurCameFirst, "Should receive blur and then focus event"); BrowserTestUtils.removeTab(tab); });