browser_star_hsts.js (2273B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ 3 */ 4 /* eslint-disable mozilla/no-arbitrary-setTimeout */ 5 6 var secureURL = 7 "https://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs"; 8 var unsecureURL = 9 // eslint-disable-next-line @microsoft/sdl/no-insecure-url 10 "http://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs"; 11 12 add_task(async function test_star_redirect() { 13 registerCleanupFunction(async () => { 14 // Ensure to remove example.com from the HSTS list. 15 let sss = Cc["@mozilla.org/ssservice;1"].getService( 16 Ci.nsISiteSecurityService 17 ); 18 sss.resetState( 19 // eslint-disable-next-line @microsoft/sdl/no-insecure-url 20 NetUtil.newURI("http://example.com/"), 21 { partitionKey: "(http,example.com)" } 22 ); 23 await PlacesUtils.bookmarks.eraseEverything(); 24 gBrowser.removeCurrentTab(); 25 }); 26 27 let tab = (gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser)); 28 // This will add the page to the HSTS cache. 29 await BrowserTestUtils.loadURIString({ 30 browser: tab.linkedBrowser, 31 uriString: secureURL, 32 }); 33 // This should transparently be redirected to the secure page. 34 await BrowserTestUtils.loadURIString({ 35 browser: tab.linkedBrowser, 36 uriString: unsecureURL, 37 finalURI: secureURL, 38 }); 39 40 await promiseStarState(BookmarkingUI.STATUS_UNSTARRED); 41 42 StarUI._createPanelIfNeeded(); 43 let bookmarkPanel = document.getElementById("editBookmarkPanel"); 44 let shownPromise = promisePopupShown(bookmarkPanel); 45 BookmarkingUI.star.click(); 46 await shownPromise; 47 48 is(BookmarkingUI.status, BookmarkingUI.STATUS_STARRED, "The star is starred"); 49 }); 50 51 /** 52 * Waits for the star to reflect the expected state. 53 */ 54 function promiseStarState(aValue) { 55 return new Promise(resolve => { 56 let expectedStatus = aValue 57 ? BookmarkingUI.STATUS_STARRED 58 : BookmarkingUI.STATUS_UNSTARRED; 59 (function checkState() { 60 if ( 61 BookmarkingUI.status == BookmarkingUI.STATUS_UPDATING || 62 BookmarkingUI.status != expectedStatus 63 ) { 64 info("Waiting for star button change."); 65 setTimeout(checkState, 1000); 66 } else { 67 resolve(); 68 } 69 })(); 70 }); 71 }