From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../browser/content-policy/browser_dnsPrefetch.js | 233 +++++++++++++++++++++ 1 file changed, 233 insertions(+) create mode 100644 comm/mail/test/browser/content-policy/browser_dnsPrefetch.js (limited to 'comm/mail/test/browser/content-policy/browser_dnsPrefetch.js') diff --git a/comm/mail/test/browser/content-policy/browser_dnsPrefetch.js b/comm/mail/test/browser/content-policy/browser_dnsPrefetch.js new file mode 100644 index 0000000000..2f29d0fa35 --- /dev/null +++ b/comm/mail/test/browser/content-policy/browser_dnsPrefetch.js @@ -0,0 +1,233 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * The purpose of this test is to ensure that dns prefetch is turned off in + * the message pane and compose windows. It also checks that dns prefetch is + * currently turned off in content tabs, although when bug 545407 is fixed, it + * should be turned back on again. + */ + +"use strict"; + +var composeHelper = ChromeUtils.import( + "resource://testing-common/mozmill/ComposeHelpers.jsm" +); +var { open_content_tab_with_url } = ChromeUtils.import( + "resource://testing-common/mozmill/ContentTabHelpers.jsm" +); +var { + assert_nothing_selected, + assert_selected_and_displayed, + be_in_folder, + close_message_window, + create_folder, + get_about_3pane, + get_about_message, + mc, + open_selected_message_in_new_window, + select_click_row, + select_shift_click_row, +} = ChromeUtils.import( + "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" +); + +var folder = null; +var gMsgNo = 0; +var gMsgHdr = null; + +// These two constants are used to build the message body. +var msgBody = + '\n' + + "\n" + + "\n" + + "\n" + + '\n' + + "\n" + + '\n' + + "dns prefetch test message\n" + + "\n\n"; + +add_setup(async function () { + folder = await create_folder("dnsPrefetch"); +}); + +function addToFolder(aSubject, aBody, aFolder) { + let msgId = Services.uuid.generateUUID() + "@mozillamessaging.invalid"; + + let source = + "From - Sat Nov 1 12:39:54 2008\n" + + "X-Mozilla-Status: 0001\n" + + "X-Mozilla-Status2: 00000000\n" + + "Message-ID: <" + + msgId + + ">\n" + + "Date: Wed, 11 Jun 2008 20:32:02 -0400\n" + + "From: Tester \n" + + "User-Agent: Thunderbird 3.0a2pre (Macintosh/2008052122)\n" + + "MIME-Version: 1.0\n" + + "To: recipient@mozillamessaging.invalid\n" + + "Subject: " + + aSubject + + "\n" + + "Content-Type: text/html; charset=ISO-8859-1\n" + + "Content-Transfer-Encoding: 7bit\n" + + "\n" + + aBody + + "\n"; + + aFolder.QueryInterface(Ci.nsIMsgLocalMailFolder); + aFolder.gettingNewMessages = true; + + aFolder.addMessage(source); + aFolder.gettingNewMessages = false; + + return aFolder.msgDatabase.getMsgHdrForMessageID(msgId); +} + +function addMsgToFolder(folder) { + let msgDbHdr = addToFolder("exposed test message " + gMsgNo, msgBody, folder); + + // select the newly created message + gMsgHdr = select_click_row(gMsgNo); + + Assert.equal( + msgDbHdr, + gMsgHdr, + "Should have selected the same message header as the generated header" + ); + + assert_selected_and_displayed(gMsgNo); + + return gMsgNo++; +} + +/** + * Check remote content in a compose window. + * + * @param test The test from TESTS that is being performed. + * @param replyType The type of the compose window, 0 = normal compose, + * 1 = reply, 2 = forward. + * @param loadAllowed Whether or not the load is expected to be allowed. + */ +function checkComposeWindow(replyType) { + let errMsg = ""; + let replyWindow = null; + switch (replyType) { + case 0: + replyWindow = composeHelper.open_compose_new_mail(); + errMsg = "new mail"; + break; + case 1: + replyWindow = composeHelper.open_compose_with_reply(); + errMsg = "reply"; + break; + case 2: + replyWindow = composeHelper.open_compose_with_forward(); + errMsg = "forward"; + break; + } + + // Check the prefetch in the compose window. + Assert.ok( + !replyWindow.window.document.getElementById("messageEditor").docShell + .allowDNSPrefetch, + `Should have disabled DNS prefetch in the compose window (${errMsg})` + ); + + composeHelper.close_compose_window(replyWindow); +} + +add_task(async function test_dnsPrefetch_message() { + // Now we have started up, simply check that DNS prefetch is disabled + let aboutMessage = get_about_message(); + Assert.ok( + !aboutMessage.document.getElementById("messagepane").docShell + .allowDNSPrefetch, + "messagepane should have disabled DNS prefetch at startup" + ); + let about3Pane = get_about_3pane(); + Assert.ok( + !about3Pane.document.getElementById("multiMessageBrowser").docShell + .allowDNSPrefetch.allowDNSPrefetch, + "multimessagepane should have disabled DNS prefetch at startup" + ); + + await be_in_folder(folder); + + assert_nothing_selected(); + + let firstMsg = addMsgToFolder(folder); + + // Now we've got a message selected, check again. + Assert.ok( + !aboutMessage.document.getElementById("messagepane").docShell + .allowDNSPrefetch, + "Should keep DNS Prefetch disabled on messagepane after selecting message" + ); + + let secondMsg = addMsgToFolder(folder); + select_shift_click_row(firstMsg); + assert_selected_and_displayed(firstMsg, secondMsg); + + Assert.ok( + !about3Pane.document.getElementById("multiMessageBrowser").docShell + .allowDNSPrefetch, + "Should keep DNS Prefetch disabled on multimessage after selecting message" + ); + + select_shift_click_row(secondMsg); +}); + +add_task(async function test_dnsPrefetch_standaloneMessage() { + let msgc = await open_selected_message_in_new_window(); + assert_selected_and_displayed(msgc, gMsgHdr); + + // Check the docshell. + let aboutMessage = get_about_message(msgc.window); + Assert.ok( + !aboutMessage.document.getElementById("messagepane").docShell + .allowDNSPrefetch, + "Should disable DNS Prefetch on messagepane in standalone message window." + ); + + close_message_window(msgc); +}); + +add_task(function test_dnsPrefetch_compose() { + checkComposeWindow(0); + checkComposeWindow(1); + checkComposeWindow(2); +}); + +add_task(async function test_dnsPrefetch_contentTab() { + // To open a tab we're going to have to cheat and use tabmail so we can load + // in the data of what we want. + let tabmail = mc.window.document.getElementById("tabmail"); + let preCount = tabmail.tabContainer.allTabs.length; + + let dataurl = + "data:text/html,test dns prefetch" + + "test dns prefetch"; + + let newTab = open_content_tab_with_url(dataurl); + + await SpecialPowers.spawn(tabmail.getBrowserForSelectedTab(), [], () => { + Assert.ok(docShell, "docShell should be available"); + Assert.ok(docShell.allowDNSPrefetch, "allowDNSPrefetch should be enabled"); + }); + + tabmail.closeTab(newTab); + + if (tabmail.tabContainer.allTabs.length != preCount) { + throw new Error("The content tab didn't close"); + } + + Assert.report( + false, + undefined, + undefined, + "Test ran to completion successfully" + ); +}); -- cgit v1.2.3