зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1598516 - Remove isLocalAboutURI since all about: URIs are local. r=Gijs
With DocumentChannel, the 'URI' of the channel that we proxy for RemoteWebProgress doesn't have the resolved URI, and reports the about: version instead. All about: URIs are local these days, so we can just check for that scheme directly, and simplify the code. Differential Revision: https://phabricator.services.mozilla.com/D54251 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
e6d9c278a0
Коммит
d537b5fdb6
|
@ -853,38 +853,6 @@
|
||||||
return rv;
|
return rv;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine if a URI is an about: page pointing to a local resource.
|
|
||||||
*/
|
|
||||||
isLocalAboutURI(aURI, aResolvedURI) {
|
|
||||||
if (!aURI.schemeIs("about")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Specially handle about:blank as local
|
|
||||||
if (aURI.pathQueryRef === "blank") {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Use the passed in resolvedURI if we have one
|
|
||||||
const resolvedURI =
|
|
||||||
aResolvedURI ||
|
|
||||||
Services.io.newChannelFromURI(
|
|
||||||
aURI,
|
|
||||||
null, // loadingNode
|
|
||||||
Services.scriptSecurityManager.getSystemPrincipal(), // loadingPrincipal
|
|
||||||
null, // triggeringPrincipal
|
|
||||||
Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL, // securityFlags
|
|
||||||
Ci.nsIContentPolicy.TYPE_OTHER // contentPolicyType
|
|
||||||
).URI;
|
|
||||||
return resolvedURI.schemeIs("jar") || resolvedURI.schemeIs("file");
|
|
||||||
} catch (ex) {
|
|
||||||
// aURI might be invalid.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets an icon for the tab if the URI is defined in FAVICON_DEFAULTS.
|
* Sets an icon for the tab if the URI is defined in FAVICON_DEFAULTS.
|
||||||
*/
|
*/
|
||||||
|
@ -5567,7 +5535,7 @@
|
||||||
// pointing to local resources.
|
// pointing to local resources.
|
||||||
if (
|
if (
|
||||||
aRequest instanceof Ci.nsIChannel &&
|
aRequest instanceof Ci.nsIChannel &&
|
||||||
gBrowser.isLocalAboutURI(aRequest.originalURI, aRequest.URI)
|
aRequest.originalURI.schemeIs("about")
|
||||||
) {
|
) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ tags = audiochannel
|
||||||
skip-if = (verify && debug && (os == 'linux'))
|
skip-if = (verify && debug && (os == 'linux'))
|
||||||
support-files =
|
support-files =
|
||||||
test_bug1358314.html
|
test_bug1358314.html
|
||||||
[browser_isLocalAboutURI.js]
|
|
||||||
[browser_e10s_about_page_triggeringprincipal.js]
|
[browser_e10s_about_page_triggeringprincipal.js]
|
||||||
skip-if = verify
|
skip-if = verify
|
||||||
support-files =
|
support-files =
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
/* Any copyright is dedicated to the Public Domain.
|
|
||||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
||||||
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unit tests for tabbrowser.isLocalAboutURI to make sure it returns the
|
|
||||||
* appropriate values for various URIs as well as optional resolved URI.
|
|
||||||
*/
|
|
||||||
|
|
||||||
add_task(function test_URI() {
|
|
||||||
const check = (spec, expect, description) => {
|
|
||||||
const URI = Services.io.newURI(spec);
|
|
||||||
try {
|
|
||||||
is(gBrowser.isLocalAboutURI(URI), expect, description);
|
|
||||||
} catch (ex) {
|
|
||||||
ok(false, "isLocalAboutURI should not throw");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
check("https://www.mozilla.org/", false, "https is not about");
|
|
||||||
check("http://www.mozilla.org/", false, "http is not about");
|
|
||||||
check("about:blank", true, "about:blank is local");
|
|
||||||
check("about:about", true, "about:about is local");
|
|
||||||
check("about:newtab", true, "about:newtab is local");
|
|
||||||
check(
|
|
||||||
"about:random-invalid-uri",
|
|
||||||
false,
|
|
||||||
"about:random-invalid-uri is invalid but should not throw"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
add_task(function test_URI_with_resolved() {
|
|
||||||
const check = (spec, resolvedSpec, expect, description) => {
|
|
||||||
const URI = Services.io.newURI(spec);
|
|
||||||
const resolvedURI = Services.io.newURI(resolvedSpec);
|
|
||||||
is(gBrowser.isLocalAboutURI(URI, resolvedURI), expect, description);
|
|
||||||
};
|
|
||||||
check(
|
|
||||||
"about:newtab",
|
|
||||||
"jar:file:///Applications/Firefox.app/Contents/Resources/browser/omni.ja!/chrome/browser/res/activity-stream/prerendered/en-US/activity-stream.html",
|
|
||||||
true,
|
|
||||||
"about:newtab with jar is local"
|
|
||||||
);
|
|
||||||
check(
|
|
||||||
"about:newtab",
|
|
||||||
"file:///mozilla-central/browser/base/content/newtab/newTab.xhtml",
|
|
||||||
true,
|
|
||||||
"about:newtab with file is local"
|
|
||||||
);
|
|
||||||
check(
|
|
||||||
"about:newtab",
|
|
||||||
"https://www.mozilla.org/newtab",
|
|
||||||
false,
|
|
||||||
"about:newtab with https is not local"
|
|
||||||
);
|
|
||||||
});
|
|
|
@ -2978,7 +2978,7 @@ var SessionStoreInternal = {
|
||||||
// waiting for data from the frame script. This throbber is disabled
|
// waiting for data from the frame script. This throbber is disabled
|
||||||
// if the URI is a local about: URI.
|
// if the URI is a local about: URI.
|
||||||
let uriObj = aTab.linkedBrowser.currentURI;
|
let uriObj = aTab.linkedBrowser.currentURI;
|
||||||
if (!uriObj || (uriObj && !aWindow.gBrowser.isLocalAboutURI(uriObj))) {
|
if (!uriObj || (uriObj && !uriObj.schemeIs("about"))) {
|
||||||
newTab.setAttribute("busy", "true");
|
newTab.setAttribute("busy", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3662,7 +3662,7 @@ var SessionStoreInternal = {
|
||||||
// Start the throbber to pretend we're doing something while actually
|
// Start the throbber to pretend we're doing something while actually
|
||||||
// waiting for data from the frame script. This throbber is disabled
|
// waiting for data from the frame script. This throbber is disabled
|
||||||
// if the URI is a local about: URI.
|
// if the URI is a local about: URI.
|
||||||
if (!uriObj || (uriObj && !window.gBrowser.isLocalAboutURI(uriObj))) {
|
if (!uriObj || (uriObj && !uriObj.schemeIs("about"))) {
|
||||||
tab.setAttribute("busy", "true");
|
tab.setAttribute("busy", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -374,9 +374,7 @@ class AsyncTabSwitcher {
|
||||||
// determined by the busy state on the tab element and checking
|
// determined by the busy state on the tab element and checking
|
||||||
// if the loaded URI is local.
|
// if the loaded URI is local.
|
||||||
let isBusy = this.requestedTab.hasAttribute("busy");
|
let isBusy = this.requestedTab.hasAttribute("busy");
|
||||||
let isLocalAbout = this.tabbrowser.isLocalAboutURI(
|
let isLocalAbout = requestedBrowser.currentURI.schemeIs("about");
|
||||||
requestedBrowser.currentURI
|
|
||||||
);
|
|
||||||
let hasSufficientlyLoaded = !isBusy && !isLocalAbout;
|
let hasSufficientlyLoaded = !isBusy && !isLocalAbout;
|
||||||
|
|
||||||
let fl = requestedBrowser.frameLoader;
|
let fl = requestedBrowser.frameLoader;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче