Bug 1301094 - part 3 - Test for Blob+XHR+FormData+Workers, r=smaug

This commit is contained in:
Andrea Marchesini 2016-09-12 12:19:01 +02:00
parent 513886ee03
commit 500a217925
4 changed files with 98 additions and 0 deletions

View File

@ -103,6 +103,8 @@ support-files =
importScripts_3rdParty_worker.js
worker_bug1278777.js
worker_setTimeoutWith0.js
worker_bug1301094.js
script_bug1301094.js
!/dom/base/test/file_websocket_basic_wsh.py
!/dom/base/test/file_websocket_hello_wsh.py
!/dom/base/test/file_websocket_http_resource.txt
@ -227,3 +229,4 @@ skip-if = buildapp == 'b2g' || toolkit == 'android' #bug 982828
[test_navigator_workers_hardwareConcurrency.html]
[test_bug1278777.html]
[test_setTimeoutWith0.html]
[test_bug1301094.html]

View File

@ -0,0 +1,15 @@
var { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.importGlobalProperties(["File", "Directory"]);
addMessageListener("file.open", function (e) {
var tmpFile = Cc["@mozilla.org/file/directory_service;1"]
.getService(Ci.nsIDirectoryService)
.QueryInterface(Ci.nsIProperties)
.get('TmpD', Ci.nsIFile)
tmpFile.append('file.txt');
tmpFile.createUnique(Components.interfaces.nsIFile.FILE_TYPE, 0o600);
sendAsyncMessage("file.opened", {
data: new File(tmpFile)
});
});

View File

@ -0,0 +1,69 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1301094
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 1301094</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1301094">Mozilla Bug 1301094</a>
<input id="file" type="file"></input>
<script type="application/javascript">
SimpleTest.waitForExplicitFinish();
var url = SimpleTest.getTestFileURL("script_bug1301094.js");
script = SpecialPowers.loadChromeScript(url);
var mainThreadOk, workerOk;
function maybeFinish() {
if (mainThreadOk & workerOk) {
SimpleTest.finish();
}
}
function onOpened(message) {
var input = document.getElementById('file');
SpecialPowers.wrap(input).mozSetDndFilesAndDirectories([message.data]);
var worker = new Worker('worker_bug1301094.js');
worker.onerror = function() {
ok(false, "We should not see any error.");
SimpleTest.finish();
}
worker.onmessage = function(e) {
ok(e.data, "Everything seems OK on the worker-side.");
workerOk = true;
maybeFinish();
}
is(input.files.length, 1, "We have something");
ok(input.files[0] instanceof Blob, "We have one Blob");
worker.postMessage(input.files[0]);
var xhr = new XMLHttpRequest();
xhr.open("POST", 'worker_bug1301094.js', false);
xhr.onload = function() {
ok(xhr.responseText, "Everything seems OK on the main-thread-side.");
mainThreadOk = true;
maybeFinish();
};
var fd = new FormData();
fd.append('file', input.files[0]);
xhr.send(fd);
}
script.addMessageListener("file.opened", onOpened);
script.sendAsyncMessage("file.open");
</script>
</body>
</html>

View File

@ -0,0 +1,11 @@
onmessage = function(e) {
var xhr = new XMLHttpRequest();
xhr.open("POST", 'worker_bug1301094.js', false);
xhr.onload = function() {
self.postMessage("OK");
};
var fd = new FormData();
fd.append('file', e.data);
xhr.send(fd);
}