mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-08 20:28:42 +02:00
I modified the boolean associated with fixupCreateAlternateURI to only be true if the host which contains the prefix and suffix differs from the fixed up version. This will allow the boolean to be false in cases where the fixup doesn't change the host. Then for the DNS error page, there is a check as to whether the host or protocol was changed. Differential Revision: https://phabricator.services.mozilla.com/D159175
162 lines
4.3 KiB
JavaScript
162 lines
4.3 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
"use strict";
|
|
|
|
var data = [
|
|
{
|
|
// singleword.
|
|
wrong: "http://example/",
|
|
fixed: "https://www.example.com/",
|
|
},
|
|
{
|
|
// upgrade protocol.
|
|
wrong: "http://www.example.com/",
|
|
fixed: "https://www.example.com/",
|
|
noAlternateURI: true,
|
|
},
|
|
{
|
|
// no difference.
|
|
wrong: "https://www.example.com/",
|
|
fixed: "https://www.example.com/",
|
|
noProtocolFixup: true,
|
|
noAlternateURI: true,
|
|
},
|
|
{
|
|
// don't add prefix when there's more than one dot.
|
|
wrong: "http://www.example.abc.def/",
|
|
fixed: "https://www.example.abc.def/",
|
|
noAlternateURI: true,
|
|
},
|
|
{
|
|
// http -> https.
|
|
wrong: "http://www.example/",
|
|
fixed: "https://www.example/",
|
|
noAlternateURI: true,
|
|
},
|
|
{
|
|
// domain.com -> https://www.domain.com.
|
|
wrong: "http://example.com/",
|
|
fixed: "https://www.example.com/",
|
|
},
|
|
{
|
|
// example/example... -> https://www.example.com/example/
|
|
wrong: "http://example/example/",
|
|
fixed: "https://www.example.com/example/",
|
|
},
|
|
{
|
|
// example/example/s#q -> www.example.com/example/s#q.
|
|
wrong: "http://example/example/s#q",
|
|
fixed: "https://www.example.com/example/s#q",
|
|
},
|
|
{
|
|
wrong: "http://モジラ.org",
|
|
fixed: "https://www.xn--yck6dwa.org/",
|
|
},
|
|
{
|
|
wrong: "http://モジラ",
|
|
fixed: "https://www.xn--yck6dwa.com/",
|
|
},
|
|
{
|
|
wrong: "http://xn--yck6dwa",
|
|
fixed: "https://www.xn--yck6dwa.com/",
|
|
},
|
|
{
|
|
wrong: "https://モジラ.org",
|
|
fixed: "https://www.xn--yck6dwa.org/",
|
|
noProtocolFixup: true,
|
|
},
|
|
{
|
|
wrong: "https://モジラ",
|
|
fixed: "https://www.xn--yck6dwa.com/",
|
|
noProtocolFixup: true,
|
|
},
|
|
{
|
|
wrong: "https://xn--yck6dwa",
|
|
fixed: "https://www.xn--yck6dwa.com/",
|
|
noProtocolFixup: true,
|
|
},
|
|
{
|
|
// Host is https -> fixup typos of protocol
|
|
wrong: "htp://https://mozilla.org",
|
|
fixed: "http://https//mozilla.org",
|
|
noAlternateURI: true,
|
|
},
|
|
{
|
|
// Host is http -> fixup typos of protocol
|
|
wrong: "ttp://http://mozilla.org",
|
|
fixed: "http://http//mozilla.org",
|
|
noAlternateURI: true,
|
|
},
|
|
{
|
|
// Host is localhost -> fixup typos of protocol
|
|
wrong: "htps://localhost://mozilla.org",
|
|
fixed: "https://localhost//mozilla.org",
|
|
noAlternateURI: true,
|
|
},
|
|
{
|
|
// view-source is not http/https -> error
|
|
wrong: "view-source:http://example/example/example/example",
|
|
reject: true,
|
|
comment: "Scheme should be either http or https",
|
|
},
|
|
{
|
|
// file is not http/https -> error
|
|
wrong: "file://http://example/example/example/example",
|
|
reject: true,
|
|
comment: "Scheme should be either http or https",
|
|
},
|
|
{
|
|
// Protocol is missing -> error
|
|
wrong: "example.com",
|
|
reject: true,
|
|
comment: "Scheme should be either http or https",
|
|
},
|
|
{
|
|
// Empty input -> error
|
|
wrong: "",
|
|
reject: true,
|
|
comment: "Should pass a non-null uri",
|
|
},
|
|
];
|
|
|
|
add_task(async function setup() {
|
|
Services.prefs.setStringPref("browser.fixup.alternate.prefix", "www.");
|
|
Services.prefs.setStringPref("browser.fixup.alternate.suffix", ".com");
|
|
Services.prefs.setStringPref("browser.fixup.alternate.protocol", "https");
|
|
registerCleanupFunction(function() {
|
|
Services.prefs.clearUserPref("browser.fixup.alternate.prefix");
|
|
Services.prefs.clearUserPref("browser.fixup.alternate.suffix");
|
|
Services.prefs.clearUserPref("browser.fixup.alternate.protocol");
|
|
});
|
|
});
|
|
|
|
add_task(function test_default_https_pref() {
|
|
for (let item of data) {
|
|
if (item.reject) {
|
|
Assert.throws(
|
|
() => Services.uriFixup.forceHttpFixup(item.wrong),
|
|
/NS_ERROR_FAILURE/,
|
|
item.comment
|
|
);
|
|
} else {
|
|
let {
|
|
fixupChangedProtocol,
|
|
fixupCreatedAlternateURI,
|
|
fixedURI,
|
|
} = Services.uriFixup.forceHttpFixup(item.wrong);
|
|
Assert.equal(fixedURI.spec, item.fixed, "Specs should be the same");
|
|
Assert.equal(
|
|
fixupChangedProtocol,
|
|
!item.noProtocolFixup,
|
|
`fixupChangedProtocol should be ${!item.noAlternateURI}`
|
|
);
|
|
Assert.equal(
|
|
fixupCreatedAlternateURI,
|
|
!item.noAlternateURI,
|
|
`fixupCreatedAlternateURI should be ${!item.limitedFixup}`
|
|
);
|
|
}
|
|
}
|
|
});
|