browser_downgrade_view_source.js (3035B)
1 // This test ensures that view-source:https falls back to view-source:http 2 "use strict"; 3 4 const TEST_PATH_HTTP = getRootDirectory(gTestPath).replace( 5 "chrome://mochitests/content", 6 "http://example.com" 7 ); 8 9 const TEST_PATH_HTTPS = getRootDirectory(gTestPath).replace( 10 "chrome://mochitests/content", 11 "https://example.com" 12 ); 13 14 async function runTest(desc, url, expectedURI, excpectedContent) { 15 await BrowserTestUtils.withNewTab("about:blank", async function (browser) { 16 let loaded = BrowserTestUtils.browserLoaded(browser, false, null, true); 17 BrowserTestUtils.startLoadingURIString(browser, url); 18 await loaded; 19 20 await SpecialPowers.spawn( 21 browser, 22 [desc, expectedURI, excpectedContent], 23 async function (desc, expectedURI, excpectedContent) { 24 let loadedURI = content.document.documentURI; 25 is(loadedURI, expectedURI, desc); 26 let loadedContent = content.document.body.textContent; 27 is(loadedContent, excpectedContent, desc); 28 } 29 ); 30 31 await SpecialPowers.removePermission( 32 "https-only-load-insecure", 33 "http://example.com" 34 ); 35 }); 36 } 37 38 add_task(async function () { 39 requestLongerTimeout(2); 40 41 await SpecialPowers.pushPrefEnv({ 42 set: [["dom.security.https_first", true]], 43 }); 44 45 await runTest( 46 "URL with query 'downgrade' should be http:", 47 `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?downgrade`, 48 `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?downgrade`, 49 "view-source:http://" 50 ); 51 52 await runTest( 53 "URL with query 'downgrade' should be http and leave query params untouched:", 54 `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?downgrade&https://httpsfirst.com`, 55 `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?downgrade&https://httpsfirst.com`, 56 "view-source:http://" 57 ); 58 59 await runTest( 60 "URL with query 'upgrade' should be https:", 61 `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?upgrade`, 62 `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade`, 63 "view-source:https://" 64 ); 65 66 await runTest( 67 "URL with query 'upgrade' should be https:", 68 `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade`, 69 `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade`, 70 "view-source:https://" 71 ); 72 73 await runTest( 74 "URL with query 'upgrade' should be https and leave query params untouched:", 75 `view-source:${TEST_PATH_HTTP}/file_downgrade_view_source.sjs?upgrade&https://httpsfirst.com`, 76 `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade&https://httpsfirst.com`, 77 "view-source:https://" 78 ); 79 80 await runTest( 81 "URL with query 'upgrade' should be https and leave query params untouched:", 82 `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade&https://httpsfirst.com`, 83 `view-source:${TEST_PATH_HTTPS}/file_downgrade_view_source.sjs?upgrade&https://httpsfirst.com`, 84 "view-source:https://" 85 ); 86 });