Bug 1444760 - Combine loadURIWithFlags and loadURI methods. r=dao

MozReview-Commit-ID: 5dsyKwvjYht

--HG--
extra : rebase_source : 8e9f24d20829021db2239435c7d8d0db08e28bf9
This commit is contained in:
Tim Nguyen 2018-03-16 23:21:46 +00:00
parent 78b296ff06
commit e2ed0b5dfb
31 changed files with 67 additions and 91 deletions

View File

@ -1021,7 +1021,7 @@ function handleUriInChrome(aBrowser, aUri) {
// 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 _loadURIWithFlags(browser, uri, params) {
function _loadURI(browser, uri, params = {}) {
let tab = gBrowser.getTabForBrowser(browser);
// Preloaded browsers don't have tabs, so we ignore those.
if (tab) {
@ -1031,12 +1031,15 @@ function _loadURIWithFlags(browser, uri, params) {
if (!uri) {
uri = "about:blank";
}
let triggeringPrincipal = params.triggeringPrincipal || null;
let flags = params.flags || 0;
let referrer = params.referrerURI;
let referrerPolicy = ("referrerPolicy" in params ? params.referrerPolicy :
Ci.nsIHttpChannel.REFERRER_POLICY_UNSET);
let postData = params.postData;
let {
flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE,
referrerURI,
referrerPolicy = Ci.nsIHttpChannel.REFERRER_POLICY_UNSET,
triggeringPrincipal,
postData,
userContextId,
} = params || {};
let currentRemoteType = browser.remoteType;
let requiredRemoteType;
@ -1082,12 +1085,12 @@ function _loadURIWithFlags(browser, uri, params) {
}
try {
if (!mustChangeProcess) {
if (params.userContextId) {
browser.webNavigation.setOriginAttributesBeforeLoading({ userContextId: params.userContextId });
if (userContextId) {
browser.webNavigation.setOriginAttributesBeforeLoading({ userContextId });
}
browser.webNavigation.loadURIWithOptions(uri, flags,
referrer, referrerPolicy,
referrerURI, referrerPolicy,
postData, null, null, triggeringPrincipal);
} else {
// Check if the current browser is allowed to unload.
@ -1106,15 +1109,15 @@ function _loadURIWithFlags(browser, uri, params) {
? gSerializationHelper.serializeToString(triggeringPrincipal)
: null,
flags,
referrer: referrer ? referrer.spec : null,
referrer: referrerURI ? referrerURI.spec : null,
referrerPolicy,
remoteType: requiredRemoteType,
postData,
newFrameloader,
};
if (params.userContextId) {
loadParams.userContextId = params.userContextId;
if (userContextId) {
loadParams.userContextId = userContextId;
}
LoadInOtherProcess(browser, loadParams);
@ -1129,11 +1132,11 @@ function _loadURIWithFlags(browser, uri, params) {
Cu.reportError(e);
gBrowser.updateBrowserRemotenessByURL(browser, uri);
if (params.userContextId) {
browser.webNavigation.setOriginAttributesBeforeLoading({ userContextId: params.userContextId });
if (userContextId) {
browser.webNavigation.setOriginAttributesBeforeLoading({ userContextId: userContextId });
}
browser.webNavigation.loadURIWithOptions(uri, flags, referrer, referrerPolicy,
browser.webNavigation.loadURIWithOptions(uri, flags, referrerURI, referrerPolicy,
postData, null, null, triggeringPrincipal);
} else {
throw e;
@ -3171,7 +3174,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.
gBrowser.loadURIWithFlags(gBrowser.currentURI.spec, {
gBrowser.loadURI(gBrowser.currentURI.spec, {
flags: Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CLASSIFIER,
});
@ -3296,13 +3299,13 @@ function BrowserReloadWithFlags(reloadFlags) {
// 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.
gBrowser.loadURIWithFlags(url, { flags: reloadFlags });
gBrowser.loadURI(url, { flags: reloadFlags });
return;
}
// Do this after the above case where we might flip remoteness.
// Unfortunately, we'll count the remoteness flip case as a
// "newURL" load, since we're using loadURIWithFlags, but hopefully
// "newURL" load, since we're using loadURI, but hopefully
// that's rare enough to not matter.
maybeRecordAbandonmentTelemetry(gBrowser.selectedTab, "reload");
@ -5340,7 +5343,7 @@ nsBrowserAccess.prototype = {
let loadflags = isExternal ?
Ci.nsIWebNavigation.LOAD_FLAGS_FROM_EXTERNAL :
Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
gBrowser.loadURIWithFlags(aURI.spec, {
gBrowser.loadURI(aURI.spec, {
triggeringPrincipal: aTriggeringPrincipal,
flags: loadflags,
referrerURI: referrer,

View File

@ -120,7 +120,7 @@ window._gBrowser = {
*/
_browserBindingProperties: [
"canGoBack", "canGoForward", "goBack", "goForward", "permitUnload",
"reload", "reloadWithFlags", "stop", "loadURI", "loadURIWithFlags",
"reload", "reloadWithFlags", "stop", "loadURI",
"gotoIndex", "currentURI", "documentURI",
"preferences", "imageDocument", "isRemoteBrowser", "messageManager",
"getTabBrowser", "finder", "fastFind", "sessionHistory", "contentTitle",
@ -346,15 +346,8 @@ window._gBrowser = {
/**
* throws exception for unknown schemes
*/
loadURI(aURI, aReferrerURI, aCharset) {
return this.selectedBrowser.loadURI(aURI, aReferrerURI, aCharset);
},
/**
* throws exception for unknown schemes
*/
loadURIWithFlags(aURI, aParams) {
return this.mCurrentBrowser.loadURIWithFlags(aURI, aParams);
loadURI(aURI, aParams) {
return this.selectedBrowser.loadURI(aURI, aParams);
},
gotoIndex(aIndex) {
@ -1493,7 +1486,7 @@ window._gBrowser = {
Ci.nsIWebNavigation.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
}
try {
browser.loadURIWithFlags(aURIs[0], {
browser.loadURI(aURIs[0], {
flags,
postData: aPostDatas[0],
triggeringPrincipal: aTriggeringPrincipal,
@ -2426,7 +2419,7 @@ window._gBrowser = {
if (aDisallowInheritPrincipal)
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL;
try {
b.loadURIWithFlags(aURI, {
b.loadURI(aURI, {
flags,
triggeringPrincipal: aTriggeringPrincipal,
referrerURI: aNoReferrer ? null : aReferrerURI,

View File

@ -2311,12 +2311,12 @@
<field name="tabModalPromptBox">null</field>
<!-- throws exception for unknown schemes -->
<method name="loadURIWithFlags">
<method name="loadURI">
<parameter name="aURI"/>
<parameter name="aParams"/>
<body>
<![CDATA[
_loadURIWithFlags(this, aURI, aParams);
_loadURI(this, aURI, aParams);
]]>
</body>
</method>
@ -2329,12 +2329,12 @@
<field name="tabModalPromptBox">null</field>
<!-- throws exception for unknown schemes -->
<method name="loadURIWithFlags">
<method name="loadURI">
<parameter name="aURI"/>
<parameter name="aParams"/>
<body>
<![CDATA[
_loadURIWithFlags(this, aURI, aParams);
_loadURI(this, aURI, aParams);
]]>
</body>
</method>

View File

@ -77,7 +77,7 @@ var waitForLoad = async function(uri) {
// Waits for a load and updates the known history
var waitForLoadWithFlags = async function(uri, flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE) {
info("Loading " + uri + " flags = " + flags);
gBrowser.selectedBrowser.loadURIWithFlags(uri, { flags });
gBrowser.selectedBrowser.loadURI(uri, { flags });
await BrowserTestUtils.browserStopped(gBrowser);
if (!(flags & Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY)) {

View File

@ -448,7 +448,7 @@ function openLinkIn(url, where, params) {
targetBrowser.createAboutBlankContentViewer(aPrincipal);
}
targetBrowser.loadURIWithFlags(url, {
targetBrowser.loadURI(url, {
triggeringPrincipal: aTriggeringPrincipal,
flags,
referrerURI: aNoReferrer ? null : aReferrerURI,

View File

@ -108,6 +108,6 @@ function loadPanel(extensionId, extensionUrl, browserStyle) {
getBrowser(sidebar).then(browser => {
let uri = Services.io.newURI(policy.getURL());
let triggeringPrincipal = Services.scriptSecurityManager.createCodebasePrincipal(uri, {});
browser.loadURIWithFlags(extensionUrl, {triggeringPrincipal});
browser.loadURI(extensionUrl, {triggeringPrincipal});
});
}

View File

@ -316,7 +316,7 @@ class BasePopup {
stylesheets: this.STYLESHEETS,
});
browser.loadURIWithFlags(popupURL, {triggeringPrincipal: this.extension.principal});
browser.loadURI(popupURL, {triggeringPrincipal: this.extension.principal});
});
}

View File

@ -278,7 +278,7 @@ class ParentDevToolsPanel {
},
});
browser.loadURIWithFlags(url, {
browser.loadURI(url, {
triggeringPrincipal: extension.principal,
});
}

View File

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

View File

@ -614,7 +614,7 @@ this.tabs = class extends ExtensionAPI {
: Ci.nsIWebNavigation.LOAD_FLAGS_NONE,
triggeringPrincipal: context.principal,
};
nativeTab.linkedBrowser.loadURIWithFlags(url, options);
nativeTab.linkedBrowser.loadURI(url, options);
}
if (updateProperties.active !== null) {

View File

@ -58,7 +58,7 @@ function replaceUrlInTab(gBrowser, tab, url) {
},
});
});
gBrowser.loadURIWithFlags(url, {
gBrowser.loadURI(url, {
flags: Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY,
});
return loaded;

View File

@ -33,10 +33,10 @@ function checkTelemetryRecords(expectedValue) {
function promiseStoppedLoad(expectedURL) {
return new Promise(resolve => {
let browser = gBrowser.selectedBrowser;
let original = browser.loadURIWithFlags;
browser.loadURIWithFlags = function(URI) {
let original = browser.loadURI;
browser.loadURI = function(URI) {
if (URI == expectedURL) {
browser.loadURIWithFlags = original;
browser.loadURI = original;
ok(true, "loaded expected url: " + URI);
resolve();
return;

View File

@ -2901,7 +2901,7 @@ var SessionStoreInternal = {
// a flash of the about:tabcrashed page after selecting
// the revived tab.
aTab.removeAttribute("crashed");
browser.loadURI("about:blank", null, null);
browser.loadURI("about:blank");
let data = TabState.collect(aTab);
this.restoreTab(aTab, data, {

View File

@ -17,7 +17,7 @@ add_task(async function() {
// Load a new URI with a specific referrer.
let referrerURI = Services.io.newURI(REFERRER1);
browser.loadURI("http://example.org", referrerURI, null);
browser.loadURI("http://example.org", { referrerURI });
await promiseBrowserLoaded(browser);
await TabStateFlusher.flush(browser);

View File

@ -12,7 +12,7 @@ let notificationsCount = 0;
async function openWindow(url) {
let win = await promiseNewWindowLoaded();
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY;
win.gBrowser.selectedBrowser.loadURIWithFlags(url, { flags });
win.gBrowser.selectedBrowser.loadURI(url, { flags });
await promiseBrowserLoaded(win.gBrowser.selectedBrowser, true, url);
return win;
}

View File

@ -14,7 +14,7 @@ let notificationsCount = 0;
async function openWindow(url) {
let win = await promiseNewWindowLoaded();
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY;
win.gBrowser.selectedBrowser.loadURIWithFlags(url, { flags });
win.gBrowser.selectedBrowser.loadURI(url, { flags });
await promiseBrowserLoaded(win.gBrowser.selectedBrowser, true, url);
return win;
}

View File

@ -12,7 +12,7 @@ add_task(async function test() {
// Load some URL in the current tab.
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY;
win.gBrowser.selectedBrowser.loadURIWithFlags("about:robots", { flags });
win.gBrowser.selectedBrowser.loadURI("about:robots", { flags });
await promiseBrowserLoaded(win.gBrowser.selectedBrowser);
// Open a second tab and close the first one.

View File

@ -17,7 +17,7 @@ async function openAndCloseTab(window, url) {
async function openWindow(url) {
let win = await promiseNewWindowLoaded();
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY;
win.gBrowser.selectedBrowser.loadURIWithFlags(url, { flags });
win.gBrowser.selectedBrowser.loadURI(url, { flags });
await promiseBrowserLoaded(win.gBrowser.selectedBrowser, true, url);
return win;
}

View File

@ -239,8 +239,7 @@ var 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(msg, "Blur");
browser.loadURIWithFlags(submission.uri.spec, {
flags: Ci.nsIWebNavigation.LOAD_FLAGS_NONE,
browser.loadURI(submission.uri.spec, {
postData: submission.postData
});
} else {

View File

@ -167,7 +167,7 @@ add_task(async function() {
store.dispatch(Actions.batchEnable(false));
tab.linkedBrowser.loadURI(TOP_URL, null, null);
tab.linkedBrowser.loadURI(TOP_URL);
await waitForNetworkEvents(monitor, REQUEST_COUNT);

View File

@ -124,7 +124,7 @@ function swapToInnerBrowser({ tab, containerURL, getInnerBrowser }) {
});
// Prevent the `containerURL` from ending up in the tab's history.
debug("Load container URL");
containerBrowser.loadURIWithFlags(containerURL, {
containerBrowser.loadURI(containerURL, {
flags: Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_HISTORY,
});

View File

@ -315,7 +315,7 @@ function waitForViewportLoad(ui) {
function load(browser, url) {
let loaded = BrowserTestUtils.browserLoaded(browser, false, url);
browser.loadURI(url, null, null);
browser.loadURI(url);
return loaded;
}

View File

@ -22,7 +22,7 @@ function startTest() {
BrowserTestUtils.browserLoaded(browser, false, url).then(() => {
func();
});
browser.loadURIWithFlags(url, { flags });
browser.loadURI(url, { flags });
}
// Load a normal http URL

View File

@ -20,8 +20,7 @@ function test() {
postStream.addHeader("Content-Type", "application/x-www-form-urlencoded");
postStream.setData(dataStream);
tab.linkedBrowser.loadURIWithFlags("http://mochi.test:8888/browser/docshell/test/browser/print_postdata.sjs", {
flags: 0,
tab.linkedBrowser.loadURI("http://mochi.test:8888/browser/docshell/test/browser/print_postdata.sjs", {
postData: postStream,
});
BrowserTestUtils.browserLoaded(tab.linkedBrowser).then(() => {

View File

@ -1172,7 +1172,7 @@ var BrowserApp = {
}
try {
aBrowser.loadURIWithFlags(aURI, {
aBrowser.loadURI(aURI, {
flags,
referrerURI,
charset,
@ -3497,7 +3497,7 @@ nsBrowserAccess.prototype = {
}
let openerWindow = (aFlags & Ci.nsIBrowserDOMWindow.OPEN_NO_OPENER) ? null : aOpener;
// BrowserApp.addTab calls loadURIWithFlags with the appropriate params
// BrowserApp.addTab calls loadURI with the appropriate params
let tab = BrowserApp.addTab(aURI ? aURI.spec : "about:blank", { flags: loadflags,
referrerURI: referrer,
external: isExternal,
@ -3514,7 +3514,7 @@ nsBrowserAccess.prototype = {
// OPEN_CURRENTWINDOW and illegal values
let browser = BrowserApp.selectedBrowser;
if (aURI && browser) {
browser.loadURIWithFlags(aURI.spec, {
browser.loadURI(aURI.spec, {
flags: loadflags,
referrerURI: referrer,
triggeringPrincipal: aTriggeringPrincipal,
@ -3780,7 +3780,7 @@ Tab.prototype = {
this.isSearch = "isSearch" in aParams ? aParams.isSearch : false;
try {
this.browser.loadURIWithFlags(aURL, {
this.browser.loadURI(aURL, {
flags,
referrerURI,
charset,

View File

@ -75,7 +75,7 @@ class GeckoViewNavigation extends GeckoViewModule {
navFlags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_POPUPS;
}
this.browser.loadURIWithFlags(uri, {
this.browser.loadURI(uri, {
flags: navFlags,
referrerURI: referrer,
});

View File

@ -321,7 +321,7 @@ function startAndLoadURI(pageName) {
start_time = Date.now();
if (loadNoCache) {
content.loadURIWithFlags(pageName, {
content.loadURI(pageName, {
flags: Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE
});
} else {

View File

@ -31,7 +31,7 @@ class BackgroundPage extends HiddenExtensionPage {
extensions.emit("extension-browser-inserted", this.browser);
this.browser.loadURIWithFlags(this.url, {triggeringPrincipal: this.extension.principal});
this.browser.loadURI(this.url, {triggeringPrincipal: this.extension.principal});
let context = await promiseExtensionViewLoaded(this.browser);
TelemetryStopwatch.finish("WEBEXT_BACKGROUND_PAGE_LOAD_MS", this);

View File

@ -102,24 +102,6 @@
<!-- throws exception for unknown schemes -->
<method name="loadURI">
<parameter name="aURI"/>
<parameter name="aReferrerURI"/>
<parameter name="aCharset"/>
<body>
<![CDATA[
this._wrapURIChangeCall(() =>
this.loadURIWithFlags(aURI, {
flags: Ci.nsIWebNavigation.LOAD_FLAGS_NONE,
referrerURI: aReferrerURI,
charset: aCharset,
})
);
]]>
</body>
</method>
<!-- throws exception for unknown schemes -->
<method name="loadURIWithFlags">
<parameter name="aURI"/>
<parameter name="aParams"/>
<body>
@ -129,12 +111,12 @@
}
let {
flags,
flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE,
referrerURI,
referrerPolicy = Ci.nsIHttpChannel.REFERRER_POLICY_UNSET,
triggeringPrincipal,
postData,
} = aParams;
} = aParams || {};
this._wrapURIChangeCall(() =>
this.webNavigation.loadURIWithOptions(

View File

@ -2220,7 +2220,7 @@ var gDiscoverView = {
if (!aKeepHistory)
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY;
this._browser.loadURIWithFlags(aURL, { flags });
this._browser.loadURI(aURL, { flags });
},
onLocationChange(aWebProgress, aRequest, aLocation, aFlags) {

View File

@ -56,7 +56,7 @@
// 6) Start reloading first tab.
function loadFirstTab() {
var browser = document.getElementById("tab1browser");
browser.loadURI("data:text/html;charset=utf-8,<body><h2>First Tab</h2><p><input type='submit' value='Button' id='button1'/></body>", null, null);
browser.loadURI("data:text/html;charset=utf-8,<body><h2>First Tab</h2><p><input type='submit' value='Button' id='button1'/></body>");
}
function configureFirstTab() {
@ -81,7 +81,7 @@
// 8) Start loading second tab.
function loadSecondTab() {
var browser = document.getElementById("tab2browser");
browser.loadURI("data:text/html;charset=utf-8,<body><h2>Second Tab</h2><p><input type='submit' value='Button' id='button1'/></body>", null, null);
browser.loadURI("data:text/html;charset=utf-8,<body><h2>Second Tab</h2><p><input type='submit' value='Button' id='button1'/></body>");
}
function configureSecondTab() {