forked from mirrors/gecko-dev
MozReview-Commit-ID: GPrNcmEIgpZ --HG-- rename : toolkit/components/places/tests/unit/sync_utils_bookmarks.html => toolkit/components/places/tests/sync/sync_utils_bookmarks.html rename : toolkit/components/places/tests/unit/sync_utils_bookmarks.json => toolkit/components/places/tests/sync/sync_utils_bookmarks.json rename : toolkit/components/places/tests/unit/test_sync_utils.js => toolkit/components/places/tests/sync/test_sync_utils.js extra : rebase_source : b94d8f1b800f440096cba0823c49dd001401515b
73 lines
2.5 KiB
JavaScript
73 lines
2.5 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
/* eslint-disable mozilla/no-arbitrary-setTimeout */
|
|
|
|
var secureURL = "https://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs";
|
|
var unsecureURL = "http://example.com/browser/browser/base/content/test/general/browser_star_hsts.sjs";
|
|
|
|
add_task(async function test_star_redirect() {
|
|
registerCleanupFunction(async () => {
|
|
// Ensure to remove example.com from the HSTS list.
|
|
let sss = Cc["@mozilla.org/ssservice;1"]
|
|
.getService(Ci.nsISiteSecurityService);
|
|
sss.removeState(Ci.nsISiteSecurityService.HEADER_HSTS,
|
|
NetUtil.newURI("http://example.com/"), 0);
|
|
await PlacesUtils.bookmarks.eraseEverything();
|
|
gBrowser.removeCurrentTab();
|
|
});
|
|
|
|
let tab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
|
|
// This will add the page to the HSTS cache.
|
|
await promiseTabLoadEvent(tab, secureURL, secureURL);
|
|
// This should transparently be redirected to the secure page.
|
|
await promiseTabLoadEvent(tab, unsecureURL, secureURL);
|
|
|
|
await promiseStarState(BookmarkingUI.STATUS_UNSTARRED);
|
|
|
|
let bookmarkPanel = document.getElementById("editBookmarkPanel");
|
|
let shownPromise = promisePopupShown(bookmarkPanel);
|
|
BookmarkingUI.star.click();
|
|
await shownPromise;
|
|
|
|
is(BookmarkingUI.status, BookmarkingUI.STATUS_STARRED, "The star is starred");
|
|
});
|
|
|
|
/**
|
|
* Waits for the star to reflect the expected state.
|
|
*/
|
|
function promiseStarState(aValue) {
|
|
return new Promise(resolve => {
|
|
let expectedStatus = aValue ? BookmarkingUI.STATUS_STARRED
|
|
: BookmarkingUI.STATUS_UNSTARRED;
|
|
(function checkState() {
|
|
if (BookmarkingUI.status == BookmarkingUI.STATUS_UPDATING ||
|
|
BookmarkingUI.status != expectedStatus) {
|
|
info("Waiting for star button change.");
|
|
setTimeout(checkState, 1000);
|
|
} else {
|
|
resolve();
|
|
}
|
|
})();
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Starts a load in an existing tab and waits for it to finish (via some event).
|
|
*
|
|
* @param aTab
|
|
* The tab to load into.
|
|
* @param aUrl
|
|
* The url to load.
|
|
* @param [optional] aFinalURL
|
|
* The url to wait for, same as aURL if not defined.
|
|
* @return {Promise} resolved when the event is handled.
|
|
*/
|
|
function promiseTabLoadEvent(aTab, aURL, aFinalURL) {
|
|
if (!aFinalURL)
|
|
aFinalURL = aURL;
|
|
|
|
info("Wait for load tab event");
|
|
aTab.linkedBrowser.loadURI(aURL);
|
|
return BrowserTestUtils.browserLoaded(aTab.linkedBrowser, false, aFinalURL);
|
|
}
|