forked from mirrors/gecko-dev
101 lines
3.2 KiB
JavaScript
101 lines
3.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
// When strings containing URLs are entered into the webconsole,
|
|
// ensure that the output can be clicked to open those URLs.
|
|
// This test only check that clicking on a link works as expected,
|
|
// as the output is already tested in Reps (in Github).
|
|
|
|
"use strict";
|
|
|
|
const TEST_URI = "data:text/html;charset=utf8,<!DOCTYPE html>Clickable URLS";
|
|
|
|
add_task(async function () {
|
|
const hud = await openNewTabAndConsole(TEST_URI);
|
|
const currentTab = gBrowser.selectedTab;
|
|
|
|
const firstURL = "http://example.com/";
|
|
const secondURL = "http://example.com/?id=secondURL";
|
|
SpecialPowers.spawn(
|
|
gBrowser.selectedBrowser,
|
|
[[firstURL, secondURL]],
|
|
urls => {
|
|
content.wrappedJSObject.console.log("Visit ", urls[0], " and ", urls[1]);
|
|
}
|
|
);
|
|
|
|
const node = await waitFor(() => findConsoleAPIMessage(hud, firstURL));
|
|
const [urlEl1, urlEl2] = Array.from(node.querySelectorAll("a.url"));
|
|
|
|
let onTabLoaded = BrowserTestUtils.waitForNewTab(gBrowser, firstURL, true);
|
|
|
|
info("Clicking on the first link");
|
|
urlEl1.click();
|
|
|
|
let newTab = await onTabLoaded;
|
|
// We only need to check that newTab is truthy since
|
|
// BrowserTestUtils.waitForNewTab checks the URL.
|
|
ok(newTab, "The expected tab was opened.");
|
|
|
|
info("Select the first tab again");
|
|
gBrowser.selectedTab = currentTab;
|
|
|
|
info("Ctrl/Cmd + Click on the second link");
|
|
onTabLoaded = BrowserTestUtils.waitForNewTab(gBrowser, secondURL, true);
|
|
|
|
const isMacOS = Services.appinfo.OS === "Darwin";
|
|
EventUtils.sendMouseEvent(
|
|
{
|
|
type: "click",
|
|
[isMacOS ? "metaKey" : "ctrlKey"]: true,
|
|
},
|
|
urlEl2,
|
|
hud.ui.window
|
|
);
|
|
|
|
newTab = await onTabLoaded;
|
|
|
|
ok(newTab, "The expected tab was opened.");
|
|
is(
|
|
newTab._tPos,
|
|
currentTab._tPos + 1,
|
|
"The new tab was opened in the position to the right of the current tab"
|
|
);
|
|
is(gBrowser.selectedTab, currentTab, "The tab was opened in the background");
|
|
|
|
info(
|
|
"Test that Ctrl/Cmd + Click on a link in an array doesn't open the sidebar"
|
|
);
|
|
const onMessage = waitForMessageByType(hud, "Visit", ".console-api");
|
|
SpecialPowers.spawn(gBrowser.selectedBrowser, [firstURL], url => {
|
|
content.wrappedJSObject.console.log([`Visit ${url}`]);
|
|
});
|
|
const message = await onMessage;
|
|
const urlEl3 = message.node.querySelector("a.url");
|
|
|
|
onTabLoaded = BrowserTestUtils.waitForNewTab(gBrowser, firstURL, true);
|
|
|
|
AccessibilityUtils.setEnv({
|
|
// Focusable element is put back in focus order when its container row is in
|
|
// focused/active state.
|
|
nonNegativeTabIndexRule: false,
|
|
});
|
|
EventUtils.sendMouseEvent(
|
|
{
|
|
type: "click",
|
|
[isMacOS ? "metaKey" : "ctrlKey"]: true,
|
|
},
|
|
urlEl3,
|
|
hud.ui.window
|
|
);
|
|
AccessibilityUtils.resetEnv();
|
|
await onTabLoaded;
|
|
|
|
info("Log a message and wait for it to appear so we know the UI was updated");
|
|
const onSmokeMessage = waitForMessageByType(hud, "smoke", ".console-api");
|
|
SpecialPowers.spawn(gBrowser.selectedBrowser, [], () => {
|
|
content.wrappedJSObject.console.log("smoke");
|
|
});
|
|
await onSmokeMessage;
|
|
ok(!hud.ui.document.querySelector(".sidebar"), "Sidebar wasn't closed");
|
|
});
|