mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 19:04:45 +00:00
Bug 935377 - Firefox should fix common scheme typos, r=dolske
This commit is contained in:
parent
2faa3798f1
commit
a7ce12665b
@ -1839,8 +1839,10 @@ function loadURI(uri, referrer, postData, allowThirdPartyFixup) {
|
|||||||
postData = null;
|
postData = null;
|
||||||
|
|
||||||
var flags = nsIWebNavigation.LOAD_FLAGS_NONE;
|
var flags = nsIWebNavigation.LOAD_FLAGS_NONE;
|
||||||
if (allowThirdPartyFixup)
|
if (allowThirdPartyFixup) {
|
||||||
flags |= nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
flags |= nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
||||||
|
flags |= nsIWebNavigation.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
gBrowser.loadURIWithFlags(uri, flags, referrer, null, postData);
|
gBrowser.loadURIWithFlags(uri, flags, referrer, null, postData);
|
||||||
|
@ -82,7 +82,8 @@ function open()
|
|||||||
switch (dialog.openWhereList.value) {
|
switch (dialog.openWhereList.value) {
|
||||||
case "0":
|
case "0":
|
||||||
var webNav = Components.interfaces.nsIWebNavigation;
|
var webNav = Components.interfaces.nsIWebNavigation;
|
||||||
var flags = webNav.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
var flags = webNav.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP |
|
||||||
|
webNav.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
if (!mayInheritPrincipal)
|
if (!mayInheritPrincipal)
|
||||||
flags |= webNav.LOAD_FLAGS_DISALLOW_INHERIT_OWNER;
|
flags |= webNav.LOAD_FLAGS_DISALLOW_INHERIT_OWNER;
|
||||||
browser.gBrowser.loadURIWithFlags(url, flags, null, null, postData);
|
browser.gBrowser.loadURIWithFlags(url, flags, null, null, postData);
|
||||||
|
@ -1601,8 +1601,10 @@
|
|||||||
b.userTypedValue = aURI;
|
b.userTypedValue = aURI;
|
||||||
|
|
||||||
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
|
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
|
||||||
if (aAllowThirdPartyFixup)
|
if (aAllowThirdPartyFixup) {
|
||||||
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
||||||
|
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
|
}
|
||||||
if (aFromExternal)
|
if (aFromExternal)
|
||||||
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FROM_EXTERNAL;
|
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FROM_EXTERNAL;
|
||||||
if (aDisableMCB)
|
if (aDisableMCB)
|
||||||
@ -4480,7 +4482,10 @@
|
|||||||
} else {
|
} else {
|
||||||
// Load in an existing tab.
|
// Load in an existing tab.
|
||||||
try {
|
try {
|
||||||
this.tabbrowser.getBrowserForTab(tab).loadURIWithFlags(url, Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP);
|
let webNav = Ci.nsIWebNavigation;
|
||||||
|
let flags = webNav.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP |
|
||||||
|
webNav.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
|
this.tabbrowser.getBrowserForTab(tab).loadURIWithFlags(url, flags);
|
||||||
if (!bgLoad)
|
if (!bgLoad)
|
||||||
this.selectedItem = tab;
|
this.selectedItem = tab;
|
||||||
} catch(ex) {
|
} catch(ex) {
|
||||||
|
@ -293,7 +293,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function loadCurrent() {
|
function loadCurrent() {
|
||||||
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
let webnav = Ci.nsIWebNavigation;
|
||||||
|
let flags = webnav.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP |
|
||||||
|
webnav.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
// Pass LOAD_FLAGS_DISALLOW_INHERIT_OWNER to prevent any loads from
|
// Pass LOAD_FLAGS_DISALLOW_INHERIT_OWNER to prevent any loads from
|
||||||
// inheriting the currently loaded document's principal, unless this
|
// inheriting the currently loaded document's principal, unless this
|
||||||
// URL is marked as safe to inherit (e.g. came from a bookmark
|
// URL is marked as safe to inherit (e.g. came from a bookmark
|
||||||
|
@ -300,8 +300,10 @@ function openLinkIn(url, where, params) {
|
|||||||
switch (where) {
|
switch (where) {
|
||||||
case "current":
|
case "current":
|
||||||
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
|
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE;
|
||||||
if (aAllowThirdPartyFixup)
|
if (aAllowThirdPartyFixup) {
|
||||||
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
||||||
|
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
|
}
|
||||||
if (aDisallowInheritPrincipal)
|
if (aDisallowInheritPrincipal)
|
||||||
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_OWNER;
|
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_OWNER;
|
||||||
w.gBrowser.loadURIWithFlags(url, flags, aReferrerURI, null, aPostData);
|
w.gBrowser.loadURIWithFlags(url, flags, aReferrerURI, null, aPostData);
|
||||||
|
@ -54,9 +54,12 @@ function shouldLoadURI(aURI) {
|
|||||||
|
|
||||||
function resolveURIInternal(aCmdLine, aArgument) {
|
function resolveURIInternal(aCmdLine, aArgument) {
|
||||||
var uri = aCmdLine.resolveURI(aArgument);
|
var uri = aCmdLine.resolveURI(aArgument);
|
||||||
|
var urifixup = Components.classes["@mozilla.org/docshell/urifixup;1"]
|
||||||
|
.getService(nsIURIFixup);
|
||||||
|
|
||||||
if (!(uri instanceof nsIFileURL)) {
|
if (!(uri instanceof nsIFileURL)) {
|
||||||
return uri;
|
return urifixup.createFixupURI(aArgument,
|
||||||
|
urifixup.FIXUP_FLAG_FIX_SCHEME_TYPOS);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -71,9 +74,6 @@ function resolveURIInternal(aCmdLine, aArgument) {
|
|||||||
// doesn't exist. Try URI fixup heuristics: see bug 290782.
|
// doesn't exist. Try URI fixup heuristics: see bug 290782.
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var urifixup = Components.classes["@mozilla.org/docshell/urifixup;1"]
|
|
||||||
.getService(nsIURIFixup);
|
|
||||||
|
|
||||||
uri = urifixup.createFixupURI(aArgument, 0);
|
uri = urifixup.createFixupURI(aArgument, 0);
|
||||||
}
|
}
|
||||||
catch (e) {
|
catch (e) {
|
||||||
|
@ -368,12 +368,16 @@ var BrowserUI = {
|
|||||||
|
|
||||||
Task.spawn(function() {
|
Task.spawn(function() {
|
||||||
let postData = {};
|
let postData = {};
|
||||||
|
let webNav = Ci.nsIWebNavigation;
|
||||||
|
let flags = webNav.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP |
|
||||||
|
webNav.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
aURI = yield Browser.getShortcutOrURI(aURI, postData);
|
aURI = yield Browser.getShortcutOrURI(aURI, postData);
|
||||||
Browser.loadURI(aURI, { flags: Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP, postData: postData });
|
Browser.loadURI(aURI, { flags: flags, postData: postData });
|
||||||
|
|
||||||
// Delay doing the fixup so the raw URI is passed to loadURIWithFlags
|
// Delay doing the fixup so the raw URI is passed to loadURIWithFlags
|
||||||
// and the proper third-party fixup can be done
|
// and the proper third-party fixup can be done
|
||||||
let fixupFlags = Ci.nsIURIFixup.FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP;
|
let fixupFlags = Ci.nsIURIFixup.FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP |
|
||||||
|
Ci.nsIURIFixup.FIXUP_FLAG_FIX_SCHEME_TYPOS;
|
||||||
let uri = gURIFixup.createFixupURI(aURI, fixupFlags);
|
let uri = gURIFixup.createFixupURI(aURI, fixupFlags);
|
||||||
gHistSvc.markPageAsTyped(uri);
|
gHistSvc.markPageAsTyped(uri);
|
||||||
|
|
||||||
|
@ -172,7 +172,10 @@ var Browser = {
|
|||||||
let self = this;
|
let self = this;
|
||||||
function loadStartupURI() {
|
function loadStartupURI() {
|
||||||
if (activationURI) {
|
if (activationURI) {
|
||||||
self.addTab(activationURI, true, null, { flags: Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP });
|
let webNav = Ci.nsIWebNavigation;
|
||||||
|
let flags = webNav.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP |
|
||||||
|
webNav.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
|
self.addTab(activationURI, true, null, { flags: flags });
|
||||||
} else {
|
} else {
|
||||||
let uri = commandURL || Browser.getHomePage();
|
let uri = commandURL || Browser.getHomePage();
|
||||||
self.addTab(uri, true);
|
self.addTab(uri, true);
|
||||||
|
@ -1271,6 +1271,7 @@ nsScriptSecurityManager::CheckLoadURIStrWithPrincipal(nsIPrincipal* aPrincipal,
|
|||||||
|
|
||||||
uint32_t flags[] = {
|
uint32_t flags[] = {
|
||||||
nsIURIFixup::FIXUP_FLAG_NONE,
|
nsIURIFixup::FIXUP_FLAG_NONE,
|
||||||
|
nsIURIFixup::FIXUP_FLAG_FIX_SCHEME_TYPOS,
|
||||||
nsIURIFixup::FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP,
|
nsIURIFixup::FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP,
|
||||||
nsIURIFixup::FIXUP_FLAGS_MAKE_ALTERNATE_URI,
|
nsIURIFixup::FIXUP_FLAGS_MAKE_ALTERNATE_URI,
|
||||||
nsIURIFixup::FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP |
|
nsIURIFixup::FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP |
|
||||||
|
@ -1583,6 +1583,9 @@ nsDocShell::LoadURI(nsIURI * aURI,
|
|||||||
if (aLoadFlags & LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP)
|
if (aLoadFlags & LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP)
|
||||||
flags |= INTERNAL_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
flags |= INTERNAL_LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
||||||
|
|
||||||
|
if (aLoadFlags & LOAD_FLAGS_FIXUP_SCHEME_TYPOS)
|
||||||
|
flags |= INTERNAL_LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
|
|
||||||
if (aLoadFlags & LOAD_FLAGS_FIRST_LOAD)
|
if (aLoadFlags & LOAD_FLAGS_FIRST_LOAD)
|
||||||
flags |= INTERNAL_LOAD_FLAGS_FIRST_LOAD;
|
flags |= INTERNAL_LOAD_FLAGS_FIRST_LOAD;
|
||||||
|
|
||||||
@ -4272,6 +4275,9 @@ nsDocShell::LoadURI(const char16_t * aURI,
|
|||||||
if (aLoadFlags & LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP) {
|
if (aLoadFlags & LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP) {
|
||||||
fixupFlags |= nsIURIFixup::FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP;
|
fixupFlags |= nsIURIFixup::FIXUP_FLAG_ALLOW_KEYWORD_LOOKUP;
|
||||||
}
|
}
|
||||||
|
if (aLoadFlags & LOAD_FLAGS_FIXUP_SCHEME_TYPOS) {
|
||||||
|
fixupFlags |= nsIURIFixup::FIXUP_FLAG_FIX_SCHEME_TYPOS;
|
||||||
|
}
|
||||||
nsCOMPtr<nsIInputStream> fixupStream;
|
nsCOMPtr<nsIInputStream> fixupStream;
|
||||||
rv = sURIFixup->CreateFixupURI(uriString, fixupFlags,
|
rv = sURIFixup->CreateFixupURI(uriString, fixupFlags,
|
||||||
getter_AddRefs(fixupStream),
|
getter_AddRefs(fixupStream),
|
||||||
|
@ -44,7 +44,7 @@ interface nsIReflowObserver;
|
|||||||
|
|
||||||
typedef unsigned long nsLoadFlags;
|
typedef unsigned long nsLoadFlags;
|
||||||
|
|
||||||
[scriptable, builtinclass, uuid(55ca6545-7ce4-49ad-8117-8286ca9c61bb)]
|
[scriptable, builtinclass, uuid(e3ea830d-2614-4aeb-9ec3-b8f744b03b80)]
|
||||||
interface nsIDocShell : nsIDocShellTreeItem
|
interface nsIDocShell : nsIDocShellTreeItem
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@ -111,6 +111,8 @@ interface nsIDocShell : nsIDocShellTreeItem
|
|||||||
// Whether the load should be treated as srcdoc load, rather than a URI one.
|
// Whether the load should be treated as srcdoc load, rather than a URI one.
|
||||||
const long INTERNAL_LOAD_FLAGS_IS_SRCDOC = 0x40;
|
const long INTERNAL_LOAD_FLAGS_IS_SRCDOC = 0x40;
|
||||||
|
|
||||||
|
const long INTERNAL_LOAD_FLAGS_FIXUP_SCHEME_TYPOS = 0x80;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads the given URI. This method is identical to loadURI(...) except
|
* Loads the given URI. This method is identical to loadURI(...) except
|
||||||
* that its parameter list is broken out instead of being packaged inside
|
* that its parameter list is broken out instead of being packaged inside
|
||||||
|
@ -16,7 +16,7 @@ interface nsIURI;
|
|||||||
* location, stop or restart an in process load, or determine where the object
|
* location, stop or restart an in process load, or determine where the object
|
||||||
* has previously gone.
|
* has previously gone.
|
||||||
*/
|
*/
|
||||||
[scriptable, uuid(28404f7e-0f17-4dc3-a21a-2074d8659b02)]
|
[scriptable, uuid(dbd6241d-c76e-42c0-9410-930589d803a2)]
|
||||||
interface nsIWebNavigation : nsISupports
|
interface nsIWebNavigation : nsISupports
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
@ -191,6 +191,11 @@ interface nsIWebNavigation : nsISupports
|
|||||||
*/
|
*/
|
||||||
const unsigned long LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP = 0x100000;
|
const unsigned long LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP = 0x100000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This flag specifies that common scheme typos should be corrected.
|
||||||
|
*/
|
||||||
|
const unsigned long LOAD_FLAGS_FIXUP_SCHEME_TYPOS = 0x200000;
|
||||||
|
|
||||||
/* Note that flag 0x80000 is available. */
|
/* Note that flag 0x80000 is available. */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1427,7 +1427,8 @@ var BrowserApp = {
|
|||||||
|
|
||||||
// Pass LOAD_FLAGS_DISALLOW_INHERIT_OWNER to prevent any loads from
|
// Pass LOAD_FLAGS_DISALLOW_INHERIT_OWNER to prevent any loads from
|
||||||
// inheriting the currently loaded document's principal.
|
// inheriting the currently loaded document's principal.
|
||||||
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP;
|
let flags = Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_THIRD_PARTY_FIXUP |
|
||||||
|
Ci.nsIWebNavigation.LOAD_FLAGS_FIXUP_SCHEME_TYPOS;
|
||||||
if (data.userEntered) {
|
if (data.userEntered) {
|
||||||
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_OWNER;
|
flags |= Ci.nsIWebNavigation.LOAD_FLAGS_DISALLOW_INHERIT_OWNER;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user