Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

/* Any copyright is dedicated to the Public Domain.
"use strict";
// Test that inline style sheets get correct names if they are saved to disk and
// that those names survice a reload but not navigation to another page.
const FIRST_TEST_PAGE = TEST_BASE_HTTPS + "inline-1.html";
const SECOND_TEST_PAGE = TEST_BASE_HTTPS + "inline-2.html";
const SAVE_PATH = "test.css";
add_task(async function () {
const { ui } = await openStyleEditorForURL(FIRST_TEST_PAGE);
testIndentifierGeneration(ui);
await saveFirstInlineStyleSheet(ui);
await testFriendlyNamesAfterSave(ui);
await reloadPageAndWaitForStyleSheets(ui, 2);
await testFriendlyNamesAfterSave(ui);
await navigateToAndWaitForStyleSheets(SECOND_TEST_PAGE, ui, 2);
await testFriendlyNamesAfterNavigation(ui);
});
function testIndentifierGeneration(ui) {
const fakeStyleSheetFile = {
nodeHref: "http://example.com/",
styleSheetIndex: 1,
};
const fakeInlineStyleSheet = {
href: null,
nodeHref: "http://example.com/",
styleSheetIndex: 2,
};
is(
ui.getStyleSheetIdentifier(fakeStyleSheetFile),
"URI is the identifier of style sheet file."
);
is(
ui.getStyleSheetIdentifier(fakeInlineStyleSheet),
"Inline sheets are identified by their page and position in the page."
);
}
function saveFirstInlineStyleSheet(ui) {
return new Promise(resolve => {
const editor = ui.editors[0];
const destFile = new FileUtils.File(
PathUtils.join(PathUtils.profileDir, SAVE_PATH)
);
editor.saveToFile(destFile, function (file) {
ok(file, "File was correctly saved.");
resolve();
});
});
}
function testFriendlyNamesAfterSave(ui) {
const firstEditor = ui.editors[0];
const secondEditor = ui.editors[1];
// The friendly name of first sheet should've been remembered, the second
// should not be the same (bug 969900).
is(
firstEditor.friendlyName,
SAVE_PATH,
"Friendly name is correct for the saved inline style sheet."
);
isnot(
secondEditor.friendlyName,
SAVE_PATH,
"Friendly name for the second inline sheet isn't the same as the first."
);
return Promise.resolve(null);
}
function testFriendlyNamesAfterNavigation(ui) {
const firstEditor = ui.editors[0];
const secondEditor = ui.editors[1];
// Inline style sheets shouldn't have the name of previously saved file as the
// page is different.
isnot(
firstEditor.friendlyName,
SAVE_PATH,
"The first editor doesn't have the save path as a friendly name."
);
isnot(
secondEditor.friendlyName,
SAVE_PATH,
"The second editor doesn't have the save path as a friendly name."
);
return Promise.resolve(null);
}