| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 (function(global, binding, v8) { | 5 (function(global, binding, v8) { |
| 6 'use strict'; | 6 'use strict'; |
| 7 | 7 |
| 8 const _reader = v8.createPrivateSymbol('[[reader]]'); | 8 const _reader = v8.createPrivateSymbol('[[reader]]'); |
| 9 const _storedError = v8.createPrivateSymbol('[[storedError]]'); | 9 const _storedError = v8.createPrivateSymbol('[[storedError]]'); |
| 10 const _controller = v8.createPrivateSymbol('[[controller]]'); | 10 const _controller = v8.createPrivateSymbol('[[controller]]'); |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 | 499 |
| 500 if (IsReadableStreamDefaultReader(reader) === true) { | 500 if (IsReadableStreamDefaultReader(reader) === true) { |
| 501 const readRequests = reader[_readRequests]; | 501 const readRequests = reader[_readRequests]; |
| 502 for (let i = 0; i < readRequests.length; i++) { | 502 for (let i = 0; i < readRequests.length; i++) { |
| 503 v8.rejectPromise(readRequests[i], e); | 503 v8.rejectPromise(readRequests[i], e); |
| 504 } | 504 } |
| 505 reader[_readRequests] = new v8.InternalPackedArray(); | 505 reader[_readRequests] = new v8.InternalPackedArray(); |
| 506 } | 506 } |
| 507 | 507 |
| 508 v8.rejectPromise(reader[_closedPromise], e); | 508 v8.rejectPromise(reader[_closedPromise], e); |
| 509 v8.markPromiseAsHandled(reader[_closedPromise]); |
| 509 } | 510 } |
| 510 | 511 |
| 511 function ReadableStreamClose(stream) { | 512 function ReadableStreamClose(stream) { |
| 512 ReadableStreamSetState(stream, STATE_CLOSED); | 513 ReadableStreamSetState(stream, STATE_CLOSED); |
| 513 | 514 |
| 514 const reader = stream[_reader]; | 515 const reader = stream[_reader]; |
| 515 if (reader === undefined) { | 516 if (reader === undefined) { |
| 516 return undefined; | 517 return undefined; |
| 517 } | 518 } |
| 518 | 519 |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 581 | 582 |
| 582 switch (ReadableStreamGetState(stream)) { | 583 switch (ReadableStreamGetState(stream)) { |
| 583 case STATE_READABLE: | 584 case STATE_READABLE: |
| 584 reader[_closedPromise] = v8.createPromise(); | 585 reader[_closedPromise] = v8.createPromise(); |
| 585 break; | 586 break; |
| 586 case STATE_CLOSED: | 587 case STATE_CLOSED: |
| 587 reader[_closedPromise] = Promise_resolve(undefined); | 588 reader[_closedPromise] = Promise_resolve(undefined); |
| 588 break; | 589 break; |
| 589 case STATE_ERRORED: | 590 case STATE_ERRORED: |
| 590 reader[_closedPromise] = Promise_reject(stream[_storedError]); | 591 reader[_closedPromise] = Promise_reject(stream[_storedError]); |
| 591 break; | 592 v8.markPromiseAsHandled(reader[_closedPromise]); |
| 593 break; |
| 592 } | 594 } |
| 593 } | 595 } |
| 594 | 596 |
| 595 function ReadableStreamReaderGenericRelease(reader) { | 597 function ReadableStreamReaderGenericRelease(reader) { |
| 596 // TODO(yhirano): Remove this when we don't need hasPendingActivity in | 598 // TODO(yhirano): Remove this when we don't need hasPendingActivity in |
| 597 // blink::UnderlyingSourceBase. | 599 // blink::UnderlyingSourceBase. |
| 598 const controller = reader[_ownerReadableStream][_controller]; | 600 const controller = reader[_ownerReadableStream][_controller]; |
| 599 if (controller[_readableStreamDefaultControllerBits] & EXTERNALLY_CONTROLLED
) { | 601 if (controller[_readableStreamDefaultControllerBits] & EXTERNALLY_CONTROLLED
) { |
| 600 // The stream is created with an external controller (i.e. made in | 602 // The stream is created with an external controller (i.e. made in |
| 601 // Blink). | 603 // Blink). |
| 602 const underlyingSource = controller[_underlyingSource]; | 604 const underlyingSource = controller[_underlyingSource]; |
| 603 callFunction(underlyingSource.notifyLockReleased, underlyingSource); | 605 callFunction(underlyingSource.notifyLockReleased, underlyingSource); |
| 604 } | 606 } |
| 605 | 607 |
| 606 if (ReadableStreamGetState(reader[_ownerReadableStream]) === STATE_READABLE)
{ | 608 if (ReadableStreamGetState(reader[_ownerReadableStream]) === STATE_READABLE)
{ |
| 607 v8.rejectPromise(reader[_closedPromise], new TypeError(errReleasedReaderCl
osedPromise)); | 609 v8.rejectPromise(reader[_closedPromise], new TypeError(errReleasedReaderCl
osedPromise)); |
| 608 } else { | 610 } else { |
| 609 reader[_closedPromise] = Promise_reject(new TypeError(errReleasedReaderClo
sedPromise)); | 611 reader[_closedPromise] = Promise_reject(new TypeError(errReleasedReaderClo
sedPromise)); |
| 610 } | 612 } |
| 613 v8.markPromiseAsHandled(reader[_closedPromise]); |
| 611 | 614 |
| 612 reader[_ownerReadableStream][_reader] = undefined; | 615 reader[_ownerReadableStream][_reader] = undefined; |
| 613 reader[_ownerReadableStream] = undefined; | 616 reader[_ownerReadableStream] = undefined; |
| 614 } | 617 } |
| 615 | 618 |
| 616 function ReadableStreamDefaultReaderRead(reader) { | 619 function ReadableStreamDefaultReaderRead(reader) { |
| 617 const stream = reader[_ownerReadableStream]; | 620 const stream = reader[_ownerReadableStream]; |
| 618 stream[_readableStreamBits] |= DISTURBED; | 621 stream[_readableStreamBits] |= DISTURBED; |
| 619 | 622 |
| 620 if (ReadableStreamGetState(stream) === STATE_CLOSED) { | 623 if (ReadableStreamGetState(stream) === STATE_CLOSED) { |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 902 binding.ReadableStreamDefaultControllerGetDesiredSize = ReadableStreamDefaultC
ontrollerGetDesiredSize; | 905 binding.ReadableStreamDefaultControllerGetDesiredSize = ReadableStreamDefaultC
ontrollerGetDesiredSize; |
| 903 binding.ReadableStreamDefaultControllerEnqueue = ReadableStreamDefaultControll
erEnqueue; | 906 binding.ReadableStreamDefaultControllerEnqueue = ReadableStreamDefaultControll
erEnqueue; |
| 904 binding.ReadableStreamDefaultControllerError = ReadableStreamDefaultController
Error; | 907 binding.ReadableStreamDefaultControllerError = ReadableStreamDefaultController
Error; |
| 905 | 908 |
| 906 binding.createReadableStreamWithExternalController = | 909 binding.createReadableStreamWithExternalController = |
| 907 (underlyingSource, strategy) => { | 910 (underlyingSource, strategy) => { |
| 908 return new ReadableStream( | 911 return new ReadableStream( |
| 909 underlyingSource, strategy, createWithExternalControllerSentinel); | 912 underlyingSource, strategy, createWithExternalControllerSentinel); |
| 910 }; | 913 }; |
| 911 }); | 914 }); |
| OLD | NEW |