Bug 1608713 - Add nsIWebNavigation load flags to force TRR mode and use them to load captive portal tabs with TRR disabled. r=valentin,Gijs,baku
Differential Revision: https://phabricator.services.mozilla.com/D60860
This commit is contained in:
@@ -282,6 +282,7 @@ var CaptivePortalWatcher = {
|
||||
userContextId: gBrowser.contentPrincipal.userContextId,
|
||||
}
|
||||
),
|
||||
disableTRR: true,
|
||||
});
|
||||
this._captivePortalTab = Cu.getWeakReference(tab);
|
||||
}
|
||||
|
||||
@@ -2538,6 +2538,7 @@
|
||||
bulkOrderedOpen,
|
||||
charset,
|
||||
createLazyBrowser,
|
||||
disableTRR,
|
||||
eventDetail,
|
||||
focusUrlBar,
|
||||
forceNotRemote,
|
||||
@@ -2865,6 +2866,9 @@
|
||||
if (!allowInheritPrincipal) {
|
||||
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
|
||||
}
|
||||
if (disableTRR) {
|
||||
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISABLE_TRR;
|
||||
}
|
||||
try {
|
||||
b.loadURI(aURI, {
|
||||
flags,
|
||||
|
||||
@@ -713,6 +713,12 @@ nsDocShell::LoadURI(nsDocShellLoadState* aLoadState, bool aSetNavigating) {
|
||||
return NS_OK; // JS may not handle returning of an error code
|
||||
}
|
||||
|
||||
if (aLoadState->LoadFlags() & LOAD_FLAGS_FORCE_TRR) {
|
||||
mDefaultLoadFlags |= nsIRequest::LOAD_TRR_ONLY_MODE;
|
||||
} else if (aLoadState->LoadFlags() & LOAD_FLAGS_DISABLE_TRR) {
|
||||
mDefaultLoadFlags |= nsIRequest::LOAD_TRR_DISABLED_MODE;
|
||||
}
|
||||
|
||||
if (!StartupTimeline::HasRecord(StartupTimeline::FIRST_LOAD_URI) &&
|
||||
mItemType == typeContent && !NS_IsAboutBlank(aLoadState->URI())) {
|
||||
StartupTimeline::RecordOnce(StartupTimeline::FIRST_LOAD_URI);
|
||||
|
||||
@@ -226,6 +226,12 @@ interface nsIWebNavigation : nsISupports
|
||||
*/
|
||||
const unsigned long LOAD_FLAGS_IS_REDIRECT = 0x800000;
|
||||
|
||||
/**
|
||||
* These flags force TRR modes 1 or 3 for the load.
|
||||
*/
|
||||
const unsigned long LOAD_FLAGS_DISABLE_TRR = 0x1000000;
|
||||
const unsigned long LOAD_FLAGS_FORCE_TRR = 0x2000000;
|
||||
|
||||
/**
|
||||
* Loads a given URI. This will give priority to loading the requested URI
|
||||
* in the object implementing this interface. If it can't be loaded here
|
||||
|
||||
@@ -199,6 +199,9 @@ interface nsIRequest : nsISupports
|
||||
* Do not get/set manually, rather use the getTRRMode/setTRRMode methods.
|
||||
*/
|
||||
const unsigned long LOAD_TRR_MASK = (1 << 3) | (1 << 4);
|
||||
const unsigned long LOAD_TRR_DISABLED_MODE = 1 << 3;
|
||||
const unsigned long LOAD_TRR_FIRST_MODE = 1 << 4;
|
||||
const unsigned long LOAD_TRR_ONLY_MODE = (1 << 3) | (1 << 4);
|
||||
|
||||
/**************************************************************************
|
||||
* The following flags control the flow of data into the cache.
|
||||
|
||||
Reference in New Issue
Block a user