/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "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 = { href: "http://example.com/test.css", nodeHref: "http://example.com/", styleSheetIndex: 1, }; const fakeInlineStyleSheet = { href: null, nodeHref: "http://example.com/", styleSheetIndex: 2, }; is( ui.getStyleSheetIdentifier(fakeStyleSheetFile), "http://example.com/test.css", "URI is the identifier of style sheet file." ); is( ui.getStyleSheetIdentifier(fakeInlineStyleSheet), "inline-2-at-http://example.com/", "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); }