Bug 1413089 - Fix intermittent browser_ext_themes_dynamic_getCurrent.js. r=mixedpuppy
MozReview-Commit-ID: MylrmgEfz9
--- a/toolkit/components/extensions/test/browser/browser_ext_themes_dynamic_getCurrent.js
+++ b/toolkit/components/extensions/test/browser/browser_ext_themes_dynamic_getCurrent.js
@@ -32,16 +32,28 @@ add_task(async function test_get_current
"headerURL": "image2.png",
},
"colors": {
"accentcolor": ACCENT_COLOR_2,
"textcolor": TEXT_COLOR_2,
},
};
+ function promiseWindowChanged(winId) {
+ return new Promise(resolve => {
+ let listener = windowId => {
+ if (windowId === winId) {
+ browser.windows.onFocusChanged.removeListener(listener);
+ resolve();
+ }
+ };
+ browser.windows.onFocusChanged.addListener(listener);
+ });
+ }
+
function testTheme1(returnedTheme) {
browser.test.assertTrue(
returnedTheme.images.headerURL.includes("image1.png"),
"Theme 1 header URL should be applied");
browser.test.assertEq(
ACCENT_COLOR_1, returnedTheme.colors.accentcolor,
"Theme 1 accent color should be applied");
browser.test.assertEq(
@@ -78,35 +90,41 @@ add_task(async function test_get_current
browser.test.log("Testing getCurrent() with after theme.update(windowId)");
const secondWin = await browser.windows.create();
await browser.theme.update(secondWin.id, theme2);
testTheme2(await browser.theme.getCurrent());
testTheme1(await browser.theme.getCurrent(firstWin.id));
testTheme2(await browser.theme.getCurrent(secondWin.id));
browser.test.log("Testing getCurrent() after window focus change");
+ let focusChanged = promiseWindowChanged(firstWin.id);
await browser.windows.update(firstWin.id, {focused: true});
+ await focusChanged;
testTheme1(await browser.theme.getCurrent());
testTheme1(await browser.theme.getCurrent(firstWin.id));
testTheme2(await browser.theme.getCurrent(secondWin.id));
browser.test.log("Testing getCurrent() after another window focus change");
+ focusChanged = promiseWindowChanged(secondWin.id);
await browser.windows.update(secondWin.id, {focused: true});
+ await focusChanged;
testTheme2(await browser.theme.getCurrent());
testTheme1(await browser.theme.getCurrent(firstWin.id));
testTheme2(await browser.theme.getCurrent(secondWin.id));
browser.test.log("Testing getCurrent() after theme.reset(windowId)");
await browser.theme.reset(firstWin.id);
testTheme2(await browser.theme.getCurrent());
testEmptyTheme(await browser.theme.getCurrent(firstWin.id));
testTheme2(await browser.theme.getCurrent(secondWin.id));
browser.test.log("Testing getCurrent() after reset and window focus change");
+ focusChanged = promiseWindowChanged(firstWin.id);
await browser.windows.update(firstWin.id, {focused: true});
+ await focusChanged;
testEmptyTheme(await browser.theme.getCurrent());
testEmptyTheme(await browser.theme.getCurrent(firstWin.id));
testTheme2(await browser.theme.getCurrent(secondWin.id));
browser.test.log("Testing getCurrent() after theme.update(windowId)");
await browser.theme.update(firstWin.id, theme1);
testTheme1(await browser.theme.getCurrent());
testTheme1(await browser.theme.getCurrent(firstWin.id));