| 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 |