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 --- .../content-policy/browser_exposedInContentTabs.js | 175 +++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 comm/mail/test/browser/content-policy/browser_exposedInContentTabs.js (limited to 'comm/mail/test/browser/content-policy/browser_exposedInContentTabs.js') diff --git a/comm/mail/test/browser/content-policy/browser_exposedInContentTabs.js b/comm/mail/test/browser/content-policy/browser_exposedInContentTabs.js new file mode 100644 index 0000000000..faf6ce975c --- /dev/null +++ b/comm/mail/test/browser/content-policy/browser_exposedInContentTabs.js @@ -0,0 +1,175 @@ +/* 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 remote content can't gain access + * to messages by loading their URIs. + */ + +"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, + create_folder, + mc, + select_click_row, +} = ChromeUtils.import( + "resource://testing-common/mozmill/FolderDisplayHelpers.jsm" +); + +var { MailServices } = ChromeUtils.import( + "resource:///modules/MailServices.jsm" +); + +var folder = null; +var gMsgNo = 0; + +var url = + "http://mochi.test:8888/browser/comm/mail/test/browser/content-policy/html/"; + +// These two constants are used to build the message body. +var msgBody = + '\n' + + "\n" + + "\n" + + "\n" + + '\n' + + "\n" + + '\n' + + '\n' + + "\n\n"; + +add_setup(async function () { + folder = await create_folder("exposedInContent"); +}); + +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 + let msgHdr = select_click_row(gMsgNo); + + if (msgDbHdr != msgHdr) { + throw new Error( + "Selected Message Header is not the same as generated header" + ); + } + + assert_selected_and_displayed(gMsgNo); + + ++gMsgNo; + + // We also want to return the url of the message, so save that here. + let msgSimpleURL = msgHdr.folder.getUriForMsg(msgHdr); + + let msgService = MailServices.messageServiceFromURI(msgSimpleURL); + + let neckoURL = msgService.getUrlForUri(msgSimpleURL); + + // This is the full url to the message that we want (i.e. passing this to + // a browser element or iframe will display it). + return neckoURL.spec; +} + +async function checkContentTab(msgURL) { + // 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 preCount = + mc.window.document.getElementById("tabmail").tabContainer.allTabs.length; + + let dataurl = + "data:text/html,test exposed" + + '