mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
166 lines
6.3 KiB
JavaScript
166 lines
6.3 KiB
JavaScript
/* vim:set ts=2 sw=2 sts=2 et: */
|
|
/*
|
|
* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
var gPane = null;
|
|
var gTab = null;
|
|
var gDebuggee = null;
|
|
var gDebugger = null;
|
|
|
|
function test() {
|
|
debug_tab_pane(STACK_URL, function(aTab, aDebuggee, aPane) {
|
|
gTab = aTab;
|
|
gDebuggee = aDebuggee;
|
|
gPane = aPane;
|
|
gDebugger = gPane.contentWindow;
|
|
|
|
testSimpleCall();
|
|
});
|
|
}
|
|
|
|
function testSimpleCall() {
|
|
gDebugger.DebuggerController.activeThread.addOneTimeListener("framesadded", function() {
|
|
Services.tm.currentThread.dispatch({ run: function() {
|
|
|
|
testlabelshortening();
|
|
}}, 0);
|
|
});
|
|
|
|
gDebuggee.simpleCall();
|
|
}
|
|
|
|
function testlabelshortening() {
|
|
gDebugger.DebuggerController.activeThread.resume(function() {
|
|
let sv = gDebugger.SourceUtils;
|
|
let vs = gDebugger.DebuggerView.Sources;
|
|
let ss = gDebugger.DebuggerController.SourceScripts;
|
|
vs.empty();
|
|
vs._container.removeEventListener("select", vs._onScriptsChange, false);
|
|
|
|
is(sv.trimUrlQuery("a/b/c.d?test=1&random=4#reference"), "a/b/c.d",
|
|
"Trimming the url query isn't done properly.");
|
|
|
|
let ellipsis = Services.prefs.getComplexValue("intl.ellipsis", Ci.nsIPrefLocalizedString);
|
|
let nanana = new Array(20).join(NaN);
|
|
|
|
let superLargeLabel = new Array(100).join("Beer can in Jamaican sounds like Bacon!");
|
|
let trimmedLargeLabel = sv.trimUrlLength(superLargeLabel, 1234);
|
|
is(trimmedLargeLabel.length, 1235,
|
|
"Trimming large labels isn't done properly.");
|
|
ok(trimmedLargeLabel.endsWith(ellipsis),
|
|
"Trimming large labels should add an ellipsis at the end.");
|
|
|
|
let urls = [
|
|
{ href: "http://some.address.com/random/", leaf: "subrandom/" },
|
|
{ href: "http://some.address.com/random/", leaf: "suprandom/?a=1" },
|
|
{ href: "http://some.address.com/random/", leaf: "?a=1" },
|
|
{ href: "https://another.address.org/random/subrandom/", leaf: "page.html" },
|
|
|
|
{ href: "ftp://interesting.address.org/random/", leaf: "script.js" },
|
|
{ href: "ftp://interesting.address.com/random/", leaf: "script.js" },
|
|
{ href: "ftp://interesting.address.com/random/", leaf: "x/script.js" },
|
|
{ href: "ftp://interesting.address.com/random/", leaf: "x/y/script.js?a=1" },
|
|
{ href: "ftp://interesting.address.com/random/x/", leaf: "y/script.js?a=1&b=2", dupe: true },
|
|
{ href: "ftp://interesting.address.com/random/x/y/", leaf: "script.js?a=1&b=2&c=3", dupe: true },
|
|
{ href: "ftp://interesting.address.com/random/", leaf: "x/y/script.js?a=2", dupe: true },
|
|
{ href: "ftp://interesting.address.com/random/x/", leaf: "y/script.js?a=2&b=3", dupe: true },
|
|
{ href: "ftp://interesting.address.com/random/x/y/", leaf: "script.js?a=2&b=3&c=4", dupe: true },
|
|
|
|
{ href: "file://random/", leaf: "script_t1.js&a=1&b=2&c=3" },
|
|
{ href: "file://random/", leaf: "script_t2_1.js#id" },
|
|
{ href: "file://random/", leaf: "script_t2_2.js?a" },
|
|
{ href: "file://random/", leaf: "script_t2_3.js&b" },
|
|
{ href: "resource://random/", leaf: "script_t3_1.js#id?a=1&b=2" },
|
|
{ href: "resource://random/", leaf: "script_t3_2.js?a=1&b=2#id" },
|
|
{ href: "resource://random/", leaf: "script_t3_3.js&a=1&b=2#id" },
|
|
|
|
{ href: nanana, leaf: "Batman!" + "{trim me, now and forevermore}" }
|
|
];
|
|
|
|
urls.forEach(function(url) {
|
|
executeSoon(function() {
|
|
let loc = url.href + url.leaf;
|
|
vs.push(sv.getSourceLabel(loc, url.href), loc, { forced: true });
|
|
});
|
|
});
|
|
|
|
executeSoon(function() {
|
|
info("Script labels:");
|
|
info(vs.labels.toSource());
|
|
|
|
info("Script locations:");
|
|
info(vs.values.toSource());
|
|
|
|
urls.forEach(function(url) {
|
|
let loc = url.href + url.leaf;
|
|
if (url.dupe) {
|
|
ok(!vs.containsValue(loc), "Shouldn't contain script: " + loc);
|
|
} else {
|
|
ok(vs.containsValue(loc), "Should contain script: " + loc);
|
|
}
|
|
});
|
|
|
|
ok(vs.containsLabel("random/subrandom/"),
|
|
"Script (0) label is incorrect.");
|
|
ok(vs.containsLabel("random/suprandom/?a=1"),
|
|
"Script (1) label is incorrect.");
|
|
ok(vs.containsLabel("random/?a=1"),
|
|
"Script (2) label is incorrect.");
|
|
ok(vs.containsLabel("page.html"),
|
|
"Script (3) label is incorrect.");
|
|
|
|
ok(vs.containsLabel("script.js"),
|
|
"Script (4) label is incorrect.");
|
|
ok(vs.containsLabel("random/script.js"),
|
|
"Script (5) label is incorrect.");
|
|
ok(vs.containsLabel("random/x/script.js"),
|
|
"Script (6) label is incorrect.");
|
|
ok(vs.containsLabel("script.js?a=1"),
|
|
"Script (7) label is incorrect.");
|
|
|
|
ok(vs.containsLabel("script_t1.js"),
|
|
"Script (8) label is incorrect.");
|
|
ok(vs.containsLabel("script_t2_1.js"),
|
|
"Script (9) label is incorrect.");
|
|
ok(vs.containsLabel("script_t2_2.js"),
|
|
"Script (10) label is incorrect.");
|
|
ok(vs.containsLabel("script_t2_3.js"),
|
|
"Script (11) label is incorrect.");
|
|
ok(vs.containsLabel("script_t3_1.js"),
|
|
"Script (12) label is incorrect.");
|
|
ok(vs.containsLabel("script_t3_2.js"),
|
|
"Script (13) label is incorrect.");
|
|
ok(vs.containsLabel("script_t3_3.js"),
|
|
"Script (14) label is incorrect.");
|
|
|
|
ok(vs.containsLabel(nanana + "Batman!" + ellipsis),
|
|
"Script (15) label is incorrect.");
|
|
|
|
is(vs._container.itemCount, urls.filter(function(url) !url.dupe).length,
|
|
"Didn't get the correct number of scripts in the list.");
|
|
|
|
is(vs.getItemByValue("http://some.address.com/random/subrandom/").label, "random/subrandom/",
|
|
"Scripts.getItemByValue isn't functioning properly (0).");
|
|
is(vs.getItemByValue("http://some.address.com/random/suprandom/?a=1").label, "random/suprandom/?a=1",
|
|
"Scripts.getItemByValue isn't functioning properly (1).");
|
|
|
|
is(vs.getItemByLabel("random/subrandom/").value, "http://some.address.com/random/subrandom/",
|
|
"Scripts.getItemByLabel isn't functioning properly (0).");
|
|
is(vs.getItemByLabel("random/suprandom/?a=1").value, "http://some.address.com/random/suprandom/?a=1",
|
|
"Scripts.getItemByLabel isn't functioning properly (1).");
|
|
|
|
|
|
closeDebuggerAndFinish();
|
|
});
|
|
});
|
|
}
|
|
|
|
registerCleanupFunction(function() {
|
|
removeTab(gTab);
|
|
gPane = null;
|
|
gTab = null;
|
|
gDebuggee = null;
|
|
gDebugger = null;
|
|
});
|