OLD | NEW |
| (Empty) |
1 'use strict'; | |
2 | |
3 if (self.importScripts) { | |
4 self.importScripts('/resources/testharness.js'); | |
5 } | |
6 | |
7 function fakeWritableStreamDefaultWriter() { | |
8 return { | |
9 get closed() { return Promise.resolve(); }, | |
10 get desiredSize() { return 1; }, | |
11 get ready() { return Promise.resolve(); }, | |
12 abort() { return Promise.resolve(); }, | |
13 close() { return Promise.resolve(); }, | |
14 write() { return Promise.resolve(); } | |
15 }; | |
16 } | |
17 | |
18 function realReadableStreamDefaultWriter() { | |
19 const rs = new ReadableStream(); | |
20 return rs.getReader(); | |
21 } | |
22 | |
23 function getterRejects(t, obj, getterName, target) { | |
24 const getter = Object.getOwnPropertyDescriptor(obj, getterName).get; | |
25 | |
26 return promise_rejects(t, new TypeError(), getter.call(target), | |
27 getterName + ' should reject with a TypeError'); | |
28 } | |
29 | |
30 function methodRejects(t, obj, methodName, target) { | |
31 const method = obj[methodName]; | |
32 | |
33 return promise_rejects(t, new TypeError(), method.call(target), | |
34 methodName + ' should reject with a TypeError'); | |
35 } | |
36 | |
37 function getterThrows(obj, getterName, target) { | |
38 const getter = Object.getOwnPropertyDescriptor(obj, getterName).get; | |
39 | |
40 assert_throws(new TypeError(), () => getter.call(target), getterName + ' shoul
d throw a TypeError'); | |
41 } | |
42 | |
43 const ws = new WritableStream(); | |
44 const writer = ws.getWriter(); | |
45 const WritableStreamDefaultWriter = writer.constructor; | |
46 const WriterProto = WritableStreamDefaultWriter.prototype; | |
47 | |
48 test(() => { | |
49 getterThrows(WriterProto, 'desiredSize', fakeWritableStreamDefaultWriter()); | |
50 getterThrows(WriterProto, 'desiredSize', realReadableStreamDefaultWriter()); | |
51 }, 'WritableStreamDefaultWriter.prototype.desiredSize enforces a brand check'); | |
52 | |
53 promise_test(t => { | |
54 return Promise.all([getterRejects(t, WriterProto, 'closed', fakeWritableStream
DefaultWriter()), | |
55 getterRejects(t, WriterProto, 'closed', realReadableStreamDefaultWriter())])
; | |
56 }, 'WritableStreamDefaultWriter.prototype.closed enforces a brand check'); | |
57 | |
58 promise_test(t => { | |
59 return Promise.all([getterRejects(t, WriterProto, 'ready', fakeWritableStreamD
efaultWriter()), | |
60 getterRejects(t, WriterProto, 'ready', realReadableStreamDefaultWriter())]); | |
61 }, 'WritableStreamDefaultWriter.prototype.ready enforces a brand check'); | |
62 | |
63 test(t => { | |
64 return Promise.all([methodRejects(t, WriterProto, 'abort', fakeWritableStreamD
efaultWriter()), | |
65 methodRejects(t, WriterProto, 'abort', realReadableStreamDefaultWriter())]); | |
66 | |
67 }, 'WritableStreamDefaultWriter.prototype.abort enforces a brand check'); | |
68 | |
69 promise_test(t => { | |
70 return Promise.all([methodRejects(t, WriterProto, 'write', fakeWritableStreamD
efaultWriter()), | |
71 methodRejects(t, WriterProto, 'write', realReadableStreamDefaultWriter())]); | |
72 }, 'WritableStreamDefaultWriter.prototype.write enforces a brand check'); | |
73 | |
74 promise_test(t => { | |
75 return Promise.all([methodRejects(t, WriterProto, 'close', fakeWritableStreamD
efaultWriter()), | |
76 methodRejects(t, WriterProto, 'close', realReadableStreamDefaultWriter())]); | |
77 }, 'WritableStreamDefaultWriter.prototype.close enforces a brand check'); | |
78 | |
79 done(); | |
OLD | NEW |