mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
166 lines
3.7 KiB
JavaScript
166 lines
3.7 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
const trimPref = "browser.urlbar.trimURLs";
|
||
|
|
||
|
function test() {
|
||
|
|
||
|
gBrowser.selectedTab = gBrowser.addTab();
|
||
|
|
||
|
registerCleanupFunction(function () {
|
||
|
gBrowser.removeCurrentTab();
|
||
|
Services.prefs.clearUserPref(trimPref);
|
||
|
URLBarSetURI();
|
||
|
});
|
||
|
|
||
|
Services.prefs.setBoolPref(trimPref, true);
|
||
|
|
||
|
waitForExplicitFinish();
|
||
|
|
||
|
nextTest();
|
||
|
}
|
||
|
|
||
|
var tests = [
|
||
|
// pageproxystate="invalid"
|
||
|
{
|
||
|
setURL: "http://example.com/",
|
||
|
expectedURL: "example.com",
|
||
|
copyExpected: "example.com"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "<e>xample.com",
|
||
|
copyExpected: "e"
|
||
|
},
|
||
|
|
||
|
|
||
|
// pageproxystate="valid" from this point on (due to the load)
|
||
|
{
|
||
|
loadURL: "http://example.com/",
|
||
|
expectedURL: "example.com",
|
||
|
copyExpected: "http://example.com/"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "<example.co>m",
|
||
|
copyExpected: "http://example.co"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "e<x>ample.com",
|
||
|
copyExpected: "x"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "<e>xample.com",
|
||
|
copyExpected: "http://e"
|
||
|
},
|
||
|
|
||
|
// Test escaping
|
||
|
{
|
||
|
loadURL: "http://example.com/()%C3%A9",
|
||
|
expectedURL: "example.com/()\xe9",
|
||
|
copyExpected: "http://example.com/%28%29%C3%A9"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "<example.com/(>)\xe9",
|
||
|
copyExpected: "http://example.com/("
|
||
|
},
|
||
|
{
|
||
|
copyVal: "e<xample.com/(>)\xe9",
|
||
|
copyExpected: "xample.com/("
|
||
|
},
|
||
|
|
||
|
{
|
||
|
loadURL: "http://example.com/%C3%A9%C3%A9",
|
||
|
expectedURL: "example.com/\xe9\xe9",
|
||
|
copyExpected: "http://example.com/%C3%A9%C3%A9"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "e<xample.com/\xe9>\xe9",
|
||
|
copyExpected: "xample.com/\xe9"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "<example.com/\xe9>\xe9",
|
||
|
copyExpected: "http://example.com/\xe9"
|
||
|
},
|
||
|
|
||
|
// data: and javsacript: URIs shouldn't be encoded
|
||
|
{
|
||
|
loadURL: "javascript:('%C3%A9')",
|
||
|
expectedURL: "javascript:('\xe9')",
|
||
|
copyExpected: "javascript:('\xe9')"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "<javascript:(>'\xe9')",
|
||
|
copyExpected: "javascript:("
|
||
|
},
|
||
|
|
||
|
{
|
||
|
loadURL: "data:text/html,(%C3%A9)",
|
||
|
expectedURL: "data:text/html,(\xe9)",
|
||
|
copyExpected: "data:text/html,(\xe9)"
|
||
|
},
|
||
|
{
|
||
|
copyVal: "<data:text/html,(>\xe9)",
|
||
|
copyExpected: "data:text/html,("
|
||
|
},
|
||
|
{
|
||
|
copyVal: "data:<text/html,(\xe9>)",
|
||
|
copyExpected: "text/html,(\xe9"
|
||
|
}
|
||
|
];
|
||
|
|
||
|
function nextTest() {
|
||
|
let test = tests.shift();
|
||
|
if (tests.length == 0)
|
||
|
runTest(test, finish);
|
||
|
else
|
||
|
runTest(test, nextTest);
|
||
|
}
|
||
|
|
||
|
function runTest(test, cb) {
|
||
|
function doCheck() {
|
||
|
if (test.setURL || test.loadURL)
|
||
|
is(gURLBar.value, test.expectedURL, "url bar value set");
|
||
|
|
||
|
testCopy(test.copyVal, test.copyExpected, cb);
|
||
|
}
|
||
|
|
||
|
if (test.loadURL) {
|
||
|
loadURL(test.loadURL, doCheck);
|
||
|
} else {
|
||
|
if (test.setURL)
|
||
|
gURLBar.value = test.setURL;
|
||
|
doCheck();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function testCopy(copyVal, targetValue, cb) {
|
||
|
info("Expecting copy of: " + targetValue);
|
||
|
waitForClipboard(targetValue, function () {
|
||
|
gURLBar.focus();
|
||
|
if (copyVal) {
|
||
|
let startBracket = copyVal.indexOf("<");
|
||
|
let endBracket = copyVal.indexOf(">");
|
||
|
if (startBracket == -1 || endBracket == -1 ||
|
||
|
startBracket > endBracket ||
|
||
|
copyVal.replace("<", "").replace(">", "") != gURLBar.value) {
|
||
|
ok(false, "invalid copyVal: " + copyVal);
|
||
|
}
|
||
|
gURLBar.selectionStart = startBracket;
|
||
|
gURLBar.selectionEnd = endBracket - 1;
|
||
|
} else {
|
||
|
gURLBar.select();
|
||
|
}
|
||
|
|
||
|
goDoCommand("cmd_copy");
|
||
|
}, cb, cb);
|
||
|
}
|
||
|
|
||
|
function loadURL(aURL, aCB) {
|
||
|
gBrowser.selectedBrowser.addEventListener("load", function () {
|
||
|
gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true);
|
||
|
is(gBrowser.currentURI.spec, aURL, "loaded expected URL");
|
||
|
aCB();
|
||
|
}, true);
|
||
|
|
||
|
gBrowser.loadURI(aURL);
|
||
|
}
|