diff options
Diffstat (limited to 'browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js')
-rw-r--r-- | browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js b/browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js new file mode 100644 index 000000000..e9ba8d989 --- /dev/null +++ b/browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js @@ -0,0 +1,49 @@ +function test() { + waitForExplicitFinish(); + testNext(); +} + +var pairs = [ + ["javascript:", ""], + ["javascript:1+1", "1+1"], + ["javascript:document.domain", "document.domain"], + ["data:text/html,<body>hi</body>", "data:text/html,<body>hi</body>"], + // Nested things get confusing because some things don't parse as URIs: + ["javascript:javascript:alert('hi!')", "alert('hi!')"], + ["data:data:text/html,<body>hi</body>", "data:data:text/html,<body>hi</body>"], + ["javascript:data:javascript:alert('hi!')", "data:javascript:alert('hi!')"], + ["javascript:data:text/html,javascript:alert('hi!')", "data:text/html,javascript:alert('hi!')"], + ["data:data:text/html,javascript:alert('hi!')", "data:data:text/html,javascript:alert('hi!')"], +]; + +var clipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper); + +function paste(input, cb) { + waitForClipboard(input, function() { + clipboardHelper.copyString(input); + }, function() { + document.commandDispatcher.getControllerForCommand("cmd_paste").doCommand("cmd_paste"); + cb(); + }, function() { + ok(false, "Failed to copy string '" + input + "' to clipboard"); + cb(); + }); +} + +function testNext() { + gURLBar.value = ''; + if (!pairs.length) { + finish(); + return; + } + + let [inputValue, expectedURL] = pairs.shift(); + + gURLBar.focus(); + paste(inputValue, function() { + is(gURLBar.textValue, expectedURL, "entering '" + inputValue + "' strips relevant bits."); + + setTimeout(testNext, 0); + }); +} + |