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

Side by Side Diff: third_party/WebKit/Source/core/streams/ReadableStream.js

Issue 2588983002: Mark readable stream closed promise as handled (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698