Chromium Code Reviews| 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 readableStreamController = v8.createPrivateSymbol('[[controller]]'); | 8 const readableStreamController = v8.createPrivateSymbol('[[controller]]'); |
| 9 const readableStreamQueue = v8.createPrivateSymbol('[[queue]]'); | 9 const readableStreamQueue = v8.createPrivateSymbol('[[queue]]'); |
| 10 const readableStreamQueueSize = | 10 const readableStreamQueueSize = |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 269 | 269 |
| 270 class ReadableStreamReader { | 270 class ReadableStreamReader { |
| 271 constructor(stream) { | 271 constructor(stream) { |
| 272 if (IsReadableStream(stream) === false) { | 272 if (IsReadableStream(stream) === false) { |
| 273 throw new TypeError(errReaderConstructorBadArgument); | 273 throw new TypeError(errReaderConstructorBadArgument); |
| 274 } | 274 } |
| 275 if (IsReadableStreamLocked(stream) === true) { | 275 if (IsReadableStreamLocked(stream) === true) { |
| 276 throw new TypeError(errReaderConstructorStreamAlreadyLocked); | 276 throw new TypeError(errReaderConstructorStreamAlreadyLocked); |
| 277 } | 277 } |
| 278 | 278 |
| 279 // TODO(yhirano): Remove this when we don't need hasPendingActivity in | |
| 280 // blink::UnderlyingSourceBase. | |
| 281 if (stream[readableStreamController] === null) { | |
| 282 // The stream is created with an external controller (i.e. made in | |
| 283 // Blink). | |
| 284 CallOrNoop( | |
|
domenic
2016/04/20 20:38:04
Should be `const underlyingSource = stream[readabl
yhirano
2016/04/21 01:50:50
Done.
| |
| 285 stream[readableStreamUnderlyingSource], | |
| 286 'notifyLockAcquired', | |
| 287 'underlyingSource.notifyLockAcquired'); | |
| 288 } | |
| 289 | |
| 279 this[readableStreamReaderOwnerReadableStream] = stream; | 290 this[readableStreamReaderOwnerReadableStream] = stream; |
| 280 stream[readableStreamReader] = this; | 291 stream[readableStreamReader] = this; |
| 281 | 292 |
| 282 this[readableStreamReaderReadRequests] = new v8.InternalPackedArray(); | 293 this[readableStreamReaderReadRequests] = new v8.InternalPackedArray(); |
| 283 | 294 |
| 284 switch (stream[readableStreamState]) { | 295 switch (stream[readableStreamState]) { |
| 285 case STATE_READABLE: | 296 case STATE_READABLE: |
| 286 this[readableStreamReaderClosedPromise] = v8.createPromise(); | 297 this[readableStreamReaderClosedPromise] = v8.createPromise(); |
| 287 break; | 298 break; |
| 288 case STATE_CLOSED: | 299 case STATE_CLOSED: |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 335 | 346 |
| 336 const stream = this[readableStreamReaderOwnerReadableStream]; | 347 const stream = this[readableStreamReaderOwnerReadableStream]; |
| 337 if (stream === undefined) { | 348 if (stream === undefined) { |
| 338 return undefined; | 349 return undefined; |
| 339 } | 350 } |
| 340 | 351 |
| 341 if (this[readableStreamReaderReadRequests].length > 0) { | 352 if (this[readableStreamReaderReadRequests].length > 0) { |
| 342 throw new TypeError(errReleaseReaderWithPendingRead); | 353 throw new TypeError(errReleaseReaderWithPendingRead); |
| 343 } | 354 } |
| 344 | 355 |
| 356 // TODO(yhirano): Remove this when we don't need hasPendingActivity in | |
| 357 // blink::UnderlyingSourceBase. | |
| 358 if (stream[readableStreamController] === null) { | |
| 359 // The stream is created with an external controller (i.e. made in | |
| 360 // Blink). | |
| 361 CallOrNoop( | |
| 362 stream[readableStreamUnderlyingSource], | |
| 363 'notifyLockReleased', | |
| 364 'underlyingSource.notifyLockReleased'); | |
| 365 } | |
| 366 | |
| 345 if (stream[readableStreamState] === STATE_READABLE) { | 367 if (stream[readableStreamState] === STATE_READABLE) { |
| 346 v8.rejectPromise(this[readableStreamReaderClosedPromise], | 368 v8.rejectPromise(this[readableStreamReaderClosedPromise], |
| 347 new TypeError(errReleasedReaderClosedPromise)); | 369 new TypeError(errReleasedReaderClosedPromise)); |
| 348 } else { | 370 } else { |
| 349 this[readableStreamReaderClosedPromise] = | 371 this[readableStreamReaderClosedPromise] = |
| 350 Promise_reject(new TypeError(errReleasedReaderClosedPromise)); | 372 Promise_reject(new TypeError(errReleasedReaderClosedPromise)); |
| 351 } | 373 } |
| 352 | 374 |
| 353 this[readableStreamReaderOwnerReadableStream][readableStreamReader] = | 375 this[readableStreamReaderOwnerReadableStream][readableStreamReader] = |
| 354 undefined; | 376 undefined; |
| (...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 812 binding.GetReadableStreamDesiredSize = GetReadableStreamDesiredSize; | 834 binding.GetReadableStreamDesiredSize = GetReadableStreamDesiredSize; |
| 813 binding.EnqueueInReadableStream = EnqueueInReadableStream; | 835 binding.EnqueueInReadableStream = EnqueueInReadableStream; |
| 814 binding.ErrorReadableStream = ErrorReadableStream; | 836 binding.ErrorReadableStream = ErrorReadableStream; |
| 815 | 837 |
| 816 binding.createReadableStreamWithExternalController = | 838 binding.createReadableStreamWithExternalController = |
| 817 (underlyingSource, strategy) => { | 839 (underlyingSource, strategy) => { |
| 818 return new ReadableStream( | 840 return new ReadableStream( |
| 819 underlyingSource, strategy, createWithExternalControllerSentinel); | 841 underlyingSource, strategy, createWithExternalControllerSentinel); |
| 820 }; | 842 }; |
| 821 }); | 843 }); |
| OLD | NEW |