Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: third_party/WebKit/LayoutTests/fast/workers/resources/worker-sharedarraybuffer-transfer.js

Issue 2615803002: Disallow SharedArrayBuffer in postMessage transfer list (Closed)
Patch Set: remove exceptionState Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 function verifyArray(ta, length) { 1 function verifyArray(ta, length) {
2 var i;
2 for (i = 0; i < length; ++i) { 3 for (i = 0; i < length; ++i) {
3 if (ta[i] != i) { 4 if (ta[i] != i) {
4 postMessage("FAIL: Transferred data is incorrect. Expected " + 5 postMessage("FAIL: Transferred data is incorrect. Expected " +
5 i + " got " + ta[i]); 6 i + " got " + ta[i]);
6 return; 7 return;
7 } 8 }
8 } 9 }
9 postMessage("PASS: Transferred data is OK."); 10 postMessage("PASS: Transferred data is OK.");
10 } 11 }
11 12
12 function verifyArrayType(ta, name) { 13 function verifyArrayType(ta, name) {
13 var className = Object.prototype.toString.call(ta); 14 var className = Object.prototype.toString.call(ta);
14 if (className.indexOf(name) != -1) 15 if (className.indexOf(name) != -1)
15 postMessage("PASS: Transferred array type is OK."); 16 postMessage("PASS: Transferred array type is OK.");
16 else 17 else
17 postMessage("FAIL: Expected array type " + name + " got " + className); 18 postMessage("FAIL: Expected array type " + name + " got " + className);
18 } 19 }
19 20
20 self.addEventListener('message', function(e) { 21 self.addEventListener('message', function(e) {
21 var i; 22 var ab;
22 var sab; 23 var sab;
24 var sab2;
23 var ta; 25 var ta;
24 26
25 switch (e.data.name) { 27 switch (e.data.name) {
26 case 'SharedArrayBuffer': 28 case 'SharedArrayBuffer':
27 sab = e.data.data; 29 sab = e.data.data;
28 ta = new Uint8Array(sab); 30 ta = new Uint8Array(sab);
29 verifyArray(ta, e.data.length); 31 verifyArray(ta, e.data.length);
30 break; 32 break;
31 33
32 case 'Int8Array': 34 case 'Int8Array':
33 case 'Uint8Array': 35 case 'Uint8Array':
34 case 'Uint8ClampedArray': 36 case 'Uint8ClampedArray':
35 case 'Int16Array': 37 case 'Int16Array':
36 case 'Uint16Array': 38 case 'Uint16Array':
37 case 'Int32Array': 39 case 'Int32Array':
38 case 'Uint32Array': 40 case 'Uint32Array':
39 case 'Float32Array': 41 case 'Float32Array':
40 case 'Float64Array': 42 case 'Float64Array':
41 ta = e.data.data; 43 ta = e.data.data;
42 verifyArrayType(ta, e.data.name); 44 verifyArrayType(ta, e.data.name);
43 verifyArray(ta, e.data.length); 45 verifyArray(ta, e.data.length);
44 break; 46 break;
45 47
48 case 'ArrayBufferAndSharedArrayBuffer':
49 ab = e.data.ab;
50 sab = e.data.sab;
51 verifyArray(new Uint8Array(ab), e.data.abByteLength);
52 verifyArray(new Uint8Array(sab), e.data.sabByteLength);
53 break;
54
55 case 'SharedArrayBufferTwice':
56 sab = e.data.sab;
57 sab2 = e.data.sab2;
58 if (sab !== sab2) {
59 postMessage('FAIL: Expected two SharedArrayBuffers to be equal.' );
60 }
61 verifyArray(new Uint8Array(sab), e.data.sabByteLength);
62 break;
63
46 default: 64 default:
47 postMessage("ERROR: unknown command " + e.data.name); 65 postMessage("ERROR: unknown command " + e.data.name);
48 break; 66 break;
49 } 67 }
50 postMessage("DONE"); 68 postMessage("DONE");
51 }); 69 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698