1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/workers/test/test_transferable.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,123 @@ 1.4 +<!-- 1.5 + Any copyright is dedicated to the Public Domain. 1.6 + http://creativecommons.org/publicdomain/zero/1.0/ 1.7 +--> 1.8 +<!DOCTYPE HTML> 1.9 +<html> 1.10 +<!-- 1.11 +Tests of DOM Worker transferable objects 1.12 +--> 1.13 +<head> 1.14 + <title>Test for DOM Worker transferable objects</title> 1.15 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.16 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> 1.17 +</head> 1.18 +<body> 1.19 +<p id="display"></p> 1.20 +<div id="content" style="display: none"> 1.21 + 1.22 +</div> 1.23 +<pre id="test"> 1.24 +<script class="testbody" language="javascript"> 1.25 + 1.26 + function test1(sizes) { 1.27 + if (!sizes.length) { 1.28 + runTests(); 1.29 + return; 1.30 + } 1.31 + 1.32 + var size = sizes.pop(); 1.33 + 1.34 + var worker = new Worker("transferable_worker.js"); 1.35 + worker.onmessage = function(event) { 1.36 + ok(event.data.status, event.data.event); 1.37 + if (!event.data.status) { 1.38 + runTests(); 1.39 + return; 1.40 + } 1.41 + 1.42 + if ("notEmpty" in event.data && "byteLength" in event.data.notEmpty) { 1.43 + ok(event.data.notEmpty.byteLength != 0, 1.44 + "P: NotEmpty object received: " + event.data.notEmpty.byteLength); 1.45 + } 1.46 + 1.47 + if (!event.data.last) 1.48 + return; 1.49 + 1.50 + test1(sizes); 1.51 + } 1.52 + worker.onerror = function(event) { 1.53 + ok(false, "No errors!"); 1.54 + } 1.55 + 1.56 + try { 1.57 + worker.postMessage(42, true); 1.58 + ok(false, "P: PostMessage - Exception for wrong type"); 1.59 + } catch(e) { 1.60 + ok(true, "P: PostMessage - Exception for wrong type"); 1.61 + } 1.62 + 1.63 + try { 1.64 + ab = new ArrayBuffer(size); 1.65 + worker.postMessage(42,[ab, ab]); 1.66 + ok(false, "P: PostMessage - Exception for duplicate"); 1.67 + } catch(e) { 1.68 + ok(true, "P: PostMessage - Exception for duplicate"); 1.69 + } 1.70 + 1.71 + var ab = new ArrayBuffer(size); 1.72 + ok(ab.byteLength == size, "P: The size is: " + size + " == " + ab.byteLength); 1.73 + worker.postMessage({ data: 0, timeout: 0, ab: ab, cb: ab, size: size }, [ab]); 1.74 + ok(ab.byteLength == 0, "P: PostMessage - The size is: 0 == " + ab.byteLength) 1.75 + } 1.76 + 1.77 + function test2() { 1.78 + var worker = new Worker("transferable_worker.js"); 1.79 + worker.onmessage = function(event) { 1.80 + ok(event.data.status, event.data.event); 1.81 + if (!event.data.status) { 1.82 + runTests(); 1.83 + return; 1.84 + } 1.85 + 1.86 + if ("notEmpty" in event.data && "byteLength" in event.data.notEmpty) { 1.87 + ok(event.data.notEmpty.byteLength != 0, 1.88 + "P: NotEmpty object received: " + event.data.notEmpty.byteLength); 1.89 + } 1.90 + 1.91 + if (event.data.last) { 1.92 + runTests(); 1.93 + } 1.94 + } 1.95 + worker.onerror = function(event) { 1.96 + ok(false, "No errors!"); 1.97 + } 1.98 + 1.99 + var f = new Float32Array([0,1,2,3]); 1.100 + ok(f.byteLength != 0, "P: The size is: " + f.byteLength + " is not 0"); 1.101 + worker.postMessage({ event: "P: postMessage with Float32Array", status: true, 1.102 + size: 4, notEmpty: f, bc: [ f, f, { dd: f } ] }, [f.buffer]); 1.103 + ok(f.byteLength == 0, "P: The size is: " + f.byteLength + " is 0"); 1.104 + } 1.105 + 1.106 + var tests = [ 1.107 + function() { test1([1024 * 1024 * 32, 128, 4]); }, 1.108 + test2 1.109 + ]; 1.110 + function runTests() { 1.111 + if (!tests.length) { 1.112 + SimpleTest.finish(); 1.113 + return; 1.114 + } 1.115 + 1.116 + var test = tests.shift(); 1.117 + test(); 1.118 + } 1.119 + 1.120 + SimpleTest.waitForExplicitFinish(); 1.121 + runTests(); 1.122 + 1.123 +</script> 1.124 +</pre> 1.125 +</body> 1.126 +</html>