/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; add_task(async function switch_print_preview_browsers() { await PrintHelper.withTestPage(async helper => { // Wait for the article state to be determined. await helper.waitForReaderModeReady(); // Start print preview. await helper.startPrint(); let sourcePreviewBrowser = helper.currentPrintPreviewBrowser; { // Assert that we are showing the initial content on default print preview browser let [headerText, headingText] = await SpecialPowers.spawn( sourcePreviewBrowser, [], async function () { return [ content.document.querySelector("header").textContent, content.document.querySelector("h1").textContent, ]; } ); is(headerText, "Site header", "Should have initial content."); is(headingText, "Article title", "Should have initial title."); } // Here we call simplified mode await helper.openMoreSettings(); let simplifyRadio = helper.get("source-version-simplified-radio"); ok(!simplifyRadio.checked, "Simplify page is not checked"); ok(BrowserTestUtils.isVisible(simplifyRadio), "Simplify is shown"); await helper.waitForPreview(() => helper.click(simplifyRadio)); let simplifiedPreviewBrowser = helper.currentPrintPreviewBrowser; is( simplifiedPreviewBrowser.getAttribute("previewtype"), "simplified", "Simplified browser was rendered" ); is( simplifiedPreviewBrowser.closest("stack").getAttribute("previewtype"), "simplified", "Simplified browser is selected" ); ok( BrowserTestUtils.isVisible(simplifiedPreviewBrowser), "Simplified browser is visible" ); ok(simplifyRadio.checked, "Simplify page is checked"); { // Assert that we are showing custom content on simplified print preview browser let [hasHeader, headingText] = await SpecialPowers.spawn( simplifiedPreviewBrowser, [], async function () { return [ !!content.document.querySelector("header"), content.document.querySelector("h1").textContent, ]; } ); ok(!hasHeader, "The header was simplified out"); is(headingText, "Article title", "The heading is still there"); } // Switch back to default print preview content let sourceRadio = helper.get("source-version-source-radio"); ok(!sourceRadio.checked, "Source is not checked"); await helper.waitForPreview(() => helper.click(sourceRadio)); is( helper.currentPrintPreviewBrowser, sourcePreviewBrowser, "Source browser was rendered" ); is( sourcePreviewBrowser.getAttribute("previewtype"), "source", "Source browser was rendered" ); is( sourcePreviewBrowser.closest("stack").getAttribute("previewtype"), "source", "Source browser is selected" ); ok( BrowserTestUtils.isVisible(sourcePreviewBrowser), "Source browser is visible" ); ok(sourceRadio.checked, "Source version is checked"); { // Assert that we are showing the initial content on default print preview browser let headerText = await SpecialPowers.spawn( sourcePreviewBrowser, [], async function () { return content.document.querySelector("header").textContent; } ); is(headerText, "Site header", "Should have initial content."); } await helper.closeDialog(); }, "simplifyArticleSample.html"); }); add_task(async function testPrintBackgroundsDisabledSimplified() { await PrintHelper.withTestPage(async helper => { // Wait for the article state to be determined. await helper.waitForReaderModeReady(); await helper.startPrint(); helper.assertPreviewedWithSettings({ printBGImages: false, printBGColors: false, }); await helper.openMoreSettings(); let printBackgrounds = helper.get("backgrounds-enabled"); ok(!printBackgrounds.checked, "Print backgrounds is not checked"); ok(!printBackgrounds.disabled, "Print backgrounds in not disabled"); await helper.assertSettingsChanged( { printBGImages: false, printBGColors: false }, { printBGImages: true, printBGColors: true }, async () => { await helper.waitForPreview(() => helper.click(printBackgrounds)); } ); // Print backgrounds was enabled for preview. ok(printBackgrounds.checked, "Print backgrounds is checked"); ok(!printBackgrounds.disabled, "Print backgrounds is not disabled"); helper.assertPreviewedWithSettings({ printBGImages: true, printBGColors: true, }); let simplifyRadio = helper.get("source-version-simplified-radio"); ok(!simplifyRadio.checked, "Simplify page is not checked"); ok(BrowserTestUtils.isVisible(simplifyRadio), "Simplify is shown"); // Switch to simplified mode. await helper.waitForPreview(() => helper.click(simplifyRadio)); // Print backgrounds should be disabled, it's incompatible with simplified. ok(!printBackgrounds.checked, "Print backgrounds is now unchecked"); ok(printBackgrounds.disabled, "Print backgrounds has been disabled"); helper.assertPreviewedWithSettings({ printBGImages: false, printBGColors: false, }); // Switch back to source, printBackgrounds is remembered. let sourceRadio = helper.get("source-version-source-radio"); ok(!sourceRadio.checked, "Source is not checked"); ok(BrowserTestUtils.isVisible(sourceRadio), "Source is shown"); await helper.waitForPreview(() => helper.click(sourceRadio)); ok(printBackgrounds.checked, "Print backgrounds setting was remembered"); ok(!printBackgrounds.disabled, "Print backgrounds can be changed again"); helper.assertPreviewedWithSettings({ printBGImages: true, printBGColors: true, }); await helper.closeDialog(); }, "simplifyArticleSample.html"); }); add_task(async function testSimplifyHiddenNonArticle() { await PrintHelper.withTestPage(async helper => { await helper.startPrint(); await helper.openMoreSettings(); let sourceVersionSection = helper.get("source-version-section"); ok( BrowserTestUtils.isHidden(sourceVersionSection), "Source version is hidden" ); await helper.closeDialog(); }, "simplifyNonArticleSample.html"); }); add_task(async function testSimplifyNonArticleTabModal() { await PrintHelper.withTestPage(async helper => { let tab = gBrowser.selectedTab; // Trick browser to think loaded tab has isArticle property set as true tab.linkedBrowser.isArticle = true; // Enter print preview await helper.startPrint(); // Assert that we are showing the initial content on default print preview browser await SpecialPowers.spawn( helper.currentPrintPreviewBrowser, [], async () => { is( content.document.title, "Non article title", "Should have initial content." ); } ); await helper.openMoreSettings(); // Simplify the page. let simplifyRadio = helper.get("source-version-simplified-radio"); ok(!simplifyRadio.checked, "Simplify is off"); await helper.waitForPreview(() => helper.click(simplifyRadio)); let simplifiedPreviewBrowser = helper.currentPrintPreviewBrowser; is( simplifiedPreviewBrowser.getAttribute("previewtype"), "simplified", "The simplified browser is shown" ); // Assert that simplify page option is checked ok(simplifyRadio.checked, "Should have simplify page option checked"); // Assert that we are showing recovery content on simplified print preview browser await SpecialPowers.spawn(simplifiedPreviewBrowser, [], async () => { await ContentTaskUtils.waitForCondition( () => content.document.title === "Failed to load article from page", "Simplified document title should be updated with recovery title." ); }); await helper.closeDialog(); }, "simplifyNonArticleSample.html"); }); add_task(async function testSimplifyHiddenReaderMode() { await PrintHelper.withTestPage(async helper => { let tab = gBrowser.selectedTab; // Trigger reader mode for the tab let readerButton = document.getElementById("reader-mode-button"); await TestUtils.waitForCondition(() => !readerButton.hidden); readerButton.click(); await BrowserTestUtils.browserLoaded(tab.linkedBrowser); // Print from reader mode await helper.startPrint(); await helper.openMoreSettings(); let sourceVersionSection = helper.get("source-version-section"); ok( BrowserTestUtils.isHidden(sourceVersionSection), "Source version is hidden in reader mode" ); await helper.closeDialog(); }, "simplifyArticleSample.html"); });