Backed out 9 changesets (bug 1810141) for several test failures on a CLOSED TREE

Backed out changeset 8781a0d1254d (bug 1810141)
Backed out changeset 131037295784 (bug 1810141)
Backed out changeset 3852fbe290f4 (bug 1810141)
Backed out changeset 118f131a524a (bug 1810141)
Backed out changeset ab5d76846e10 (bug 1810141)
Backed out changeset dce3aa683445 (bug 1810141)
Backed out changeset 4dc41d90dbb3 (bug 1810141)
Backed out changeset 50b57ba1a061 (bug 1810141)
Backed out changeset 569de94781e4 (bug 1810141)
This commit is contained in:
Cristina Horotan 2023-02-13 16:05:30 +02:00
parent a57f17a38c
commit 5f4356e527
101 changed files with 455 additions and 788 deletions

View file

@ -26,7 +26,7 @@ async function runTests(browser, accDoc) {
let url = snippetToURL(`<input id="input" type="button" value="button">`, {
contentDocBodyAttrs: { id: "buttonInputDoc" },
});
browser.loadURI(Services.io.newURI(url), {
browser.loadURI(url, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
evt = await onFocus;

View file

@ -42,13 +42,13 @@
}
async function doTest() {
const kURL = "http://mochi.test:8888/a11y/accessible/tests/mochitest/events/scroll.html#link1";
const URL = "http://mochi.test:8888/a11y/accessible/tests/mochitest/events/scroll.html#link1";
let evtProm = waitForEvents([
[EVENT_DOCUMENT_LOAD_COMPLETE, currentTabDocument],
[EVENT_SCROLLING_START, matchesAnchorJumpInTabDocument()],
], "Load foreground tab then scroll to anchor");
tabBrowser().loadURI(Services.io.newURI(kURL), {
tabBrowser().loadURI(URL, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
// Flush layout, so as to guarantee that the a11y tree is constructed.
@ -61,7 +61,7 @@
unexpected: [[EVENT_SCROLLING_START, matchesAnchorJumpInTabDocument(1)]],
}, "Load background tab, don't dispatch scroll to anchor event");
tabBrowser().addTab(kURL, {
tabBrowser().addTab(URL, {
referrerURI: null,
charset: "",
postData: null,

View file

@ -41,7 +41,7 @@
this.invoke = function loadTab_invoke()
{
tabBrowser().loadURI(Services.io.newURI(aURL), {
tabBrowser().loadURI(aURL, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
}

View file

@ -31,7 +31,7 @@
{
this.invoke = function loadURI_invoke()
{
tabBrowser().loadURI(Services.io.newURI(aURI), {
tabBrowser().loadURI(aURI, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
}

View file

@ -234,7 +234,7 @@ export let ContentSearch = {
// Since we're going to load the search in the same browser, blur the search
// UI to prevent further interaction before we start loading.
this._reply(actor, "Blur");
browser.loadURI(submission.uri, {
browser.loadURI(submission.uri.spec, {
postData: submission.postData,
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal(
{

View file

@ -553,7 +553,7 @@ var gIdentityHandler = {
// If we're on the error-page, we have to redirect the user
// from HTTPS to HTTP. Otherwise we can just reload the page.
if (this._isAboutHttpsOnlyErrorPage) {
gBrowser.loadURI(newURI, {
gBrowser.loadURI(newURI.spec, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY,
});

View file

@ -1427,6 +1427,57 @@ var gKeywordURIFixup = {
},
};
function serializeInputStream(aStream) {
let data = {
content: NetUtil.readInputStreamToString(aStream, aStream.available()),
};
if (aStream instanceof Ci.nsIMIMEInputStream) {
data.headers = new Map();
aStream.visitHeaders((name, value) => {
data.headers.set(name, value);
});
}
return data;
}
/**
* Handles URIs when we want to deal with them in chrome code rather than pass
* them down to a content browser. This can avoid unnecessary process switching
* for the browser.
* @param aBrowser the browser that is attempting to load the URI
* @param aUri the nsIURI that is being loaded
* @returns true if the URI is handled, otherwise false
*/
function handleUriInChrome(aBrowser, aUri) {
if (aUri.scheme == "file") {
try {
let mimeType = Cc["@mozilla.org/mime;1"]
.getService(Ci.nsIMIMEService)
.getTypeFromURI(aUri);
if (mimeType == "application/x-xpinstall") {
let systemPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
AddonManager.getInstallForURL(aUri.spec, {
telemetryInfo: { source: "file-url" },
}).then(install => {
AddonManager.installAddonFromWebpage(
mimeType,
aBrowser,
systemPrincipal,
install
);
});
return true;
}
} catch (e) {
return false;
}
}
return false;
}
/* Creates a null principal using the userContextId
from the current selected tab or a passed in tab argument */
function _createNullPrincipalFromTabUserContextId(tab = gBrowser.selectedTab) {
@ -1439,6 +1490,104 @@ function _createNullPrincipalFromTabUserContextId(tab = gBrowser.selectedTab) {
});
}
// A shared function used by both remote and non-remote browser XBL bindings to
// load a URI or redirect it to the correct process.
function _loadURI(browser, uri, params = {}) {
if (!uri) {
uri = "about:blank";
}
let {
triggeringPrincipal,
referrerInfo,
postData,
userContextId,
csp,
remoteTypeOverride,
hasValidUserGestureActivation,
globalHistoryOptions,
} = params || {};
let loadFlags =
params.loadFlags || params.flags || Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
hasValidUserGestureActivation ??=
document.hasValidTransientUserGestureActivation;
if (!triggeringPrincipal) {
throw new Error("Must load with a triggering Principal");
}
if (userContextId && userContextId != browser.getAttribute("usercontextid")) {
throw new Error("Cannot load with mismatched userContextId");
}
// Attempt to perform URI fixup to see if we can handle this URI in chrome.
let fixupFlags = Ci.nsIURIFixup.FIXUP_FLAG_NONE;
if (loadFlags & Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP) {
fixupFlags |= Ci.nsIURIFixup.FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP;
}
if (loadFlags & Ci.nsIWebNavigation.LOAD_FLAGS_FIXUP_SCHEME_TYPOS) {
fixupFlags |= Ci.nsIURIFixup.FIXUP_FLAG_FIX_SCHEME_TYPOS;
}
if (PrivateBrowsingUtils.isBrowserPrivate(browser)) {
fixupFlags |= Ci.nsIURIFixup.FIXUP_FLAG_PRIVATE_CONTEXT;
}
try {
let uriObject = Services.uriFixup.getFixupURIInfo(uri, fixupFlags)
.preferredURI;
if (uriObject && handleUriInChrome(browser, uriObject)) {
// If we've handled the URI in Chrome, then just return here.
return;
}
} catch (e) {
// getFixupURIInfo may throw. Gracefully recover and try to load the URI normally.
}
// XXX(nika): Is `browser.isNavigating` necessary anymore?
browser.isNavigating = true;
if (globalHistoryOptions?.triggeringSearchEngine) {
browser.setAttribute(
"triggeringSearchEngine",
globalHistoryOptions.triggeringSearchEngine
);
browser.setAttribute("triggeringSearchEngineURL", uri);
} else {
browser.removeAttribute("triggeringSearchEngine");
browser.removeAttribute("triggeringSearchEngineURL");
}
if (globalHistoryOptions?.triggeringSponsoredURL) {
try {
// Browser may access URL after fixing it up, then store the URL into DB.
// To match with it, fix the link up explicitly.
const triggeringSponsoredURL = Services.uriFixup.getFixupURIInfo(
globalHistoryOptions.triggeringSponsoredURL,
fixupFlags
).fixedURI.spec;
browser.setAttribute("triggeringSponsoredURL", triggeringSponsoredURL);
const time =
globalHistoryOptions.triggeringSponsoredURLVisitTimeMS || Date.now();
browser.setAttribute("triggeringSponsoredURLVisitTimeMS", time);
} catch (e) {}
}
let loadURIOptions = {
triggeringPrincipal,
csp,
loadFlags,
referrerInfo,
postData,
hasValidUserGestureActivation,
remoteTypeOverride,
};
try {
browser.webNavigation.loadURI(uri, loadURIOptions);
} finally {
browser.isNavigating = false;
}
}
let _resolveDelayedStartup;
var delayedStartupPromise = new Promise(resolve => {
_resolveDelayedStartup = resolve;
@ -3267,10 +3416,7 @@ var BrowserOnClick = {
// Allow users to override and continue through to the site,
// but add a notify bar as a reminder, so that they don't lose
// track after, e.g., tab switching.
// Note that we have to use the passed URI info and can't just
// rely on the document URI, because the latter contains
// additional query parameters that should be stripped.
browsingContext.fixupAndLoadURIString(blockedInfo.uri, {
browsingContext.loadURI(blockedInfo.uri, {
triggeringPrincipal,
flags: Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CLASSIFIER,
});
@ -3361,7 +3507,7 @@ var BrowserOnClick = {
* when their own homepage is infected, we can get them somewhere safe.
*/
function getMeOutOfHere(browsingContext) {
browsingContext.top.fixupAndLoadURIString(getDefaultHomePage(), {
browsingContext.top.loadURI(getDefaultHomePage(), {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(), // Also needs to load homepage
});
}
@ -3392,13 +3538,12 @@ function BrowserReloadWithFlags(reloadFlags) {
for (let tab of gBrowser.selectedTabs) {
let browser = tab.linkedBrowser;
let url = browser.currentURI;
let urlSpec = url.spec;
let url = browser.currentURI.spec;
// We need to cache the content principal here because the browser will be
// reconstructed when the remoteness changes and the content prinicpal will
// be cleared after reconstruction.
let principal = tab.linkedBrowser.contentPrincipal;
if (gBrowser.updateBrowserRemotenessByURL(browser, urlSpec)) {
if (gBrowser.updateBrowserRemotenessByURL(browser, url)) {
// If the remoteness has changed, the new browser doesn't have any
// information of what was loaded before, so we need to load the previous
// URL again.
@ -6252,11 +6397,7 @@ nsBrowserAccess.prototype = {
// lands.
loadFlags |= Ci.nsIWebNavigation.LOAD_FLAGS_FIRST_LOAD;
}
// This should ideally be able to call loadURI with the actual URI.
// However, that would bypass some styles of fixup (notably Windows
// paths passed as "URI"s), so this needs some further thought. It
// should be addressed in bug 1815509.
gBrowser.fixupAndLoadURIString(aURI.spec, {
gBrowser.loadURI(aURI.spec, {
triggeringPrincipal: aTriggeringPrincipal,
csp: aCsp,
loadFlags,
@ -8595,7 +8736,7 @@ function switchToTabHavingURI(aURI, aOpenNew, aOpenParams = {}) {
}
if (ignoreFragment == "whenComparingAndReplace" || replaceQueryString) {
browser.loadURI(aURI, {
browser.loadURI(aURI.spec, {
triggeringPrincipal:
aOpenParams.triggeringPrincipal ||
_createNullPrincipalFromTabUserContextId(),

View file

@ -17,17 +17,6 @@
"chrome://browser/skin/privatebrowsing/favicon.svg",
};
const {
LOAD_FLAGS_NONE,
LOAD_FLAGS_FROM_EXTERNAL,
LOAD_FLAGS_FIRST_LOAD,
LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL,
LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP,
LOAD_FLAGS_FIXUP_SCHEME_TYPOS,
LOAD_FLAGS_FORCE_ALLOW_DATA_URI,
LOAD_FLAGS_DISABLE_TRR,
} = Ci.nsIWebNavigation;
window._gBrowser = {
init() {
ChromeUtils.defineModuleGetter(
@ -157,7 +146,6 @@
"reloadWithFlags",
"stop",
"loadURI",
"fixupAndLoadURIString",
"gotoIndex",
"currentURI",
"documentURI",
@ -444,14 +432,7 @@
browser.setAttribute("allowscriptstoclose", "true");
}
browser.droppedLinkHandler = handleDroppedLink;
browser.loadURI = URILoadingWrapper.loadURI.bind(
URILoadingWrapper,
browser
);
browser.fixupAndLoadURIString = URILoadingWrapper.fixupAndLoadURIString.bind(
URILoadingWrapper,
browser
);
browser.loadURI = _loadURI.bind(null, browser);
let uniqueId = this._generateUniquePanelID();
let panel = this.getPanel(browser);
@ -529,14 +510,8 @@
/**
* throws exception for unknown schemes
*/
loadURI(uri, params) {
return this.selectedBrowser.loadURI(uri, params);
},
/**
* throws exception for unknown schemes
*/
fixupAndLoadURIString(uriString, params) {
return this.selectedBrowser.fixupAndLoadURIString(uriString, params);
loadURI(aURI, aParams) {
return this.selectedBrowser.loadURI(aURI, aParams);
},
gotoIndex(aIndex) {
@ -1797,19 +1772,20 @@
browser = this.selectedBrowser;
targetTabIndex = this.tabContainer.selectedIndex;
}
let flags = LOAD_FLAGS_NONE;
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
if (allowThirdPartyFixup) {
flags |=
LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP | LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP |
Ci.nsIWebNavigation.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
}
if (!allowInheritPrincipal) {
flags |= LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
}
if (fromExternal) {
flags |= LOAD_FLAGS_FROM_EXTERNAL;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FROM_EXTERNAL;
}
try {
browser.fixupAndLoadURIString(aURIs[0], {
browser.loadURI(aURIs[0], {
flags,
postData: postDatas && postDatas[0],
triggeringPrincipal,
@ -2353,14 +2329,7 @@
this._tabFilters.set(aTab, filter);
browser.droppedLinkHandler = handleDroppedLink;
browser.loadURI = URILoadingWrapper.loadURI.bind(
URILoadingWrapper,
browser
);
browser.fixupAndLoadURIString = URILoadingWrapper.fixupAndLoadURIString.bind(
URILoadingWrapper,
browser
);
browser.loadURI = _loadURI.bind(null, browser);
// Most of the time, we start our browser's docShells out as inactive,
// and then maintain activeness in the tab switcher. Preloaded about:newtab's
@ -2899,30 +2868,29 @@
b.userTypedValue = aURI;
}
let flags = LOAD_FLAGS_NONE;
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
if (allowThirdPartyFixup) {
flags |=
LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP |
LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
}
if (fromExternal) {
flags |= LOAD_FLAGS_FROM_EXTERNAL;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FROM_EXTERNAL;
} else if (!triggeringPrincipal.isSystemPrincipal) {
// XXX this code must be reviewed and changed when bug 1616353
// lands.
flags |= LOAD_FLAGS_FIRST_LOAD;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FIRST_LOAD;
}
if (!allowInheritPrincipal) {
flags |= LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
}
if (disableTRR) {
flags |= LOAD_FLAGS_DISABLE_TRR;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISABLE_TRR;
}
if (forceAllowDataURI) {
flags |= LOAD_FLAGS_FORCE_ALLOW_DATA_URI;
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FORCE_ALLOW_DATA_URI;
}
try {
b.fixupAndLoadURIString(aURI, {
b.loadURI(aURI, {
flags,
triggeringPrincipal,
referrerInfo,
@ -6878,196 +6846,6 @@
"nsIWebProgressListener2",
"nsISupportsWeakReference",
]);
let URILoadingWrapper = {
_normalizeLoadURIOptions(browser, loadURIOptions) {
if (!loadURIOptions.triggeringPrincipal) {
throw new Error("Must load with a triggering Principal");
}
if (
loadURIOptions.userContextId &&
loadURIOptions.userContextId != browser.getAttribute("usercontextid")
) {
throw new Error("Cannot load with mismatched userContextId");
}
loadURIOptions.loadFlags |= loadURIOptions.flags | LOAD_FLAGS_NONE;
delete loadURIOptions.flags;
loadURIOptions.hasValidUserGestureActivation ??=
document.hasValidTransientUserGestureActivation;
},
_loadFlagsToFixupFlags(browser, loadFlags) {
// Attempt to perform URI fixup to see if we can handle this URI in chrome.
let fixupFlags = Ci.nsIURIFixup.FIXUP_FLAG_NONE;
if (loadFlags & LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP) {
fixupFlags |= Ci.nsIURIFixup.FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP;
}
if (loadFlags & LOAD_FLAGS_FIXUP_SCHEME_TYPOS) {
fixupFlags |= Ci.nsIURIFixup.FIXUP_FLAG_FIX_SCHEME_TYPOS;
}
if (PrivateBrowsingUtils.isBrowserPrivate(browser)) {
fixupFlags |= Ci.nsIURIFixup.FIXUP_FLAG_PRIVATE_CONTEXT;
}
return fixupFlags;
},
_fixupURIString(browser, uriString, loadURIOptions) {
let fixupFlags = this._loadFlagsToFixupFlags(
browser,
loadURIOptions.loadFlags
);
// XXXgijs: If we switch to loading the URI we return from this method,
// rather than redoing fixup in docshell (see bug 1815509), we need to
// ensure that the loadURIOptions have the fixup flag removed here for
// loads where `uriString` already parses if just passed immediately
// to `newURI`.
// Right now this happens in nsDocShellLoadState code.
try {
let fixupInfo = Services.uriFixup.getFixupURIInfo(
uriString,
fixupFlags
);
return fixupInfo.preferredURI;
} catch (e) {
// getFixupURIInfo may throw. Just return null, our caller will deal.
}
return null;
},
/**
* Handles URIs when we want to deal with them in chrome code rather than pass
* them down to a content browser. This can avoid unnecessary process switching
* for the browser.
* @param aBrowser the browser that is attempting to load the URI
* @param aUri the nsIURI that is being loaded
* @returns true if the URI is handled, otherwise false
*/
_handleUriInChrome(aBrowser, aUri) {
if (aUri.scheme == "file") {
try {
let mimeType = Cc["@mozilla.org/mime;1"]
.getService(Ci.nsIMIMEService)
.getTypeFromURI(aUri);
if (mimeType == "application/x-xpinstall") {
let systemPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
AddonManager.getInstallForURL(aUri.spec, {
telemetryInfo: { source: "file-url" },
}).then(install => {
AddonManager.installAddonFromWebpage(
mimeType,
aBrowser,
systemPrincipal,
install
);
});
return true;
}
} catch (e) {
return false;
}
}
return false;
},
_updateTriggerMetadataForLoad(
browser,
uriString,
{ loadFlags, globalHistoryOptions }
) {
if (globalHistoryOptions?.triggeringSponsoredURL) {
try {
// Browser may access URL after fixing it up, then store the URL into DB.
// To match with it, fix the link up explicitly.
const triggeringSponsoredURL = Services.uriFixup.getFixupURIInfo(
globalHistoryOptions.triggeringSponsoredURL,
this._loadFlagsToFixupFlags(browser, loadFlags)
).fixedURI.spec;
browser.setAttribute(
"triggeringSponsoredURL",
triggeringSponsoredURL
);
const time =
globalHistoryOptions.triggeringSponsoredURLVisitTimeMS ||
Date.now();
browser.setAttribute("triggeringSponsoredURLVisitTimeMS", time);
} catch (e) {}
}
if (globalHistoryOptions?.triggeringSearchEngine) {
browser.setAttribute(
"triggeringSearchEngine",
globalHistoryOptions.triggeringSearchEngine
);
browser.setAttribute("triggeringSearchEngineURL", uriString);
} else {
browser.removeAttribute("triggeringSearchEngine");
browser.removeAttribute("triggeringSearchEngineURL");
}
},
// Both of these are used to override functions on browser-custom-element.
fixupAndLoadURIString(browser, uriString, loadURIOptions = {}) {
this._internalMaybeFixupLoadURI(browser, uriString, null, loadURIOptions);
},
loadURI(browser, uri, loadURIOptions = {}) {
this._internalMaybeFixupLoadURI(browser, "", uri, loadURIOptions);
},
// A shared function used by both remote and non-remote browsers to
// load a string URI or redirect it to the correct process.
_internalMaybeFixupLoadURI(browser, uriString, uri, loadURIOptions) {
this._normalizeLoadURIOptions(browser, loadURIOptions);
// Some callers pass undefined/null when calling
// loadURI/fixupAndLoadURIString. Just load about:blank instead:
if (!uriString && !uri) {
uri = Services.io.newURI("about:blank");
}
// We need a URI in frontend code for checking various things. Ideally
// we would then also pass that URI to webnav/browsingcontext code
// for loading, but we historically haven't. Changing this would alter
// fixup scenarios in some non-obvious cases.
let startedWithURI = !!uri;
if (!uri) {
// Note: this may return null if we can't make a URI out of the input.
uri = this._fixupURIString(browser, uriString, loadURIOptions);
}
if (uri && this._handleUriInChrome(browser, uri)) {
// If we've handled the URI in chrome, then just return here.
return;
}
this._updateTriggerMetadataForLoad(
browser,
uriString || uri.spec,
loadURIOptions
);
// XXX(nika): Is `browser.isNavigating` necessary anymore?
// XXX(gijs): Unsure. But it mirrors docShell.isNavigating, but in the parent process
// (and therefore imperfectly so).
browser.isNavigating = true;
try {
// Should more generally prefer loadURI here - see bug 1815509.
if (startedWithURI) {
browser.webNavigation.loadURI(uri, loadURIOptions);
} else {
browser.webNavigation.fixupAndLoadURIString(
uriString,
loadURIOptions
);
}
} finally {
browser.isNavigating = false;
}
},
};
} // end private scope for gBrowser
var StatusPanel = {

View file

@ -25,12 +25,9 @@ add_task(async function() {
);
resolve();
});
selectedBrowser.loadURI(
Services.io.newURI("data:text/html,<h1 id='h1'>Select Me</h1>"),
{
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
}
);
selectedBrowser.loadURI("data:text/html,<h1 id='h1'>Select Me</h1>", {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
});
await SimpleTest.promiseFocus(newwindow);

View file

@ -82,18 +82,15 @@ function clear_history() {
}
// Waits for a load and updates the known history
var waitForLoad = async function(uriString) {
info("Loading " + uriString);
var waitForLoad = async function(uri) {
info("Loading " + uri);
// Longwinded but this ensures we don't just shortcut to LoadInNewProcess
let loadURIOptions = {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
};
gBrowser.selectedBrowser.webNavigation.loadURI(
Services.io.newURI(uriString),
loadURIOptions
);
gBrowser.selectedBrowser.webNavigation.loadURI(uri, loadURIOptions);
await BrowserTestUtils.browserStopped(gBrowser, uriString);
await BrowserTestUtils.browserStopped(gBrowser, uri);
// Some of the documents we're using in this test use Fluent,
// and they may finish localization later.
@ -114,16 +111,16 @@ var waitForLoad = async function(uriString) {
// Waits for a load and updates the known history
var waitForLoadWithFlags = async function(
uriString,
uri,
flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE
) {
info("Loading " + uriString + " flags = " + flags);
gBrowser.selectedBrowser.loadURI(Services.io.newURI(uriString), {
info("Loading " + uri + " flags = " + flags);
gBrowser.selectedBrowser.loadURI(uri, {
flags,
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
await BrowserTestUtils.browserStopped(gBrowser, uriString);
await BrowserTestUtils.browserStopped(gBrowser, uri);
if (!(flags & Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY)) {
if (flags & Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY) {
gExpectedHistory.entries.pop();

View file

@ -621,7 +621,7 @@ function openLinkIn(url, where, params) {
);
}
targetBrowser.fixupAndLoadURIString(url, {
targetBrowser.loadURI(url, {
triggeringPrincipal: aTriggeringPrincipal,
csp: aCsp,
flags,

View file

@ -183,6 +183,6 @@ function loadPanel(extensionId, extensionUrl, browserStyle) {
uri,
{}
);
browser.fixupAndLoadURIString(extensionUrl, { triggeringPrincipal });
browser.loadURI(extensionUrl, { triggeringPrincipal });
});
}

View file

@ -416,7 +416,7 @@ class BasePopup {
return readyPromise.then(() => {
initBrowser();
browser.fixupAndLoadURIString(popupURL, {
browser.loadURI(popupURL, {
triggeringPrincipal: this.extension.principal,
});
});

View file

@ -127,9 +127,9 @@ global.waitForTabLoaded = (tab, url) => {
});
};
global.replaceUrlInTab = (gBrowser, tab, uri) => {
let loaded = waitForTabLoaded(tab, uri.spec);
gBrowser.loadURI(uri, {
global.replaceUrlInTab = (gBrowser, tab, url) => {
let loaded = waitForTabLoaded(tab, url);
gBrowser.loadURI(url, {
flags: Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY,
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(), // This is safe from this functions usage however it would be preferred not to dot his.
});

View file

@ -66,7 +66,7 @@ XPCOMUtils.defineLazyGetter(this, "homepagePopup", () => {
// 3. Trigger the browser's homepage method
let gBrowser = win.gBrowser;
let tab = gBrowser.selectedTab;
await replaceUrlInTab(gBrowser, tab, Services.io.newURI("about:blank"));
await replaceUrlInTab(gBrowser, tab, "about:blank");
Services.prefs.addObserver(HOMEPAGE_PREF, async function prefObserver() {
Services.prefs.removeObserver(HOMEPAGE_PREF, prefObserver);
let loaded = waitForTabLoaded(tab);

View file

@ -85,9 +85,7 @@ class BaseDevToolsPanel {
}
);
this.browser.fixupAndLoadURIString(url, {
triggeringPrincipal: this.context.principal,
});
this.browser.loadURI(url, { triggeringPrincipal: this.context.principal });
}
destroyBrowserElement() {
@ -493,7 +491,7 @@ class ParentDevToolsInspectorSidebar extends BaseDevToolsPanel {
if (this.browser) {
// Just load the new extension page url in the existing browser, if
// it already exists.
this.browser.fixupAndLoadURIString(this.panelOptions.url, {
this.browser.loadURI(this.panelOptions.url, {
triggeringPrincipal: this.context.extension.principal,
});
} else {

View file

@ -136,7 +136,7 @@ class DevToolsPage extends HiddenExtensionPage {
},
});
this.browser.fixupAndLoadURIString(this.url, {
this.browser.loadURI(this.url, {
triggeringPrincipal: this.extension.principal,
});

View file

@ -889,13 +889,13 @@ this.tabs = class extends ExtensionAPIPersistent {
let browser = nativeTab.linkedBrowser;
if (nativeTab.linkedPanel) {
browser.fixupAndLoadURIString(url, options);
browser.loadURI(url, options);
} else {
// Shift to fully loaded browser and make
// sure load handler is instantiated.
nativeTab.addEventListener(
"SSTabRestoring",
() => browser.fixupAndLoadURIString(url, options),
() => browser.loadURI(url, options),
{ once: true }
);
tabbrowser._insertBrowser(nativeTab);

View file

@ -58,15 +58,11 @@ XPCOMUtils.defineLazyGetter(this, "newTabPopup", () => {
// 3. Once the New Tab URL has changed, replace the tab's URL with the new New Tab URL
let gBrowser = win.gBrowser;
let tab = gBrowser.selectedTab;
await replaceUrlInTab(gBrowser, tab, Services.io.newURI("about:blank"));
await replaceUrlInTab(gBrowser, tab, "about:blank");
Services.obs.addObserver(
{
async observe() {
await replaceUrlInTab(
gBrowser,
tab,
Services.io.newURI(AboutNewTab.newTabURL)
);
await replaceUrlInTab(gBrowser, tab, AboutNewTab.newTabURL);
// Now that the New Tab is loading, try to open the popup again. This
// will only open the popup if a new extension is controlling the New Tab.
popup.open();

View file

@ -559,7 +559,7 @@ export const PageDataService = new (class PageDataService extends EventEmitter {
oa
),
};
browser.fixupAndLoadURIString(url, loadURIOptions);
browser.loadURI(url, loadURIOptions);
let actor = await promise;
return await actor.collectPageData();

View file

@ -24,7 +24,7 @@ add_task(async function test_interactions_referrer() {
true,
Services.io.newURI(TEST_REFERRER_URL)
);
browser.loadURI(Services.io.newURI(TEST_URL), {
browser.loadURI(TEST_URL, {
referrerInfo: referrerInfo1,
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal(
{}

View file

@ -46,7 +46,7 @@ var gFxaPairDeviceDialog = {
// When the modal closes we want to remove any query params
// To prevent refreshes/restores from reopening the dialog
const browser = window.docShell.chromeEventHandler;
browser.loadURI(Services.io.newURI("about:preferences#sync"), {
browser.loadURI("about:preferences#sync", {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
@ -121,7 +121,7 @@ var gFxaPairDeviceDialog = {
_switchToUrl(url) {
const browser = window.docShell.chromeEventHandler;
browser.fixupAndLoadURIString(url, {
browser.loadURI(url, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal(
{}
),

View file

@ -437,7 +437,7 @@ var gSyncPane = {
// Get the <browser> element hosting us.
let browser = window.docShell.chromeEventHandler;
// And tell it to load our URL.
browser.loadURI(Services.io.newURI(url), {
browser.loadURI(url, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal(
{}
),

View file

@ -193,10 +193,7 @@ ContentRestoreInternal.prototype = {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP,
};
webNavigation.fixupAndLoadURIString(
tabData.userTypedValue,
loadURIOptions
);
webNavigation.loadURI(tabData.userTypedValue, loadURIOptions);
} else if (tabData.entries.length) {
// Stash away the data we need for restoreDocument.
this._restoringDocument = {
@ -219,10 +216,7 @@ ContentRestoreInternal.prototype = {
// restore.
remoteTypeOverride: Services.appinfo.remoteType,
};
webNavigation.loadURI(
Services.io.newURI("about:blank"),
loadURIOptions
);
webNavigation.loadURI("about:blank", loadURIOptions);
}
return true;
@ -374,7 +368,7 @@ HistoryListener.prototype = {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
loadFlags,
};
this.webNavigation.loadURI(newURI, loadURIOptions);
this.webNavigation.loadURI(newURI.spec, loadURIOptions);
},
OnHistoryReload() {

View file

@ -251,10 +251,6 @@ XPCOMUtils.defineLazyModuleGetters(lazy, {
TabCrashHandler: "resource:///modules/ContentCrashHandlers.jsm",
});
XPCOMUtils.defineLazyGetter(lazy, "blankURI", () => {
return Services.io.newURI("about:blank");
});
/**
* |true| if we are in debug mode, |false| otherwise.
* Debug mode is controlled by preference browser.sessionstore.debug
@ -3888,7 +3884,7 @@ var SessionStoreInternal = {
aTab.removeAttribute("crashed");
gBrowser.tabContainer.updateTabIndicatorAttr(aTab);
browser.loadURI(lazy.blankURI, {
browser.loadURI("about:blank", {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({
userContextId: aTab.userContextId,
}),
@ -6346,32 +6342,24 @@ var SessionStoreInternal = {
* If neither is possible, just load an empty document.
*/
_restoreTabEntry(browser, tabData) {
let haveUserTypedValue = tabData.userTypedValue && tabData.userTypedClear;
// First take care of the common case where we load the history entry.
if (!haveUserTypedValue && tabData.entries.length) {
let url = "about:blank";
let loadFlags = Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY;
if (tabData.userTypedValue && tabData.userTypedClear) {
url = tabData.userTypedValue;
loadFlags = Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
} else if (tabData.entries.length) {
return SessionStoreUtils.initializeRestore(
browser.browsingContext,
this.buildRestoreData(tabData.formdata, tabData.scroll)
);
}
// Here, we need to load user data or about:blank instead.
// As it's user-typed (or blank), it gets system triggering principal:
let triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
// Bypass all the fixup goop for about:blank:
if (!haveUserTypedValue) {
let blankPromise = this._waitForStateStop(browser, "about:blank");
browser.browsingContext.loadURI(lazy.blankURI, {
triggeringPrincipal,
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY,
});
return blankPromise;
}
// We have a user typed value, load that with fixup:
let loadPromise = this._waitForStateStop(browser, tabData.userTypedValue);
browser.browsingContext.fixupAndLoadURIString(tabData.userTypedValue, {
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP,
triggeringPrincipal,
let loadPromise = this._waitForStateStop(browser, url);
browser.browsingContext.loadURI(url, {
loadFlags,
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
return loadPromise;

View file

@ -210,7 +210,7 @@ function restoreSession() {
function startNewSession() {
if (Services.prefs.getIntPref("browser.startup.page") == 0) {
getBrowserWindow().gBrowser.loadURI(Services.io.newURI("about:blank"), {
getBrowserWindow().gBrowser.loadURI("about:blank", {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal(
{}
),

View file

@ -48,7 +48,7 @@ add_task(async function() {
true,
Services.io.newURI(REFERRER1)
);
browser.loadURI(Services.io.newURI("http://example.org"), {
browser.loadURI("http://example.org", {
referrerInfo: referrerInfo1,
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});

View file

@ -83,7 +83,7 @@ add_task(async function save_worthy_tabs_remote_final() {
// Replace about:blank with a new remote page.
let entryReplaced = promiseOnHistoryReplaceEntry(browser);
browser.loadURI(Services.io.newURI("https://example.com/"), {
browser.loadURI("https://example.com/", {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
await entryReplaced;
@ -141,7 +141,7 @@ add_task(async function dont_save_empty_tabs_final() {
// We're doing a cross origin navigation, so we can't reliably use a
// SpecialPowers task here. Instead we just emulate a location.replace() call.
browser.loadURI(Services.io.newURI("about:blank"), {
browser.loadURI("about:blank", {
loadFlags:
Ci.nsIWebNavigation.LOAD_FLAGS_STOP_CONTENT |
Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY,

View file

@ -58,7 +58,7 @@ function loadContentWindow(browser, url) {
oa
),
};
browser.loadURI(uri, loadURIOptions);
browser.loadURI(uri.spec, loadURIOptions);
let { webProgress } = browser;
let progressListener = {

View file

@ -489,7 +489,7 @@ var UITour = {
return;
}
// We want to replace the current tab.
browser.loadURI(url.URI, {
browser.loadURI(url.href, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal(
{}
),
@ -512,7 +512,7 @@ var UITour = {
}
// We want to replace the current tab.
browser.loadURI(url.URI, {
browser.loadURI(url.href, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal(
{}
),

View file

@ -276,7 +276,7 @@ class ProviderContextualSearch extends UrlbarProvider {
result.payload.input
);
let window = lazy.BrowserWindowTracker.getTopWindow();
window.gBrowser.fixupAndLoadURIString(url, {
window.gBrowser.loadURI(url, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
}

View file

@ -147,7 +147,7 @@ let NewTabPagePreloading = {
}
let browser = this._createBrowser(window);
browser.loadURI(Services.io.newURI(window.BROWSER_NEW_TAB_URL), {
browser.loadURI(window.BROWSER_NEW_TAB_URL, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
browser.docShellIsActive = false;

View file

@ -206,7 +206,7 @@ function closeAllButOneTab(url = "about:blank") {
while (gBrowser.tabs.length > 1) {
gBrowser.removeTab(gBrowser.selectedTab, { animate: false });
}
gBrowser.selectedBrowser.loadURI(Services.io.newURI(url), {
gBrowser.selectedBrowser.loadURI(url, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
if (gBrowser.selectedTab.pinned) {

View file

@ -10,11 +10,10 @@ add_task(async function() {
// Open the URL in a private browsing window.
const win = await BrowserTestUtils.openNewBrowserWindow({ private: true });
const tab = win.gBrowser.selectedBrowser;
const triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
tab.loadURI(
Services.io.newURI(ALT_DOMAIN_SECURED + "storage-cache-error.html"),
{ triggeringPrincipal }
);
const systemPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
tab.loadURI(ALT_DOMAIN_SECURED + "storage-cache-error.html", {
triggeringPrincipal: systemPrincipal,
});
await BrowserTestUtils.browserLoaded(tab);
// On enumerating cache storages, CacheStorage::Keys would throw a

View file

@ -1418,26 +1418,10 @@ void CanonicalBrowsingContext::UpdateMediaControlAction(
});
}
void CanonicalBrowsingContext::LoadURI(nsIURI* aURI,
void CanonicalBrowsingContext::LoadURI(const nsAString& aURI,
const LoadURIOptions& aOptions,
ErrorResult& aError) {
RefPtr<nsDocShellLoadState> loadState;
nsresult rv = nsDocShellLoadState::CreateFromLoadURIOptions(
this, aURI, aOptions, getter_AddRefs(loadState));
MOZ_ASSERT(rv != NS_ERROR_MALFORMED_URI);
if (NS_FAILED(rv)) {
aError.Throw(rv);
return;
}
LoadURI(loadState, true);
}
void CanonicalBrowsingContext::FixupAndLoadURIString(
const nsAString& aURI, const LoadURIOptions& aOptions,
ErrorResult& aError) {
RefPtr<nsDocShellLoadState> loadState;
nsresult rv = nsDocShellLoadState::CreateFromLoadURIOptions(
this, aURI, aOptions, getter_AddRefs(loadState));

View file

@ -206,10 +206,7 @@ class CanonicalBrowsingContext final : public BrowsingContext {
// Triggers a load in the process
using BrowsingContext::LoadURI;
void FixupAndLoadURIString(const nsAString& aURI,
const LoadURIOptions& aOptions,
ErrorResult& aError);
void LoadURI(nsIURI* aURI, const LoadURIOptions& aOptions,
void LoadURI(const nsAString& aURI, const LoadURIOptions& aOptions,
ErrorResult& aError);
void GoBack(const Optional<int32_t>& aCancelContentJSEpoch,

View file

@ -3399,50 +3399,22 @@ nsDocShell::GotoIndex(int32_t aIndex, bool aUserActivation) {
return rv.StealNSResult();
}
nsresult nsDocShell::LoadURI(nsIURI* aURI,
nsresult nsDocShell::LoadURI(const nsAString& aURI,
const LoadURIOptions& aLoadURIOptions) {
if (!IsNavigationAllowed()) {
return NS_OK; // JS may not handle returning of an error code
}
RefPtr<nsDocShellLoadState> loadState;
nsresult rv = nsDocShellLoadState::CreateFromLoadURIOptions(
mBrowsingContext, aURI, aLoadURIOptions, getter_AddRefs(loadState));
MOZ_ASSERT(rv != NS_ERROR_MALFORMED_URI);
if (NS_FAILED(rv) || !loadState) {
return NS_ERROR_FAILURE;
}
return LoadURI(loadState, true);
}
NS_IMETHODIMP
nsDocShell::LoadURIFromScript(nsIURI* aURI,
JS::Handle<JS::Value> aLoadURIOptions,
JSContext* aCx) {
// generate dictionary for aLoadURIOptions and forward call
LoadURIOptions loadURIOptions;
if (!loadURIOptions.Init(aCx, aLoadURIOptions)) {
return NS_ERROR_INVALID_ARG;
}
return LoadURI(aURI, loadURIOptions);
}
nsresult nsDocShell::FixupAndLoadURIString(
const nsAString& aURIString, const LoadURIOptions& aLoadURIOptions) {
if (!IsNavigationAllowed()) {
return NS_OK; // JS may not handle returning of an error code
}
RefPtr<nsDocShellLoadState> loadState;
nsresult rv = nsDocShellLoadState::CreateFromLoadURIOptions(
mBrowsingContext, aURIString, aLoadURIOptions, getter_AddRefs(loadState));
uint32_t loadFlags = aLoadURIOptions.mLoadFlags;
if (NS_ERROR_MALFORMED_URI == rv) {
MOZ_LOG(gSHLog, LogLevel::Debug,
("Creating an active entry on nsDocShell %p to %s (because "
"we're showing an error page)",
this, NS_ConvertUTF16toUTF8(aURIString).get()));
this, NS_ConvertUTF16toUTF8(aURI).get()));
// We need to store a session history entry. We don't have a valid URI, so
// we use about:blank instead.
@ -3462,8 +3434,7 @@ nsresult nsDocShell::FixupAndLoadURIString(
Nothing(), mActiveEntry.get(), MAKE_LOAD_TYPE(LOAD_NORMAL, loadFlags),
/* aUpdatedCacheKey = */ 0);
}
if (DisplayLoadError(rv, nullptr, PromiseFlatString(aURIString).get(),
nullptr) &&
if (DisplayLoadError(rv, nullptr, PromiseFlatString(aURI).get(), nullptr) &&
(loadFlags & LOAD_FLAGS_ERROR_LOAD_CHANGES_RV) != 0) {
return NS_ERROR_LOAD_SHOWED_ERRORPAGE;
}
@ -3477,15 +3448,15 @@ nsresult nsDocShell::FixupAndLoadURIString(
}
NS_IMETHODIMP
nsDocShell::FixupAndLoadURIStringFromScript(
const nsAString& aURIString, JS::Handle<JS::Value> aLoadURIOptions,
JSContext* aCx) {
nsDocShell::LoadURIFromScript(const nsAString& aURI,
JS::Handle<JS::Value> aLoadURIOptions,
JSContext* aCx) {
// generate dictionary for aLoadURIOptions and forward call
LoadURIOptions loadURIOptions;
if (!loadURIOptions.Init(aCx, aLoadURIOptions)) {
return NS_ERROR_INVALID_ARG;
}
return FixupAndLoadURIString(aURIString, loadURIOptions);
return LoadURI(aURI, loadURIOptions);
}
void nsDocShell::UnblockEmbedderLoadEventForFailure(bool aFireFrameErrorEvent) {

View file

@ -297,6 +297,7 @@ nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
"Unexpected flags");
nsCOMPtr<nsIURI> uri;
nsCOMPtr<nsIInputStream> postData(aLoadURIOptions.mPostData);
nsresult rv = NS_OK;
NS_ConvertUTF16toUTF8 uriString(aURI);
@ -325,7 +326,7 @@ nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
}
nsAutoString searchProvider, keyword;
RefPtr<nsIInputStream> fixupStream;
bool didFixup = false;
if (fixup) {
uint32_t fixupFlags =
WebNavigationFlagsToFixupFlags(uri, uriString, loadFlags);
@ -340,6 +341,7 @@ nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
fixupFlags |= nsIURIFixup::FIXUP_FLAG_PRIVATE_CONTEXT;
}
RefPtr<nsIInputStream> fixupStream;
if (!XRE_IsContentProcess()) {
nsCOMPtr<nsIURIFixupInfo> fixupInfo;
sURIFixup->GetFixupURIInfo(uriString, fixupFlags,
@ -351,11 +353,8 @@ nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
fixupInfo->SetConsumer(aBrowsingContext);
fixupInfo->GetKeywordProviderName(searchProvider);
fixupInfo->GetKeywordAsSent(keyword);
// GetFixupURIInfo only returns a post data stream if it succeeded
// and changed the URI, in which case we should override the
// passed-in post data by passing this as an override arg to
// our internal method.
fixupInfo->GetPostData(getter_AddRefs(fixupStream));
didFixup = true;
if (fixupInfo &&
loadFlags & nsIWebNavigation::LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP) {
@ -365,9 +364,15 @@ nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
PromiseFlatString(aURI).get());
}
}
nsDocShell::MaybeNotifyKeywordSearchLoading(searchProvider, keyword);
}
}
if (fixupStream) {
// GetFixupURIInfo only returns a post data stream if it succeeded
// and changed the URI, in which case we should override the
// passed-in post data.
postData = fixupStream;
}
}
if (rv == NS_ERROR_MALFORMED_URI) {
@ -379,32 +384,6 @@ nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
return NS_ERROR_FAILURE;
}
RefPtr<nsDocShellLoadState> loadState;
rv = CreateFromLoadURIOptions(
aBrowsingContext, uri, aLoadURIOptions, loadFlags,
fixupStream ? fixupStream : aLoadURIOptions.mPostData,
getter_AddRefs(loadState));
NS_ENSURE_SUCCESS(rv, rv);
loadState->SetOriginalURIString(uriString);
loadState.forget(aResult);
return NS_OK;
}
nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
BrowsingContext* aBrowsingContext, nsIURI* aURI,
const LoadURIOptions& aLoadURIOptions, nsDocShellLoadState** aResult) {
return CreateFromLoadURIOptions(aBrowsingContext, aURI, aLoadURIOptions,
aLoadURIOptions.mLoadFlags,
aLoadURIOptions.mPostData, aResult);
}
nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
BrowsingContext* aBrowsingContext, nsIURI* aURI,
const LoadURIOptions& aLoadURIOptions, uint32_t aLoadFlagsOverride,
nsIInputStream* aPostDataOverride, nsDocShellLoadState** aResult) {
nsresult rv = NS_OK;
uint32_t loadFlags = aLoadFlagsOverride;
RefPtr<nsIInputStream> postData = aPostDataOverride;
uint64_t available;
if (postData) {
rv = postData->Available(&available);
@ -431,7 +410,7 @@ nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
uint32_t extraFlags = (loadFlags & EXTRA_LOAD_FLAGS);
loadFlags &= ~EXTRA_LOAD_FLAGS;
RefPtr<nsDocShellLoadState> loadState = new nsDocShellLoadState(aURI);
RefPtr<nsDocShellLoadState> loadState = new nsDocShellLoadState(uri);
loadState->SetReferrerInfo(aLoadURIOptions.mReferrerInfo);
loadState->SetLoadType(MAKE_LOAD_TYPE(LOAD_NORMAL, loadFlags));
@ -447,10 +426,15 @@ nsresult nsDocShellLoadState::CreateFromLoadURIOptions(
loadState->SetTriggeringPrincipal(aLoadURIOptions.mTriggeringPrincipal);
loadState->SetCsp(aLoadURIOptions.mCsp);
loadState->SetForceAllowDataURI(forceAllowDataURI);
loadState->SetOriginalURIString(uriString);
if (aLoadURIOptions.mCancelContentJSEpoch) {
loadState->SetCancelContentJSEpoch(aLoadURIOptions.mCancelContentJSEpoch);
}
if (didFixup) {
nsDocShell::MaybeNotifyKeywordSearchLoading(searchProvider, keyword);
}
if (aLoadURIOptions.mTriggeringRemoteType.WasPassed()) {
if (XRE_IsParentProcess()) {
loadState->SetTriggeringRemoteType(

View file

@ -61,10 +61,6 @@ class nsDocShellLoadState final {
BrowsingContext* aBrowsingContext, const nsAString& aURI,
const mozilla::dom::LoadURIOptions& aLoadURIOptions,
nsDocShellLoadState** aResult);
static nsresult CreateFromLoadURIOptions(
BrowsingContext* aBrowsingContext, nsIURI* aURI,
const mozilla::dom::LoadURIOptions& aLoadURIOptions,
nsDocShellLoadState** aResult);
// Getters and Setters
@ -361,12 +357,7 @@ class nsDocShellLoadState final {
// nullptr if it succeeds.
const char* ValidateWithOriginalState(nsDocShellLoadState* aOriginalState);
static nsresult CreateFromLoadURIOptions(
BrowsingContext* aBrowsingContext, nsIURI* aURI,
const mozilla::dom::LoadURIOptions& aLoadURIOptions,
uint32_t aLoadFlagsOverride, nsIInputStream* aPostDataOverride,
nsDocShellLoadState** aResult);
protected:
// This is the referrer for the load.
nsCOMPtr<nsIReferrerInfo> mReferrerInfo;

View file

@ -966,7 +966,7 @@ nsDocShellTreeOwner::HandleEvent(Event* aEvent) {
nsCOMPtr<nsIContentSecurityPolicy> csp;
handler->GetCsp(dragEvent, getter_AddRefs(csp));
loadURIOptions.mCsp = csp;
webnav->FixupAndLoadURIString(url, loadURIOptions);
webnav->LoadURI(url, loadURIOptions);
}
}
}

View file

@ -275,53 +275,24 @@ interface nsIWebNavigation : nsISupports
* loading.
*
* @param aURI
* The URI to load.
* The URI string to load. For HTTP and FTP URLs and possibly others,
* characters above U+007F will be converted to UTF-8 and then URL-
* escaped per the rules of RFC 2396.
* @param aLoadURIOptions
* A JSObject defined in LoadURIOptions.webidl holding info like e.g.
* the triggeringPrincipal, the referrer info.
*/
[implicit_jscontext, binaryname(LoadURIFromScript)]
void loadURI(in nsIURI aURI,
in jsval aLoadURIOptions);
/**
* Parse / fix up a URI out of the string and load it.
* This will give priority to loading the requested URI
* in the object implementing this interface. If it can't be loaded here
* however, the URI dispatcher will go through its normal process of content
* loading.
*
* @param aURIString
* The URI string to load. For HTTP and FTP URLs and possibly others,
* characters above U+007F will be converted to UTF-8 and then URL-
* escaped per the rules of RFC 2396.
* This method may use nsIURIFixup to try to fix up typos etc. in the
* input string based on the load flag arguments in aLoadURIOptions.
* It can even convert the input to a search results page using the
* default search service.
* If you have an nsIURI anyway, prefer calling `loadURI`, above.
* @param aLoadURIOptions
* A JSObject defined in LoadURIOptions.webidl holding info like e.g.
* the triggeringPrincipal, the referrer info.
*/
[implicit_jscontext, binaryname(FixupAndLoadURIStringFromScript)]
void fixupAndLoadURIString(in AString aURIString,
in jsval aLoadURIOptions);
void loadURI(in AString aURI,
in jsval aLoadURIOptions);
/**
* A C++ friendly version of loadURI
*/
[nostdcall, binaryname(LoadURI)]
void binaryLoadURI(in nsIURI aURI,
void binaryLoadURI(in AString aURI,
in LoadURIOptionsRef aLoadURIOptions);
/**
* A C++ friendly version of fixupAndLoadURIString
*/
[nostdcall, binaryname(FixupAndLoadURIString)]
void binaryFixupAndLoadURIString(in AString aURIString,
in LoadURIOptionsRef aLoadURIOptions);
/**
* Tells the Object to reload the current page. There may be cases where the
* user will be asked to confirm the reload (for example, when it is

View file

@ -311,9 +311,7 @@ add_task(async function windowless_browser() {
Ci.nsIWebProgress.NOTIFY_ALL
);
});
browser.loadURI(Services.io.newURI("about:blank"), {
triggeringPrincipal: principal,
});
browser.loadURI("about:blank", { triggeringPrincipal: principal });
info("Wait for the location change");
await onLocationChange;
is(

View file

@ -27,7 +27,7 @@ add_task(async function test_loadURI_persists_postData() {
Ci.nsIPrincipal
);
tab.linkedBrowser.loadURI(Services.io.newURI(gUrl), {
tab.linkedBrowser.loadURI(gUrl, {
triggeringPrincipal: systemPrincipal,
postData: postStream,
});

View file

@ -99,7 +99,7 @@ add_task(async function test() {
// page after each test, since the tests will each navigate away
// from it.
await promiseLoaded(TEST_PAGE, () => {
browser.loadURI(Services.io.newURI(TEST_PAGE), {
browser.loadURI(TEST_PAGE, {
triggeringPrincipal: document.nodePrincipal,
});
});

View file

@ -37,7 +37,7 @@ add_task(async function test_normal_and_history_loads() {
await new Promise(r => {
setTimeout(r, 10);
});
browser.browsingContext.loadURI(Services.io.newURI(testPage + "?newload"), {
browser.browsingContext.loadURI(testPage + "?newload", {
triggeringPrincipal: browser.nodePrincipal,
});
let newLoad = BrowserTestUtils.browserLoaded(browser);

View file

@ -33,7 +33,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=430050
document.getElementById('b').setAttribute("src",
"data:text/plain,failed");
const systemPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
document.getElementById('b').loadURI(Services.io.newURI('data:text/plain,succeeded'), {
document.getElementById('b').loadURI('data:text/plain,succeeded', {
triggeringPrincipal: systemPrincipal
});
document.getElementById('b').addEventListener("load", endTest);

View file

@ -289,22 +289,7 @@ interface CanonicalBrowsingContext : BrowsingContext {
* loading.
*
* @param aURI
* The URI to load. No fixup will be performed on this URI.
* @param aLoadURIOptions
* A JSObject defined in LoadURIOptions.webidl holding info like e.g.
* the triggeringPrincipal, the referrer info.
*/
[Throws]
undefined loadURI(URI aURI, optional LoadURIOptions aOptions = {});
/**
* Like `loadURI` but takes a DOMString instead. This will use nsIURIFixup
* to "fix up" the input if it doesn't parse as a string. If an existing
* DOM URL or nsIURI object is available to you, prefer using `loadURI`
* directly.
*
* @param aURI
* The URI to load. For HTTP and FTP URLs and possibly others,
* The URI string to load. For HTTP and FTP URLs and possibly others,
* characters above U+007F will be converted to UTF-8 and then URL-
* escaped per the rules of RFC 2396.
* @param aLoadURIOptions
@ -312,7 +297,7 @@ interface CanonicalBrowsingContext : BrowsingContext {
* the triggeringPrincipal, the referrer info.
*/
[Throws]
undefined fixupAndLoadURIString(DOMString aURI, optional LoadURIOptions aOptions = {});
undefined loadURI(DOMString aURI, optional LoadURIOptions aOptions = {});
/**
* Print the current document.

View file

@ -206,7 +206,7 @@ async function chromeScriptFunc() {
const system = Services.scriptSecurityManager.getSystemPrincipal();
browser.loadURI(
Services.io.newURI("data:text/html,<!DOCTYPE HTML><html><body></body></html>"),
"data:text/html,<!DOCTYPE HTML><html><body></body></html>",
{ triggeringPrincipal: system }
);

View file

@ -124,10 +124,7 @@ var waitForLoad = async function(uri) {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
referrerInfo,
};
gBrowser.selectedBrowser.webNavigation.loadURI(
Services.io.newURI(uri),
loadURIOptions
);
gBrowser.selectedBrowser.webNavigation.loadURI(uri, loadURIOptions);
await BrowserTestUtils.browserStopped(gBrowser, uri);
};

View file

@ -15,7 +15,7 @@ function testOnPrivateWindow(aCallback) {
win.addEventListener("load", function() {
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
if (win.content.location.href == "about:privatebrowsing") {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
return;

View file

@ -27,13 +27,13 @@ function testOnWindow(aIsPrivate, aCallback) {
win.addEventListener("load", function() {
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
if (win.content.location.href == "about:privatebrowsing") {
win.gBrowser.loadURI(Services.io.newURI(contentPage));
win.gBrowser.loadURI(contentPage);
return;
}
win.removeEventListener("DOMContentLoaded", onInnerLoad, true);
SimpleTest.executeSoon(function() { aCallback(win); });
}, true);
win.gBrowser.loadURI(Services.io.newURI(contentPage));
win.gBrowser.loadURI(contentPage);
}, {capture: true, once: true});
}

View file

@ -917,9 +917,7 @@ void nsEditingSession::TimerCallback(nsITimer* aTimer, void* aClosure) {
LoadURIOptions loadURIOptions;
loadURIOptions.mTriggeringPrincipal =
nsContentUtils::GetSystemPrincipal();
nsCOMPtr<nsIURI> uri;
MOZ_ALWAYS_SUCCEEDS(NS_NewURI(getter_AddRefs(uri), "about:blank"_ns));
webNav->LoadURI(uri, loadURIOptions);
webNav->LoadURI(u"about:blank"_ns, loadURIOptions);
}
}
}

View file

@ -22,7 +22,7 @@ add_task(async function test_windowlessBrowserTroubleshootCrash() {
let loadURIOptions = {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
};
webNav.loadURI(Services.io.newURI("about:blank"), loadURIOptions);
webNav.loadURI("about:blank", loadURIOptions);
await onLoaded;

View file

@ -61,7 +61,7 @@ function testBFCache() {
is(chances > 0, true, "Must have animated a few frames so far");
// Browse elsewhere; push our animating page into the bfcache
gBrowser.loadURI(Services.io.newURI("about:blank"));
gBrowser.loadURI("about:blank");
// Wait a bit for page to fully load, then wait a while and
// see that no animation occurs.

View file

@ -12,9 +12,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=618176
<!-- test code goes here -->
<script type="application/javascript"><![CDATA[
/* global messageManager */
const TEST_PAGE = Services.io.newURI(
"data:text/html,<script>var a=[1,2,3];</script>Hi"
);
const TEST_PAGE =
"data:text/html,<script>var a=[1,2,3];</script>Hi";
const FRAME_SCRIPT =
"data:,addEventListener('pageshow', function() { sendAsyncMessage('test', content.wrappedJSObject.a) }, false);";

View file

@ -45,7 +45,7 @@
]),
});
});
b.loadURI(null /*blank*/, { triggeringPrincipal });
b.loadURI("about:blank", { triggeringPrincipal });
await loaded;
}
});

View file

@ -144,7 +144,7 @@ function testOnWindow(aIsPrivate, aCallback) {
whenDelayedStartupFinished(win, function() {
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
if (win.content.location.href != contentPage) {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
return;
@ -156,7 +156,7 @@ function testOnWindow(aIsPrivate, aCallback) {
}, true);
SimpleTest.info("load's window: " + win.location + " vs. " + window.location);
win.setTimeout(function() {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
}, 0);

View file

@ -163,7 +163,7 @@ function autoCloseIfNeeded(aCrash) {
//
// Doesn't seem worth for this particular case.
document.documentElement.appendChild(browser);
browser.loadURI(Services.io.newURI("about:crashparent"), {
browser.loadURI("about:crashparent", {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
return;
@ -357,7 +357,7 @@ function OnLDBLoad() {
// Switch to the right kind of content process, and wait a bit so that
// the profiler has had a chance to attach to it.
updateBrowserRemotenessByURL(gArgs.url);
setTimeout(() => fixupAndLoadURIString(gArgs.url), 3000);
setTimeout(() => loadURI(gArgs.url), 3000);
return;
}
} else {
@ -369,7 +369,7 @@ function OnLDBLoad() {
gDebugger._pagedMode = gArgs.paged;
if (gArgs.url) {
fixupAndLoadURIString(gArgs.url);
loadURI(gArgs.url);
}
// Some command line arguments may toggle menu items. Call this after
@ -452,7 +452,7 @@ function openFile() {
fp.fileURL.spec &&
fp.fileURL.spec.length > 0
) {
gBrowser.loadURI(fp.fileURL);
loadURI(fp.fileURL.spec);
}
});
}
@ -483,11 +483,11 @@ function updateBrowserRemotenessByURL(aURL) {
}
}
function fixupAndLoadURIString(aURL) {
function loadURI(aURL) {
// We don't bother trying to handle navigations within the browser to new URLs
// that should be loaded in a different process.
updateBrowserRemotenessByURL(aURL);
gBrowser.fixupAndLoadURIString(aURL, {
gBrowser.loadURI(aURL, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
}
@ -498,6 +498,6 @@ function focusURLBar() {
}
function go() {
fixupAndLoadURIString(gURLBar.value);
loadURI(gURLBar.value);
gBrowser.focus();
}

View file

@ -622,7 +622,7 @@ global.openOptionsPage = async extension => {
const { browser } = tab;
const flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
browser.fixupAndLoadURIString(options_ui.page, {
browser.loadURI(options_ui.page, {
flags,
triggeringPrincipal: extension.principal,
});

View file

@ -142,7 +142,7 @@ this.tabs = class extends ExtensionAPI {
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
}
browser.fixupAndLoadURIString(url, {
browser.loadURI(url, {
flags,
triggeringPrincipal: principal,
});

View file

@ -264,7 +264,7 @@ class GeckoViewNavigation extends GeckoViewModule {
// referring session, the referrerInfo is null.
//
// csp is only present if we have a referring document, null otherwise.
this.browser.fixupAndLoadURIString(uri, {
this.browser.loadURI(uri, {
flags: navFlags,
referrerInfo,
triggeringPrincipal,
@ -505,7 +505,7 @@ class GeckoViewNavigation extends GeckoViewModule {
}
// 3) We have a new session and a browser element, load the requested URI.
browser.loadURI(uri, {
browser.loadURI(uri.spec, {
triggeringPrincipal,
csp,
referrerInfo,

View file

@ -82,7 +82,7 @@ class Delegate {
{}
);
browser.fixupAndLoadURIString(url, {
browser.loadURI(url, {
flags: Ci.nsIWebNavigation.LOAD_FLAGS_NONE,
triggeringPrincipal,
});

View file

@ -175,7 +175,7 @@ export class Page extends Domain {
referrerURI: referrer,
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
};
this.session.browsingContext.loadURI(validURL, opts);
this.session.browsingContext.loadURI(url, opts);
// clients expect loaderId == requestId for a document navigation request
const { navigationRequestId: loaderId, errorCode } = await requestDone;
const result = {

View file

@ -168,7 +168,7 @@ navigate.navigateTo = async function(browsingContext, url) {
// Fake user activation.
hasValidUserGestureActivation: true,
};
browsingContext.fixupAndLoadURIString(url, opts);
browsingContext.loadURI(url, opts);
};
/**

View file

@ -481,7 +481,7 @@ class BrowsingContextModule extends Module {
}
});
context.loadURI(targetURI, {
context.loadURI(targetURI.spec, {
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_IS_LINK,
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
hasValidUserGestureActivation: true,

View file

@ -674,7 +674,7 @@ FxAccountsWebChannelHelpers.prototype = {
}
uri += "#sync";
browser.loadURI(Services.io.newURI(uri), {
browser.loadURI(uri, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
},

View file

@ -831,7 +831,7 @@ add_test(function test_helpers_open_sync_preferences() {
let mockBrowser = {
loadURI(uri) {
Assert.equal(
uri.spec,
uri,
"about:preferences?entrypoint=fxa%3Averification_complete#sync"
);
run_next_test();

View file

@ -934,7 +934,7 @@ export var BrowserTestUtils = {
* The URI to load.
*/
loadURIString(browser, uri) {
browser.fixupAndLoadURIString(uri, {
browser.loadURI(uri, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
},

View file

@ -110,7 +110,7 @@ function testInit() {
let loadURIOptions = {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
};
webNav.fixupAndLoadURIString(url, loadURIOptions);
webNav.loadURI(url, loadURIOptions);
};
var listener =

View file

@ -3,7 +3,7 @@ const gBaseURL = "https://example.com/browser/testing/mochitest/tests/browser/";
function promiseTabLoadEvent(tab, url) {
let promise = BrowserTestUtils.browserLoaded(tab.linkedBrowser, false, url);
if (url) {
tab.linkedBrowser.loadURI(Services.io.newURI(url));
tab.linkedBrowser.loadURI(url);
}
return promise;
}

View file

@ -163,7 +163,7 @@ class ContentPage {
triggeringPrincipal: system,
};
chromeShell.loadURI(
Services.io.newURI("chrome://extensions/content/dummy.xhtml"),
"chrome://extensions/content/dummy.xhtml",
loadURIOptions
);
@ -255,7 +255,7 @@ class ContentPage {
async loadURL(url, redirectUrl = undefined) {
await this.browserReady;
this.browser.fixupAndLoadURIString(url, {
this.browser.loadURI(url, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
return promiseBrowserLoaded(this.browser, url, redirectUrl);

View file

@ -81,12 +81,9 @@ async function createWindowlessBrowser({ isPrivate = false } = {}) {
const system = Services.scriptSecurityManager.getSystemPrincipal();
chromeShell.createAboutBlankContentViewer(system, system);
windowlessBrowser.browsingContext.useGlobalHistory = false;
chromeShell.loadURI(
Services.io.newURI("chrome://extensions/content/dummy.xhtml"),
{
triggeringPrincipal: system,
}
);
chromeShell.loadURI("chrome://extensions/content/dummy.xhtml", {
triggeringPrincipal: system,
});
await promiseObserved(
"chrome-document-global-created",

View file

@ -57,7 +57,7 @@ var gTime = -1;
var gStartTime = -1;
var gReference = -1;
var gBrowser;
var content;
// These are binary flags. Use 1/2/4/8/...
var TEST_DOES_OWN_TIMING = 1;
@ -222,9 +222,7 @@ async function plInit() {
browserWindow.resizeTo(winWidth, winHeight);
browserWindow.moveTo(0, 0);
browserWindow.focus();
// This is hacky but pageloader has worked like this for a while...
// eslint-disable-next-line no-global-assign
gBrowser = browserWindow.gBrowser;
content = browserWindow.gBrowser;
// Since bug 1261842, the initial browser is remote unless it attempts
// to browse to a URI that should be non-remote (landed at bug 1047603).
@ -240,7 +238,7 @@ async function plInit() {
// instance which adds the load listener and injects tpRecordTime), all the
// pages should be able to load in the same mode as the initial page - due
// to this reinitialization on the switch.
let tab = gBrowser.selectedTab;
let tab = content.selectedTab;
tab.addEventListener("TabRemotenessChange", function(evt) {
loadFrameScripts(tab.linkedBrowser);
});
@ -292,14 +290,14 @@ function plLoadPage() {
);
}
var pageURL = pages[pageIndex].url;
var pageName = pages[pageIndex].url.spec;
if (removeLastAddedMsgListener) {
removeLastAddedMsgListener();
removeLastAddedMsgListener = null;
}
let tab = gBrowser.selectedTab;
let tab = content.selectedTab;
tab.addEventListener("TabRemotenessChange", evt => {
addMsgListeners(tab.linkedBrowser);
});
@ -317,7 +315,7 @@ function plLoadPage() {
isPDFPaintPending = true;
}
startAndLoadURI(pageURL);
startAndLoadURI(pageName);
}
function addMsgListeners(browser) {
@ -380,22 +378,22 @@ function loadFrameScripts(browser) {
}
}
function startAndLoadURI(pageURL) {
function startAndLoadURI(pageName) {
if (!(plPageFlags() & TEST_DOES_OWN_TIMING)) {
// Resume the profiler because we're really measuring page load time.
// If the test is doing its own timing, it'll also need to do its own
// profiler pausing / resuming.
TalosParentProfiler.resume("Starting to load URI " + pageURL.spec);
TalosParentProfiler.resume("Starting to load URI " + pageName);
}
start_time = window.performance.now();
if (loadNoCache) {
gBrowser.loadURI(pageURL, {
content.loadURI(pageName, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
flags: Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE,
});
} else {
gBrowser.loadURI(pageURL, {
content.loadURI(pageName, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
}
@ -459,10 +457,10 @@ function loadFail() {
);
// TODO: make this a cleaner cleanup
pageCycle--;
gBrowser.removeEventListener("load", plLoadHandler, true);
gBrowser.removeEventListener("load", plLoadHandlerCapturing, true);
gBrowser.removeEventListener("MozAfterPaint", plPaintedCapturing, true);
gBrowser.removeEventListener("MozAfterPaint", plPainted, true);
content.removeEventListener("load", plLoadHandler, true);
content.removeEventListener("load", plLoadHandlerCapturing, true);
content.removeEventListener("MozAfterPaint", plPaintedCapturing, true);
content.removeEventListener("MozAfterPaint", plPainted, true);
gPaintWindow.removeEventListener("MozAfterPaint", plPaintedCapturing, true);
gPaintWindow.removeEventListener("MozAfterPaint", plPainted, true);
removeLastAddedMsgListener = null;
@ -644,7 +642,7 @@ function plLoadHandlerCapturing(evt) {
}
// set the tpRecordTime function (called from test pages we load) to store a global time.
gBrowser.contentWindow.wrappedJSObject.tpRecordTime = function(
content.contentWindow.wrappedJSObject.tpRecordTime = function(
time,
startTime,
testName
@ -655,11 +653,11 @@ function plLoadHandlerCapturing(evt) {
setTimeout(plWaitForPaintingCapturing, 0);
};
gBrowser.contentWindow.wrappedJSObject.plGarbageCollect = function() {
content.contentWindow.wrappedJSObject.plGarbageCollect = function() {
window.windowUtils.garbageCollect();
};
gBrowser.removeEventListener("load", plLoadHandlerCapturing, true);
content.removeEventListener("load", plLoadHandlerCapturing, true);
setTimeout(plWaitForPaintingCapturing, 0);
}
@ -675,7 +673,7 @@ function sendScroll() {
stepSize: SCROLL_TEST_STEP_PX,
opt_numSteps: SCROLL_TEST_NUM_STEPS,
};
let mm = gBrowser.selectedBrowser.messageManager;
let mm = content.selectedBrowser.messageManager;
mm.sendAsyncMessage("PageLoader:ScrollTest", { details });
}
@ -740,7 +738,7 @@ function plLoadHandler(evt) {
return;
}
gBrowser.removeEventListener("load", plLoadHandler, true);
content.removeEventListener("load", plLoadHandler, true);
setTimeout(waitForPainted, 0);
}
@ -899,16 +897,16 @@ function plStopAll(force) {
dumpLine(e);
}
if (gBrowser) {
gBrowser.removeEventListener("load", plLoadHandlerCapturing, true);
gBrowser.removeEventListener("load", plLoadHandler, true);
if (content) {
content.removeEventListener("load", plLoadHandlerCapturing, true);
content.removeEventListener("load", plLoadHandler, true);
if (useMozAfterPaint) {
gBrowser.removeEventListener("MozAfterPaint", plPaintedCapturing, true);
gBrowser.removeEventListener("MozAfterPaint", plPainted, true);
content.removeEventListener("MozAfterPaint", plPaintedCapturing, true);
content.removeEventListener("MozAfterPaint", plPainted, true);
}
let mm = gBrowser.selectedBrowser.messageManager;
let mm = content.selectedBrowser.messageManager;
mm.removeMessageListener("PageLoader:LoadEvent", ContentListener);
mm.removeMessageListener("PageLoader:RecordTime", ContentListener);
mm.removeMessageListener("PageLoader:Error", ContentListener);

View file

@ -230,7 +230,7 @@ export class TalosTabSwitchParent extends JSWindowActorParent {
// We'll switch back to about:blank after each tab switch
// in an attempt to put the graphics layer into a "steady"
// state before switching to the next tab.
initialTab.linkedBrowser.loadURI(Services.io.newURI("about:blank"), {
initialTab.linkedBrowser.loadURI("about:blank", {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal(
{}
),

View file

@ -77,7 +77,7 @@ export class AboutHttpsOnlyErrorChild extends RemotePageChild {
.setHost("www." + oldURI.host)
.finalize();
webNav.loadURI(newWWWURI, {
webNav.loadURI(newWWWURI.spec, {
triggeringPrincipal,
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY,
});

View file

@ -22,12 +22,9 @@ export class AboutHttpsOnlyErrorParent extends JSWindowActorParent {
if (!aBrowser.canGoBack) {
// If the unsafe page is the first or the only one in history, go to the
// start page.
aBrowser.fixupAndLoadURIString(
this.getDefaultHomePage(aBrowser.ownerGlobal),
{
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
}
);
aBrowser.loadURI(this.getDefaultHomePage(aBrowser.ownerGlobal), {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
} else {
aBrowser.goBack();
}

View file

@ -79,10 +79,7 @@ class BackgroundThumbnailsChild extends JSWindowActorChild {
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_STOP_CONTENT,
};
try {
docShell.loadURI(
Services.io.newURI(message.data.url),
loadURIOptions
);
docShell.loadURI(message.data.url, loadURIOptions);
} catch (ex) {
return false;
}

View file

@ -146,12 +146,9 @@ export class NetErrorParent extends JSWindowActorParent {
if (!browser.canGoBack) {
// If the unsafe page is the first or the only one in history, go to the
// start page.
browser.fixupAndLoadURIString(
this.getDefaultHomePage(browser.ownerGlobal),
{
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
}
);
browser.loadURI(this.getDefaultHomePage(browser.ownerGlobal), {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
} else {
browser.goBack();
}
@ -247,9 +244,7 @@ export class NetErrorParent extends JSWindowActorParent {
let offlinePagePath = `chrome://global/content/neterror/supportpages/${supportPageSlug}.html`;
let triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
this.browser.loadURI(Services.io.newURI(offlinePagePath), {
triggeringPrincipal,
});
this.browser.loadURI(offlinePagePath, { triggeringPrincipal });
}
receiveMessage(message) {

View file

@ -86,7 +86,7 @@ export class ViewSourceChild extends JSWindowActorChild {
loadFlags,
baseURI: Services.io.newURI(baseURI),
};
webNav.fixupAndLoadURIString(uri, loadURIOptions);
webNav.loadURI(uri, loadURIOptions);
}
/**
@ -141,7 +141,7 @@ export class ViewSourceChild extends JSWindowActorChild {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
loadFlags,
};
webNav.fixupAndLoadURIString(URL, loadURIOptions);
webNav.loadURI(URL, loadURIOptions);
}
/**

View file

@ -469,7 +469,7 @@ nsWebBrowser::GoForward(bool aRequireUserInteraction, bool aUserActivation) {
return mDocShell->GoForward(aRequireUserInteraction, aUserActivation);
}
nsresult nsWebBrowser::LoadURI(nsIURI* aURI,
nsresult nsWebBrowser::LoadURI(const nsAString& aURI,
const dom::LoadURIOptions& aLoadURIOptions) {
#ifndef ANDROID
MOZ_ASSERT(aLoadURIOptions.mTriggeringPrincipal,
@ -481,7 +481,7 @@ nsresult nsWebBrowser::LoadURI(nsIURI* aURI,
}
NS_IMETHODIMP
nsWebBrowser::LoadURIFromScript(nsIURI* aURI,
nsWebBrowser::LoadURIFromScript(const nsAString& aURI,
JS::Handle<JS::Value> aLoadURIOptions,
JSContext* aCx) {
// generate dictionary for loadURIOptions and forward call
@ -492,30 +492,6 @@ nsWebBrowser::LoadURIFromScript(nsIURI* aURI,
return LoadURI(aURI, loadURIOptions);
}
nsresult nsWebBrowser::FixupAndLoadURIString(
const nsAString& aURI, const dom::LoadURIOptions& aLoadURIOptions) {
#ifndef ANDROID
MOZ_ASSERT(
aLoadURIOptions.mTriggeringPrincipal,
"nsWebBrowser::FixupAndLoadURIString - Need a valid triggeringPrincipal");
#endif
NS_ENSURE_STATE(mDocShell);
return mDocShell->FixupAndLoadURIString(aURI, aLoadURIOptions);
}
NS_IMETHODIMP
nsWebBrowser::FixupAndLoadURIStringFromScript(
const nsAString& aURI, JS::Handle<JS::Value> aLoadURIOptions,
JSContext* aCx) {
// generate dictionary for loadURIOptions and forward call
dom::LoadURIOptions loadURIOptions;
if (!loadURIOptions.Init(aCx, aLoadURIOptions)) {
return NS_ERROR_INVALID_ARG;
}
return FixupAndLoadURIString(aURI, loadURIOptions);
}
NS_IMETHODIMP
nsWebBrowser::ResumeRedirectedLoad(uint64_t aIdentifier,
int32_t aHistoryIndex) {

View file

@ -1,8 +1,7 @@
"use strict";
const childFrameURL = Services.io.newURI(
"data:text/html,<!DOCTYPE HTML><html><body></body></html>"
);
const childFrameURL =
"data:text/html,<!DOCTYPE HTML><html><body></body></html>";
async function runTestsForFrame(browser, isPrivate) {
let loadContext = Cu.createLoadContext();

View file

@ -65,10 +65,6 @@ const { ExtensionUtils } = ChromeUtils.import(
"resource://gre/modules/ExtensionUtils.jsm"
);
const DUMMY_PAGE_URI = Services.io.newURI(
"chrome://extensions/content/dummy.xhtml"
);
var {
BaseContext,
CanOfAPIs,
@ -1371,7 +1367,7 @@ class HiddenXULWindow {
}
windowlessBrowser.browsingContext.useGlobalHistory = false;
chromeShell.loadURI(DUMMY_PAGE_URI, {
chromeShell.loadURI("chrome://extensions/content/dummy.xhtml", {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});

View file

@ -126,7 +126,7 @@ class BackgroundPage extends HiddenExtensionPage {
extensions.emit("extension-browser-inserted", this.browser);
let contextPromise = promiseExtensionViewLoaded(this.browser);
this.browser.fixupAndLoadURIString(this.url, {
this.browser.loadURI(this.url, {
triggeringPrincipal: extension.principal,
});

View file

@ -147,8 +147,8 @@ add_task(async function test_unload_extension_during_background_page_startup() {
// Prevent the background page from actually loading.
Management.once("extension-browser-inserted", (eventName, browser) => {
// Intercept background page load.
let browserFixupAndLoadURIString = browser.fixupAndLoadURIString;
browser.fixupAndLoadURIString = function() {
let browserLoadURI = browser.loadURI;
browser.loadURI = function() {
Assert.equal(++backgroundLoadCount, 1, "loadURI should be called once");
Assert.equal(
arguments[0],
@ -157,7 +157,7 @@ add_task(async function test_unload_extension_during_background_page_startup() {
);
// Reset to "about:blank" to not load the actual background page.
arguments[0] = "about:blank";
browserFixupAndLoadURIString.apply(this, arguments);
browserLoadURI.apply(this, arguments);
// And force the extension process to crash.
if (browser.isRemote) {

View file

@ -539,7 +539,7 @@ add_task(async function test_shutdown_before_background_loaded() {
let bgAbortedPromise = new Promise(resolve => {
let Management = ExtensionParent.apiManager;
Management.once("extension-browser-inserted", (eventName, browser) => {
browser.fixupAndLoadURIString = async () => {
browser.loadURI = async () => {
// The fire.wakeup/fire.async promises created while loading the
// background page should settle when the page fails to load.
fire = (await primeListenerPromise)[0].fire;

View file

@ -23,7 +23,7 @@ const gfxFrameScript = {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
};
webNav.loadURI(
Services.io.newURI("chrome://gfxsanity/content/sanitytest.html"),
"chrome://gfxsanity/content/sanitytest.html",
loadURIOptions
);
},

View file

@ -162,7 +162,7 @@ var ReaderMode = {
),
};
// This could possibly move to the parent. See bug 1664982.
webNav.fixupAndLoadURIString(originalURL, loadURIOptions);
webNav.loadURI(originalURL, loadURIOptions);
},
/**

View file

@ -74,18 +74,29 @@ class RemoteWebNavigation {
);
this._browser.browsingContext.goToIndex(aIndex, cancelContentJSEpoch, true);
}
_speculativeConnect(uri, loadURIOptions) {
loadURI(aURI, aLoadURIOptions) {
let uri;
try {
// Let's start a network connection before the content process asks.
// Note that we might have already set up the speculative connection in
let fixupFlags = Services.uriFixup.webNavigationFlagsToFixupFlags(
aURI,
aLoadURIOptions.loadFlags
);
let isBrowserPrivate = lazy.PrivateBrowsingUtils.isBrowserPrivate(
this._browser
);
if (isBrowserPrivate) {
fixupFlags |= Services.uriFixup.FIXUP_FLAG_PRIVATE_CONTEXT;
}
uri = Services.uriFixup.getFixupURIInfo(aURI, fixupFlags).preferredURI;
// We know the url is going to be loaded, let's start requesting network
// connection before the content process asks.
// Note that we might have already setup the speculative connection in
// some cases, especially when the url is from location bar or its popup
// menu.
if (uri.schemeIs("http") || uri.schemeIs("https")) {
let isBrowserPrivate = lazy.PrivateBrowsingUtils.isBrowserPrivate(
this._browser
);
let principal = loadURIOptions.triggeringPrincipal;
let principal = aLoadURIOptions.triggeringPrincipal;
// We usually have a triggeringPrincipal assigned, but in case we
// don't have one or if it's a SystemPrincipal, let's create it with OA
// inferred from the current context.
@ -102,61 +113,19 @@ class RemoteWebNavigation {
Services.io.speculativeConnect(uri, principal, null);
}
} catch (ex) {
// Can't setup speculative connection for this uri for some
// reason, just ignore it.
// Can't setup speculative connection for this uri string for some
// reason (such as failing to parse the URI), just ignore it.
}
}
loadURI(uri, loadURIOptions) {
this._speculativeConnect(uri, loadURIOptions);
let cancelContentJSEpoch = this.maybeCancelContentJSExecution(
Ci.nsIRemoteTab.NAVIGATE_URL,
{ uri }
);
this._browser.browsingContext.loadURI(uri, {
...loadURIOptions,
this._browser.browsingContext.loadURI(aURI, {
...aLoadURIOptions,
cancelContentJSEpoch,
});
}
fixupAndLoadURIString(uriString, loadURIOptions) {
let uri;
try {
let fixupFlags = Services.uriFixup.webNavigationFlagsToFixupFlags(
uriString,
loadURIOptions.loadFlags
);
let isBrowserPrivate = lazy.PrivateBrowsingUtils.isBrowserPrivate(
this._browser
);
if (isBrowserPrivate) {
fixupFlags |= Services.uriFixup.FIXUP_FLAG_PRIVATE_CONTEXT;
}
uri = Services.uriFixup.getFixupURIInfo(uriString, fixupFlags)
.preferredURI;
} catch (ex) {
// In rare cases `uriFixup` can throw. We ignore this here, but it's
// likely that the fixupAndLoadURIString call below will still throw,
// hopefully with more details.
}
if (uri) {
this._speculativeConnect(uri, loadURIOptions);
}
// For now, continue to use fixup here, but note that ideally we should be
// doing fixup only once and reusing the URI we created above. Addressing
// this is bug 1815509.
let cancelContentJSEpoch = this.maybeCancelContentJSExecution(
Ci.nsIRemoteTab.NAVIGATE_URL,
{ uri: null }
);
this._browser.browsingContext.fixupAndLoadURIString(uriString, {
...loadURIOptions,
cancelContentJSEpoch,
});
}
reload(aReloadFlags) {
this._browser.browsingContext.reload(aReloadFlags);
}

View file

@ -31,10 +31,7 @@ add_task(async function test_referrer() {
Services.io.newURI(DUMMY2)
),
};
browser.webNavigation.loadURI(
Services.io.newURI(DUMMY1),
loadURIOptionsWithReferrer
);
browser.webNavigation.loadURI(DUMMY1, loadURIOptionsWithReferrer);
await waitForLoad(DUMMY1);
await SpecialPowers.spawn(browser, [[DUMMY1, DUMMY2]], function([
@ -86,10 +83,10 @@ add_task(async function test_history() {
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
let browser = gBrowser.selectedBrowser;
browser.webNavigation.loadURI(Services.io.newURI(DUMMY1), LOAD_URI_OPTIONS);
browser.webNavigation.loadURI(DUMMY1, LOAD_URI_OPTIONS);
await waitForLoad(DUMMY1);
browser.webNavigation.loadURI(Services.io.newURI(DUMMY2), LOAD_URI_OPTIONS);
browser.webNavigation.loadURI(DUMMY2, LOAD_URI_OPTIONS);
await waitForLoad(DUMMY2);
if (!SpecialPowers.Services.appinfo.sessionHistoryInParent) {
@ -165,26 +162,20 @@ add_task(async function test_flags() {
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
let browser = gBrowser.selectedBrowser;
browser.webNavigation.loadURI(Services.io.newURI(DUMMY1), LOAD_URI_OPTIONS);
browser.webNavigation.loadURI(DUMMY1, LOAD_URI_OPTIONS);
await waitForLoad(DUMMY1);
let loadURIOptionsReplaceHistory = {
triggeringPrincipal: SYSTEMPRINCIPAL,
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY,
};
browser.webNavigation.loadURI(
Services.io.newURI(DUMMY2),
loadURIOptionsReplaceHistory
);
browser.webNavigation.loadURI(DUMMY2, loadURIOptionsReplaceHistory);
await waitForLoad(DUMMY2);
await checkHistory(browser, { count: 1, index: 0 });
let loadURIOptionsBypassHistory = {
triggeringPrincipal: SYSTEMPRINCIPAL,
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY,
};
browser.webNavigation.loadURI(
Services.io.newURI(DUMMY1),
loadURIOptionsBypassHistory
);
browser.webNavigation.loadURI(DUMMY1, loadURIOptionsBypassHistory);
await waitForLoad(DUMMY1);
await checkHistory(browser, { count: 1, index: 0 });
@ -205,10 +196,7 @@ add_task(async function test_badarguments() {
triggeringPrincipal: SYSTEMPRINCIPAL,
postData: {},
};
browser.webNavigation.loadURI(
Services.io.newURI(DUMMY1),
loadURIOptionsBadPostData
);
browser.webNavigation.loadURI(DUMMY1, loadURIOptionsBadPostData);
ok(
false,
"Should have seen an exception from trying to pass some postdata"
@ -222,10 +210,7 @@ add_task(async function test_badarguments() {
triggeringPrincipal: SYSTEMPRINCIPAL,
headers: {},
};
browser.webNavigation.loadURI(
Services.io.newURI(DUMMY1),
loadURIOptionsBadHeader
);
browser.webNavigation.loadURI(DUMMY1, loadURIOptionsBadHeader);
ok(false, "Should have seen an exception from trying to pass some headers");
} catch (e) {
ok(true, "Should have seen an exception from trying to pass some headers");

View file

@ -243,7 +243,7 @@ const BackgroundPageThumbs = {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
};
wlBrowser.loadURI(
Services.io.newURI("chrome://global/content/backgroundPageThumbs.xhtml"),
"chrome://global/content/backgroundPageThumbs.xhtml",
loadURIOptions
);
this._windowlessContainer = wlBrowser;
@ -444,10 +444,7 @@ const BackgroundPageThumbs = {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
loadFlags: Ci.nsIWebNavigation.LOAD_FLAGS_STOP_CONTENT,
};
this._thumbBrowser.loadURI(
Services.io.newURI("about:blank"),
loadURIOptions
);
this._thumbBrowser.loadURI("about:blank", loadURIOptions);
},
/**

View file

@ -31,7 +31,7 @@ function testOnWindow() {
subject => subject == win).then(() => {
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
if (win.content.location.href != contentPage) {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
return;
@ -47,7 +47,7 @@ function testOnWindow() {
}, false, true);
}, true);
SimpleTest.executeSoon(function() {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
});

View file

@ -54,7 +54,7 @@ function testOnWindow() {
subject => subject == win).then(() => {
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
if (win.content.location.href != contentPage) {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
return;
@ -69,7 +69,7 @@ function testOnWindow() {
}, false, true);
}, true);
SimpleTest.executeSoon(function() {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
});

View file

@ -82,7 +82,7 @@ function executeTest(test) {
subject => subject == win).then(() => {
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
if (win.content.location.href != contentPage) {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
return;
@ -106,7 +106,7 @@ function executeTest(test) {
});
}, true);
SimpleTest.executeSoon(function() {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
});

View file

@ -30,7 +30,7 @@ function testOnWindow(aPrivate) {
subject => subject == win).then(() => {
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
if (win.content.location.href != contentPage) {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
return;
@ -45,7 +45,7 @@ function testOnWindow(aPrivate) {
}, false, true);
}, true);
SimpleTest.executeSoon(function() {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
});

View file

@ -29,7 +29,7 @@ function testOnWindow(aCallback) {
subject => subject == win).then(() => {
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
if (win.content.location.href != contentPage) {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
return;
@ -42,7 +42,7 @@ function testOnWindow(aCallback) {
}, false, true);
}, true);
SimpleTest.executeSoon(function() {
win.gBrowser.loadURI(Services.io.newURI(contentPage), {
win.gBrowser.loadURI(contentPage, {
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
});
});

View file

@ -29,10 +29,6 @@
SelectParentHelper: "resource://gre/actors/SelectParent.jsm",
});
XPCOMUtils.defineLazyGetter(lazy, "blankURI", () =>
Services.io.newURI("about:blank")
);
let lazyPrefs = {};
XPCOMUtils.defineLazyPreferenceGetter(
lazyPrefs,
@ -816,35 +812,38 @@
this.webNavigation.stop(flags);
}
_fixLoadParamsToLoadURIOptions(params) {
/**
* throws exception for unknown schemes
*/
loadURI(aURI, aParams = {}) {
if (!aURI) {
aURI = "about:blank";
}
let {
referrerInfo,
triggeringPrincipal,
triggeringRemoteType,
postData,
headers,
csp,
remoteTypeOverride,
} = aParams;
let loadFlags =
params.loadFlags || params.flags || Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
delete params.flags;
params.loadFlags = loadFlags;
}
/**
* throws exception for unknown schemes
*/
loadURI(uri, params = {}) {
if (!uri) {
uri = lazy.blankURI;
}
this._fixLoadParamsToLoadURIOptions(params);
this._wrapURIChangeCall(() => this.webNavigation.loadURI(uri, params));
}
/**
* throws exception for unknown schemes
*/
fixupAndLoadURIString(uriString, params = {}) {
if (!uriString) {
this.loadURI(null, params);
return;
}
this._fixLoadParamsToLoadURIOptions(params);
aParams.loadFlags ||
aParams.flags ||
Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
let loadURIOptions = {
triggeringPrincipal,
triggeringRemoteType,
csp,
referrerInfo,
loadFlags,
postData,
headers,
remoteTypeOverride,
};
this._wrapURIChangeCall(() =>
this.webNavigation.fixupAndLoadURIString(uriString, params)
this.webNavigation.loadURI(aURI, loadURIOptions)
);
}

View file

@ -4,7 +4,7 @@
import { PromiseUtils } from "resource://gre/modules/PromiseUtils.sys.mjs";
const XUL_PAGE = Services.io.newURI("chrome://global/content/win.xhtml");
const XUL_PAGE = "chrome://global/content/win.xhtml";
const gAllHiddenFrames = new Set();

View file

@ -1962,7 +1962,7 @@ class InlineOptionsBrowser extends HTMLElement {
mm.sendAsyncMessage("Extension:InitBrowser", browserOptions);
if (browser.isConnectedAndReady) {
this.fixupAndLoadURIString(optionsURL);
this.loadURI(optionsURL);
} else {
// browser custom element does opt-in the delayConnectedCallback
// behavior (see connectedCallback in the custom element definition
@ -1972,18 +1972,18 @@ class InlineOptionsBrowser extends HTMLElement {
promiseEvent("DOMContentLoaded", document),
this._promiseDisconnected,
]).then(() => {
this.fixupAndLoadURIString(optionsURL);
this.loadURI(optionsURL);
});
}
});
}
fixupAndLoadURIString(uriString) {
loadURI(uri) {
if (!this.browser || !this.browser.isConnectedAndReady) {
throw new Error("Fail to loadURI");
}
this.browser.fixupAndLoadURIString(uriString, {
this.browser.loadURI(uri, {
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
}

View file

@ -76,9 +76,8 @@ nsWebHandlerApp.prototype = {
var escapedUriSpecToHandle = encodeURIComponent(aURI.spec);
// insert the encoded URI and create the object version.
var uriToSend = Services.io.newURI(
this.uriTemplate.replace("%s", escapedUriSpecToHandle)
);
var uriSpecToSend = this.uriTemplate.replace("%s", escapedUriSpecToHandle);
var uriToSend = Services.io.newURI(uriSpecToSend);
let policy = WebExtensionPolicy.getByURI(uriToSend);
let privateAllowed = !policy || policy.privateBrowsingAllowed;
@ -105,7 +104,7 @@ nsWebHandlerApp.prototype = {
let triggeringPrincipal = Services.scriptSecurityManager.getSystemPrincipal();
Services.tm.dispatchToMainThread(() =>
aBrowsingContext.loadURI(uriToSend, { triggeringPrincipal })
aBrowsingContext.loadURI(uriSpecToSend, { triggeringPrincipal })
);
return;
}

View file

@ -146,7 +146,7 @@ function useTriggeringPrincipal(principal = undefined) {
let triggeringPrincipal = principal ?? browser.contentPrincipal;
info("Loading uri: " + uri);
browser.loadURI(Services.io.newURI(uri), { triggeringPrincipal });
browser.loadURI(uri, { triggeringPrincipal });
};
}

Some files were not shown because too many files have changed in this diff Show more