forked from mirrors/gecko-dev
151 lines
4.2 KiB
JavaScript
151 lines
4.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
async function setupPrefs() {
|
|
await setDefaultTopSites();
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
[
|
|
"browser.newtabpage.activity-stream.discoverystream.config",
|
|
JSON.stringify({
|
|
api_key_pref: "extensions.pocket.oAuthConsumerKey",
|
|
collapsible: true,
|
|
enabled: true,
|
|
show_spocs: false,
|
|
hardcoded_layout: false,
|
|
personalized: false,
|
|
layout_endpoint:
|
|
"https://example.com/browser/browser/components/newtab/test/browser/ds_layout.json",
|
|
}),
|
|
],
|
|
[
|
|
"browser.newtabpage.activity-stream.discoverystream.endpoints",
|
|
"https://example.com",
|
|
],
|
|
],
|
|
});
|
|
}
|
|
|
|
async function resetPrefs() {
|
|
// We set 5 prefs in setupPrefs, so we should reset 5 prefs.
|
|
// 1 popPrefEnv from pushPrefEnv
|
|
// and 4 popPrefEnv happen internally in setDefaultTopSites.
|
|
await SpecialPowers.popPrefEnv();
|
|
await SpecialPowers.popPrefEnv();
|
|
await SpecialPowers.popPrefEnv();
|
|
await SpecialPowers.popPrefEnv();
|
|
await SpecialPowers.popPrefEnv();
|
|
}
|
|
|
|
let initialHeight;
|
|
let initialWidth;
|
|
function setSize(width, height) {
|
|
initialHeight = window.innerHeight;
|
|
initialWidth = window.innerWidth;
|
|
let resizePromise = BrowserTestUtils.waitForEvent(window, "resize", false);
|
|
window.resizeTo(width, height);
|
|
return resizePromise;
|
|
}
|
|
|
|
function resetSize() {
|
|
let resizePromise = BrowserTestUtils.waitForEvent(window, "resize", false);
|
|
window.resizeTo(initialWidth, initialHeight);
|
|
return resizePromise;
|
|
}
|
|
|
|
add_task(async function test_newtab_last_LinkMenu() {
|
|
await setupPrefs();
|
|
|
|
// Open about:newtab without using the default load listener
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(
|
|
gBrowser,
|
|
"about:newtab",
|
|
false
|
|
);
|
|
|
|
// Specially wait for potentially preloaded browsers
|
|
let browser = tab.linkedBrowser;
|
|
await waitForPreloaded(browser);
|
|
|
|
// Wait for React to render something
|
|
await BrowserTestUtils.waitForCondition(
|
|
() =>
|
|
SpecialPowers.spawn(
|
|
browser,
|
|
[],
|
|
() => content.document.getElementById("root").children.length
|
|
),
|
|
"Should render activity stream content"
|
|
);
|
|
|
|
// Set the window to a small enough size to trigger menus that might overflow.
|
|
await setSize(600, 450);
|
|
|
|
// Test context menu position for topsites.
|
|
await SpecialPowers.spawn(browser, [], async () => {
|
|
// Topsites might not be ready, so wait for the button.
|
|
await ContentTaskUtils.waitForCondition(
|
|
() =>
|
|
content.document.querySelector(
|
|
".top-site-outer:nth-child(2n) .context-menu-button"
|
|
),
|
|
"Wait for the Pocket card and button"
|
|
);
|
|
const topsiteOuter = content.document.querySelector(
|
|
".top-site-outer:nth-child(2n)"
|
|
);
|
|
const topsiteContextMenuButton = topsiteOuter.querySelector(
|
|
".context-menu-button"
|
|
);
|
|
|
|
topsiteContextMenuButton.click();
|
|
|
|
await ContentTaskUtils.waitForCondition(
|
|
() => topsiteOuter.classList.contains("active"),
|
|
"Wait for the menu to be active"
|
|
);
|
|
|
|
is(
|
|
content.window.scrollMaxX,
|
|
0,
|
|
"there should be no horizontal scroll bar"
|
|
);
|
|
});
|
|
|
|
// Test context menu position for topstories.
|
|
await SpecialPowers.spawn(browser, [], async () => {
|
|
// Pocket section might take a bit more time to load,
|
|
// so wait for the button to be ready.
|
|
await ContentTaskUtils.waitForCondition(
|
|
() =>
|
|
content.document.querySelector(
|
|
".ds-card:nth-child(1n) .context-menu-button"
|
|
),
|
|
"Wait for the Pocket card and button"
|
|
);
|
|
|
|
const dsCard = content.document.querySelector(".ds-card:nth-child(1n)");
|
|
const dsCarContextMenuButton = dsCard.querySelector(".context-menu-button");
|
|
|
|
dsCarContextMenuButton.click();
|
|
|
|
await ContentTaskUtils.waitForCondition(
|
|
() => dsCard.classList.contains("active"),
|
|
"Wait for the menu to be active"
|
|
);
|
|
|
|
is(
|
|
content.window.scrollMaxX,
|
|
0,
|
|
"there should be no horizontal scroll bar"
|
|
);
|
|
});
|
|
|
|
// Resetting the window size to what it was.
|
|
await resetSize();
|
|
// Resetting prefs we set for this test.
|
|
await resetPrefs();
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|