mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-18 10:23:08 +09:00
82 lines
3.1 KiB
JavaScript
82 lines
3.1 KiB
JavaScript
const kRed = "rgb(255, 0, 0)";
|
|
const kBlue = "rgb(0, 0, 255)";
|
|
|
|
const prefix = "http://example.com/tests/toolkit/components/places/tests/browser/461710_";
|
|
|
|
add_task(function* () {
|
|
let contentPage = prefix + "iframe.html";
|
|
let normalWindow = yield BrowserTestUtils.openNewBrowserWindow();
|
|
|
|
let browser = normalWindow.gBrowser.selectedBrowser;
|
|
BrowserTestUtils.loadURI(browser, contentPage);
|
|
yield BrowserTestUtils.browserLoaded(browser, contentPage);
|
|
|
|
let privateWindow = yield BrowserTestUtils.openNewBrowserWindow({private: true});
|
|
|
|
browser = privateWindow.gBrowser.selectedBrowser;
|
|
BrowserTestUtils.loadURI(browser, contentPage);
|
|
yield BrowserTestUtils.browserLoaded(browser, contentPage);
|
|
|
|
let tests = [{
|
|
win: normalWindow,
|
|
topic: "uri-visit-saved",
|
|
subtest: "visited_page.html"
|
|
}, {
|
|
win: normalWindow,
|
|
topic: "visited-status-resolution",
|
|
subtest: "link_page.html",
|
|
color: kRed,
|
|
message: "Visited link coloring should work outside of private mode"
|
|
}, {
|
|
win: privateWindow,
|
|
topic: "visited-status-resolution",
|
|
subtest: "link_page-2.html",
|
|
color: kBlue,
|
|
message: "Visited link coloring should not work inside of private mode"
|
|
}, {
|
|
win: normalWindow,
|
|
topic: "visited-status-resolution",
|
|
subtest: "link_page-3.html",
|
|
color: kRed,
|
|
message: "Visited link coloring should work outside of private mode"
|
|
}];
|
|
|
|
let visited_page_url = prefix + tests[0].subtest;
|
|
for (let test of tests) {
|
|
let promise = new Promise(resolve => {
|
|
let uri = NetUtil.newURI(visited_page_url);
|
|
Services.obs.addObserver(function observe(aSubject) {
|
|
if (uri.equals(aSubject.QueryInterface(Ci.nsIURI))) {
|
|
Services.obs.removeObserver(observe, test.topic);
|
|
resolve();
|
|
}
|
|
}, test.topic, false);
|
|
});
|
|
ContentTask.spawn(test.win.gBrowser.selectedBrowser, prefix + test.subtest, function* (aSrc) {
|
|
content.document.getElementById("iframe").src = aSrc;
|
|
});
|
|
yield promise;
|
|
|
|
if (test.color) {
|
|
// In e10s waiting for visited-status-resolution is not enough to ensure links
|
|
// have been updated, because it only tells us that messages to update links
|
|
// have been dispatched. We must still wait for the actual links to update.
|
|
yield BrowserTestUtils.waitForCondition(function* () {
|
|
let color = yield ContentTask.spawn(test.win.gBrowser.selectedBrowser, null, function* () {
|
|
let iframe = content.document.getElementById("iframe");
|
|
let elem = iframe.contentDocument.getElementById("link");
|
|
return content.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIDOMWindowUtils)
|
|
.getVisitedDependentComputedStyle(elem, "", "color");
|
|
});
|
|
return (color == test.color);
|
|
}, test.message);
|
|
// The harness will consider the test as failed overall if there were no
|
|
// passes or failures, so record it as a pass.
|
|
ok(true, test.message);
|
|
}
|
|
}
|
|
|
|
yield BrowserTestUtils.closeWindow(normalWindow);
|
|
yield BrowserTestUtils.closeWindow(privateWindow);
|
|
});
|