Bug 1257481 - move browserDrop.js tests into test_browser_drop.xul, r=enndeakin

MozReview-Commit-ID: AyWry0UjYMD

--HG--
extra : rebase_source : dd57c0b50913202f66dc74ab0466098e2aa51008
extra : amend_source : 5ba216f9d22e35618baa2bf7328809976fb496df
This commit is contained in:
Gijs Kruitbosch 2016-03-22 21:04:37 +00:00
Родитель b6734a035a
Коммит b0af50a12a
3 изменённых файлов: 24 добавлений и 71 удалений

Просмотреть файл

@ -4,8 +4,6 @@ support-files =
file_contentTitle.html
audio.ogg
[browser_autoscroll_disabled.js]
[browser_browserDrop.js]
skip-if = buildapp == 'mulet' || e10s # Relies on drop to be handled in the parent process
[browser_bug295977_autoscroll_overflow.js]
[browser_bug594509.js]
[browser_bug982298.js]
@ -48,4 +46,4 @@ skip-if = buildapp == 'mulet' || buildapp == 'b2g'
[browser_saveImageURL.js]
support-files =
image.jpg
image_page.html
image_page.html

Просмотреть файл

@ -1,61 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
function test() {
waitForExplicitFinish();
let newTab = gBrowser.selectedTab = gBrowser.addTab();
registerCleanupFunction(function () {
gBrowser.removeTab(newTab);
});
let scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
getService(Ci.mozIJSSubScriptLoader);
let ChromeUtils = {};
scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils);
let browser = gBrowser.selectedBrowser;
var linkHandlerActivated = 0;
// Don't worry about clobbering the droppedLinkHandler, since we're closing
// this tab after the test anyways
browser.droppedLinkHandler = function dlh(e, url, name) {
linkHandlerActivated++;
ok(!/(javascript|data)/i.test(url), "javascript link should not be dropped");
}
var receivedDropCount = 0;
function dropListener() {
receivedDropCount++;
if (receivedDropCount == triggeredDropCount) {
// Wait for the browser's system-phase event handler to run.
executeSoon(function () {
is(linkHandlerActivated, validDropCount,
"link handler was called correct number of times");
finish();
})
}
}
browser.addEventListener("drop", dropListener, false);
registerCleanupFunction(function () {
browser.removeEventListener("drop", dropListener, false);
});
var triggeredDropCount = 0;
var validDropCount = 0;
function drop(text, valid) {
triggeredDropCount++;
if (valid)
validDropCount++;
executeSoon(function () {
ChromeUtils.synthesizeDrop(browser, browser, [[{type: "text/plain", data: text}]], "copy", window);
});
}
drop("mochi.test/first", true);
drop("javascript:'bad'");
drop("jAvascript:'also bad'");
drop("mochi.test/second", true);
drop("data:text/html,bad");
drop("mochi.test/third", true);
}

Просмотреть файл

@ -14,7 +14,6 @@
<script>
<![CDATA[
let lastLink, lastLinkName;
Components.utils.import("resource://testing-common/ContentTask.jsm");
function doDropAndStopLoad(browser, data, shouldExpectStateChange) {
@ -76,13 +75,23 @@ function doDropAndStopLoad(browser, data, shouldExpectStateChange) {
}
function expectLink(browser, expectedLink, expectedName, data, testid, onbody=false) {
let lastLink = "";
let lastLinkName = "";
function dropOnBrowserSync() {
browser.droppedLinkHandler = function(event, link, linkname) {
info(`droppedLinkHandler called, received link ${link} and linkname ${linkname}`);
if (!expectedLink && !expectedName) {
ok(false, "droppedLinkHandler called for URI " + link + " which we didn't expect.");
}
lastLink = link;
lastLinkName = linkname;
};
let dropEl = onbody ? browser.contentDocument.body : browser;
synthesizeDrop(dropEl, dropEl, data, "", dropEl.ownerDocument.defaultView);
return Promise.resolve([lastLink, lastLinkName]);
}
let dropInfoReceived;
lastLink = lastLinkName = "";
if (browser.isRemoteBrowser) {
dropInfoReceived = doDropAndStopLoad(browser, data[0][0], !!expectedLink);
} else {
@ -95,11 +104,6 @@ function expectLink(browser, expectedLink, expectedName, data, testid, onbody=fa
}
function* dropLinksOnBrowser(browser, type) {
browser.droppedLinkHandler = function(event, link, linkname) {
info(`droppedLinkHandler called, received link ${link} and linkname ${linkname}`);
lastLink = link;
lastLinkName = linkname;
};
yield expectLink(browser, "http://www.mozilla.org/", "http://www.mozilla.org/",
[ [ { type: "text/plain", data: "http://www.mozilla.org/" } ] ],
"text/plain drop on browser " + type);
@ -112,6 +116,18 @@ function* dropLinksOnBrowser(browser, type) {
yield expectLink(browser, "http://www.example.com/", "Example.com",
[ [ { type: "text/x-moz-url", data: "http://www.example.com/\nExample.com" } ] ],
"text/x-moz-url drop on browser " + type);
// Dropping javascript or data: URLs should fail:
yield expectLink(browser, "", "",
[ [ { type: "text/plain", data: "javascript:'bad'" } ] ],
"text/plain javascript url drop on browser " + type);
yield expectLink(browser, "", "",
[ [ { type: "text/plain", data: "jAvascript:'also bad'" } ] ],
"text/plain mixed-case javascript url drop on browser " + type);
yield expectLink(browser, "", "",
[ [ { type: "text/plain", data: "data:text/html,bad" } ] ],
"text/plain data url drop on browser " + type);
// dropping a chrome url should fail as we don't have a source node set,
// defaulting to a source of file:///
yield expectLink(browser, "", "",