gecko/content/base/test/websocket_hybi/test_send-blob.html

101 lines
2.6 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<p id="display">
<input id="fileList" type="file"></input>
</p>
<div id="content" style="display: none">
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
function startsWith(target, prefix)
{
return target.indexOf(prefix) === 0;
}
function createDOMFile(fileName, fileData)
{
// enablePrivilege is picky about where it's called? if I put it in global
// scope at start of <script> it doesn't work...
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
// create File in profile dir
var dirSvc = Components.classes["@mozilla.org/file/directory_service;1"]
.getService(Components.interfaces.nsIProperties);
var testFile = dirSvc.get("ProfD", Components.interfaces.nsIFile);
testFile.append(fileName);
var outStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
.createInstance(Components.interfaces.nsIFileOutputStream);
outStream.init(testFile, 0x02 | 0x08 | 0x20, 0666, 0);
if (fileData) {
outStream.write(fileData, fileData.length);
outStream.close();
}
// Set filename into DOM <input> field, as if selected by user
var fileList = document.getElementById('fileList');
fileList.value = testFile.path;
// return JS File object, aka Blob
return fileList.files[0];
}
function createBlobContainingHelloWorld()
{
return createDOMFile("hellofile", "Hello, world!");
}
function createEmptyBlob()
{
return createDOMFile("emptyfile");
}
function createBlobContainingAllDistinctBytes()
{
var array = new Array();
for (var i = 0; i < 256; ++i)
array[i] = i;
// Concatenates chars into a single binary string
binaryString = String.fromCharCode.apply(null, array);
return createDOMFile("allchars", binaryString);
}
var ws = new WebSocket("ws://mochi.test:8888/tests/content/base/test/websocket_hybi/file_check-binary-messages");
var closeEvent;
ws.onopen = function()
{
ws.send(createBlobContainingHelloWorld());
ws.send(createEmptyBlob());
ws.send(createBlobContainingAllDistinctBytes());
};
ws.onmessage = function(event)
{
var message = event.data;
if (startsWith(message, "PASS"))
ok(true, message);
else
ok(false, message);
};
ws.onclose = function(event)
{
ok(event.wasClean, "should have closed cleanly");
SimpleTest.finish();
};
SimpleTest.waitForExplicitFinish();
</script>
</body>
</html>