browser_ipprotection_proxy_errors.js (1611B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const { IPPChannelFilter } = ChromeUtils.importESModule( 8 "moz-src:///browser/components/ipprotection/IPPChannelFilter.sys.mjs" 9 ); 10 const { IPPNetworkErrorObserver } = ChromeUtils.importESModule( 11 "moz-src:///browser/components/ipprotection/IPPNetworkErrorObserver.sys.mjs" 12 ); 13 14 add_task(async function test_createConnection_and_proxy() { 15 const failConnect = async (request, response) => { 16 response.setStatusLine(request.httpVersion, 500, "Error"); 17 response.setHeader("Content-Type", "text/plain"); 18 response.write("Error"); 19 }; 20 21 await withProxyServer(async proxyInfo => { 22 // Create the IPP connection filter 23 const filter = IPPChannelFilter.create(); 24 filter.initialize("", proxyInfo.server); 25 filter.start(); 26 27 const observer = new IPPNetworkErrorObserver(); 28 const eventFired = new Promise(r => { 29 observer.addEventListener("proxy-http-error", e => { 30 r(e); 31 }); 32 }); 33 observer.addIsolationKey(filter.isolationKey); 34 observer.start(); 35 36 let tab = await BrowserTestUtils.openNewForegroundTab( 37 gBrowser, 38 `https://example.com/`, 39 false // waitForLoad 40 ); 41 const { detail } = await eventFired; 42 await BrowserTestUtils.removeTab(tab); 43 44 Assert.equal(detail.httpStatus, 500); 45 Assert.equal(detail.isolationKey, filter.isolationKey); 46 Assert.equal(detail.level, "error"); 47 }, failConnect); 48 });