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

Side by Side Diff: Source/core/streams/ReadableStreamTest.cpp

Issue 795463006: Rename ReadableStream.wait() to ReadableStream.ready. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 11 months 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 | « Source/core/streams/ReadableStream.idl ('k') | 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #include "config.h" 5 #include "config.h"
6 #include "core/streams/ReadableStream.h" 6 #include "core/streams/ReadableStream.h"
7 7
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 203
204 TEST_F(ReadableStreamTest, WaitOnWaiting) 204 TEST_F(ReadableStreamTest, WaitOnWaiting)
205 { 205 {
206 StringStream* stream = construct(); 206 StringStream* stream = construct();
207 Checkpoint checkpoint; 207 Checkpoint checkpoint;
208 208
209 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 209 EXPECT_EQ(ReadableStream::Waiting, stream->state());
210 EXPECT_TRUE(stream->isStarted()); 210 EXPECT_TRUE(stream->isStarted());
211 EXPECT_TRUE(stream->isPulling()); 211 EXPECT_TRUE(stream->isPulling());
212 212
213 ScriptPromise p = stream->wait(scriptState()); 213 ScriptPromise p = stream->ready(scriptState());
214 ScriptPromise q = stream->wait(scriptState()); 214 ScriptPromise q = stream->ready(scriptState());
215 215
216 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 216 EXPECT_EQ(ReadableStream::Waiting, stream->state());
217 EXPECT_EQ(q, p); 217 EXPECT_EQ(q, p);
218 218
219 stream->error(DOMException::create(AbortError, "done")); 219 stream->error(DOMException::create(AbortError, "done"));
220 } 220 }
221 221
222 TEST_F(ReadableStreamTest, WaitDuringStarting) 222 TEST_F(ReadableStreamTest, WaitDuringStarting)
223 { 223 {
224 StringStream* stream = new StringStream(scriptState()->executionContext(), m _underlyingSource); 224 StringStream* stream = new StringStream(scriptState()->executionContext(), m _underlyingSource);
225 Checkpoint checkpoint; 225 Checkpoint checkpoint;
226 226
227 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 227 EXPECT_EQ(ReadableStream::Waiting, stream->state());
228 EXPECT_FALSE(stream->isStarted()); 228 EXPECT_FALSE(stream->isStarted());
229 EXPECT_FALSE(stream->isPulling()); 229 EXPECT_FALSE(stream->isPulling());
230 230
231 { 231 {
232 InSequence s; 232 InSequence s;
233 EXPECT_CALL(checkpoint, Call(0)); 233 EXPECT_CALL(checkpoint, Call(0));
234 EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); 234 EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
235 EXPECT_CALL(checkpoint, Call(1)); 235 EXPECT_CALL(checkpoint, Call(1));
236 } 236 }
237 237
238 stream->wait(scriptState()); 238 stream->ready(scriptState());
239 checkpoint.Call(0); 239 checkpoint.Call(0);
240 stream->didSourceStart(); 240 stream->didSourceStart();
241 checkpoint.Call(1); 241 checkpoint.Call(1);
242 242
243 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 243 EXPECT_EQ(ReadableStream::Waiting, stream->state());
244 EXPECT_TRUE(stream->isStarted()); 244 EXPECT_TRUE(stream->isStarted());
245 EXPECT_TRUE(stream->isPulling()); 245 EXPECT_TRUE(stream->isPulling());
246 246
247 stream->error(DOMException::create(AbortError, "done")); 247 stream->error(DOMException::create(AbortError, "done"));
248 } 248 }
249 249
250 TEST_F(ReadableStreamTest, WaitAndError) 250 TEST_F(ReadableStreamTest, WaitAndError)
251 { 251 {
252 StringStream* stream = construct(); 252 StringStream* stream = construct();
253 String onFulfilled, onRejected; 253 String onFulfilled, onRejected;
254 254
255 ScriptPromise promise = stream->wait(scriptState()); 255 ScriptPromise promise = stream->ready(scriptState());
256 promise.then(createCaptor(&onFulfilled), createCaptor(&onRejected)); 256 promise.then(createCaptor(&onFulfilled), createCaptor(&onRejected));
257 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 257 EXPECT_EQ(ReadableStream::Waiting, stream->state());
258 EXPECT_TRUE(stream->isPulling()); 258 EXPECT_TRUE(stream->isPulling());
259 stream->error(DOMException::create(NotFoundError, "hello, error")); 259 stream->error(DOMException::create(NotFoundError, "hello, error"));
260 EXPECT_EQ(ReadableStream::Errored, stream->state()); 260 EXPECT_EQ(ReadableStream::Errored, stream->state());
261 EXPECT_TRUE(stream->isPulling()); 261 EXPECT_TRUE(stream->isPulling());
262 EXPECT_TRUE(onFulfilled.isNull()); 262 EXPECT_TRUE(onFulfilled.isNull());
263 EXPECT_TRUE(onRejected.isNull()); 263 EXPECT_TRUE(onRejected.isNull());
264 264
265 isolate()->RunMicrotasks(); 265 isolate()->RunMicrotasks();
266 EXPECT_TRUE(onFulfilled.isNull()); 266 EXPECT_TRUE(onFulfilled.isNull());
267 EXPECT_EQ(promise, stream->wait(scriptState())); 267 EXPECT_EQ(promise, stream->ready(scriptState()));
268 EXPECT_EQ("NotFoundError: hello, error", onRejected); 268 EXPECT_EQ("NotFoundError: hello, error", onRejected);
269 } 269 }
270 270
271 TEST_F(ReadableStreamTest, ErrorAndEnqueue) 271 TEST_F(ReadableStreamTest, ErrorAndEnqueue)
272 { 272 {
273 StringStream* stream = construct(); 273 StringStream* stream = construct();
274 274
275 stream->error(DOMException::create(NotFoundError, "error")); 275 stream->error(DOMException::create(NotFoundError, "error"));
276 EXPECT_EQ(ReadableStream::Errored, stream->state()); 276 EXPECT_EQ(ReadableStream::Errored, stream->state());
277 277
(...skipping 17 matching lines...) Expand all
295 TEST_F(ReadableStreamTest, EnqueueAndWait) 295 TEST_F(ReadableStreamTest, EnqueueAndWait)
296 { 296 {
297 StringStream* stream = construct(); 297 StringStream* stream = construct();
298 String onFulfilled, onRejected; 298 String onFulfilled, onRejected;
299 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 299 EXPECT_EQ(ReadableStream::Waiting, stream->state());
300 300
301 bool result = stream->enqueue("hello"); 301 bool result = stream->enqueue("hello");
302 EXPECT_TRUE(result); 302 EXPECT_TRUE(result);
303 EXPECT_EQ(ReadableStream::Readable, stream->state()); 303 EXPECT_EQ(ReadableStream::Readable, stream->state());
304 304
305 stream->wait(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&o nRejected)); 305 stream->ready(scriptState()).then(createCaptor(&onFulfilled), createCaptor(& onRejected));
306 EXPECT_EQ(ReadableStream::Readable, stream->state()); 306 EXPECT_EQ(ReadableStream::Readable, stream->state());
307 EXPECT_FALSE(stream->isPulling()); 307 EXPECT_FALSE(stream->isPulling());
308 EXPECT_TRUE(onFulfilled.isNull()); 308 EXPECT_TRUE(onFulfilled.isNull());
309 EXPECT_TRUE(onRejected.isNull()); 309 EXPECT_TRUE(onRejected.isNull());
310 310
311 isolate()->RunMicrotasks(); 311 isolate()->RunMicrotasks();
312 EXPECT_EQ(ReadableStream::Readable, stream->state()); 312 EXPECT_EQ(ReadableStream::Readable, stream->state());
313 EXPECT_FALSE(stream->isPulling()); 313 EXPECT_FALSE(stream->isPulling());
314 EXPECT_EQ("undefined", onFulfilled); 314 EXPECT_EQ("undefined", onFulfilled);
315 EXPECT_TRUE(onRejected.isNull()); 315 EXPECT_TRUE(onRejected.isNull());
316 316
317 stream->error(DOMException::create(AbortError, "done")); 317 stream->error(DOMException::create(AbortError, "done"));
318 } 318 }
319 319
320 TEST_F(ReadableStreamTest, WaitAndEnqueue) 320 TEST_F(ReadableStreamTest, WaitAndEnqueue)
321 { 321 {
322 StringStream* stream = construct(); 322 StringStream* stream = construct();
323 String onFulfilled, onRejected; 323 String onFulfilled, onRejected;
324 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 324 EXPECT_EQ(ReadableStream::Waiting, stream->state());
325 325
326 stream->wait(scriptState()).then(createCaptor(&onFulfilled), createCaptor(&o nRejected)); 326 stream->ready(scriptState()).then(createCaptor(&onFulfilled), createCaptor(& onRejected));
327 isolate()->RunMicrotasks(); 327 isolate()->RunMicrotasks();
328 328
329 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 329 EXPECT_EQ(ReadableStream::Waiting, stream->state());
330 EXPECT_TRUE(stream->isPulling()); 330 EXPECT_TRUE(stream->isPulling());
331 EXPECT_TRUE(onFulfilled.isNull()); 331 EXPECT_TRUE(onFulfilled.isNull());
332 EXPECT_TRUE(onRejected.isNull()); 332 EXPECT_TRUE(onRejected.isNull());
333 333
334 bool result = stream->enqueue("hello"); 334 bool result = stream->enqueue("hello");
335 EXPECT_TRUE(result); 335 EXPECT_TRUE(result);
336 EXPECT_EQ(ReadableStream::Readable, stream->state()); 336 EXPECT_EQ(ReadableStream::Readable, stream->state());
337 EXPECT_FALSE(stream->isPulling()); 337 EXPECT_FALSE(stream->isPulling());
338 EXPECT_TRUE(onFulfilled.isNull()); 338 EXPECT_TRUE(onFulfilled.isNull());
339 EXPECT_TRUE(onRejected.isNull()); 339 EXPECT_TRUE(onRejected.isNull());
340 340
341 isolate()->RunMicrotasks(); 341 isolate()->RunMicrotasks();
342 EXPECT_EQ("undefined", onFulfilled); 342 EXPECT_EQ("undefined", onFulfilled);
343 EXPECT_TRUE(onRejected.isNull()); 343 EXPECT_TRUE(onRejected.isNull());
344 344
345 stream->error(DOMException::create(AbortError, "done")); 345 stream->error(DOMException::create(AbortError, "done"));
346 } 346 }
347 347
348 TEST_F(ReadableStreamTest, WaitAndEnqueueAndError) 348 TEST_F(ReadableStreamTest, WaitAndEnqueueAndError)
349 { 349 {
350 StringStream* stream = construct(); 350 StringStream* stream = construct();
351 String onFulfilled, onRejected; 351 String onFulfilled, onRejected;
352 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 352 EXPECT_EQ(ReadableStream::Waiting, stream->state());
353 353
354 ScriptPromise promise = stream->wait(scriptState()); 354 ScriptPromise promise = stream->ready(scriptState());
355 promise.then(createCaptor(&onFulfilled), createCaptor(&onRejected)); 355 promise.then(createCaptor(&onFulfilled), createCaptor(&onRejected));
356 isolate()->RunMicrotasks(); 356 isolate()->RunMicrotasks();
357 357
358 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 358 EXPECT_EQ(ReadableStream::Waiting, stream->state());
359 EXPECT_TRUE(stream->isPulling()); 359 EXPECT_TRUE(stream->isPulling());
360 EXPECT_TRUE(onFulfilled.isNull()); 360 EXPECT_TRUE(onFulfilled.isNull());
361 EXPECT_TRUE(onRejected.isNull()); 361 EXPECT_TRUE(onRejected.isNull());
362 362
363 bool result = stream->enqueue("hello"); 363 bool result = stream->enqueue("hello");
364 EXPECT_TRUE(result); 364 EXPECT_TRUE(result);
365 EXPECT_EQ(ReadableStream::Readable, stream->state()); 365 EXPECT_EQ(ReadableStream::Readable, stream->state());
366 EXPECT_FALSE(stream->isPulling()); 366 EXPECT_FALSE(stream->isPulling());
367 EXPECT_TRUE(onFulfilled.isNull()); 367 EXPECT_TRUE(onFulfilled.isNull());
368 EXPECT_TRUE(onRejected.isNull()); 368 EXPECT_TRUE(onRejected.isNull());
369 369
370 isolate()->RunMicrotasks(); 370 isolate()->RunMicrotasks();
371 EXPECT_EQ("undefined", onFulfilled); 371 EXPECT_EQ("undefined", onFulfilled);
372 EXPECT_TRUE(onRejected.isNull()); 372 EXPECT_TRUE(onRejected.isNull());
373 373
374 stream->error(DOMException::create(NotFoundError, "error")); 374 stream->error(DOMException::create(NotFoundError, "error"));
375 EXPECT_EQ(ReadableStream::Errored, stream->state()); 375 EXPECT_EQ(ReadableStream::Errored, stream->state());
376 376
377 EXPECT_NE(promise, stream->wait(scriptState())); 377 EXPECT_NE(promise, stream->ready(scriptState()));
378 } 378 }
379 379
380 TEST_F(ReadableStreamTest, CloseWhenWaiting) 380 TEST_F(ReadableStreamTest, CloseWhenWaiting)
381 { 381 {
382 String onWaitFulfilled, onWaitRejected; 382 String onWaitFulfilled, onWaitRejected;
383 String onClosedFulfilled, onClosedRejected; 383 String onClosedFulfilled, onClosedRejected;
384 384
385 StringStream* stream = construct(); 385 StringStream* stream = construct();
386 386
387 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 387 EXPECT_EQ(ReadableStream::Waiting, stream->state());
388 stream->wait(scriptState()).then(createCaptor(&onWaitFulfilled), createCapto r(&onWaitRejected)); 388 stream->ready(scriptState()).then(createCaptor(&onWaitFulfilled), createCapt or(&onWaitRejected));
389 stream->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected)); 389 stream->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected));
390 390
391 isolate()->RunMicrotasks(); 391 isolate()->RunMicrotasks();
392 EXPECT_TRUE(onWaitFulfilled.isNull()); 392 EXPECT_TRUE(onWaitFulfilled.isNull());
393 EXPECT_TRUE(onWaitRejected.isNull()); 393 EXPECT_TRUE(onWaitRejected.isNull());
394 EXPECT_TRUE(onClosedFulfilled.isNull()); 394 EXPECT_TRUE(onClosedFulfilled.isNull());
395 EXPECT_TRUE(onClosedRejected.isNull()); 395 EXPECT_TRUE(onClosedRejected.isNull());
396 396
397 stream->close(); 397 stream->close();
398 EXPECT_EQ(ReadableStream::Closed, stream->state()); 398 EXPECT_EQ(ReadableStream::Closed, stream->state());
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 Checkpoint checkpoint; 475 Checkpoint checkpoint;
476 476
477 { 477 {
478 InSequence s; 478 InSequence s;
479 EXPECT_CALL(checkpoint, Call(0)); 479 EXPECT_CALL(checkpoint, Call(0));
480 EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); 480 EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
481 EXPECT_CALL(checkpoint, Call(1)); 481 EXPECT_CALL(checkpoint, Call(1));
482 } 482 }
483 483
484 stream->enqueue("hello"); 484 stream->enqueue("hello");
485 ScriptPromise promise = stream->wait(scriptState()); 485 ScriptPromise promise = stream->ready(scriptState());
486 EXPECT_EQ(ReadableStream::Readable, stream->state()); 486 EXPECT_EQ(ReadableStream::Readable, stream->state());
487 EXPECT_FALSE(stream->isPulling()); 487 EXPECT_FALSE(stream->isPulling());
488 488
489 checkpoint.Call(0); 489 checkpoint.Call(0);
490 String chunk; 490 String chunk;
491 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk)); 491 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
492 checkpoint.Call(1); 492 checkpoint.Call(1);
493 EXPECT_FALSE(m_exceptionState.hadException()); 493 EXPECT_FALSE(m_exceptionState.hadException());
494 EXPECT_EQ("hello", chunk); 494 EXPECT_EQ("hello", chunk);
495 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 495 EXPECT_EQ(ReadableStream::Waiting, stream->state());
496 EXPECT_TRUE(stream->isPulling()); 496 EXPECT_TRUE(stream->isPulling());
497 EXPECT_FALSE(stream->isDraining()); 497 EXPECT_FALSE(stream->isDraining());
498 498
499 ScriptPromise newPromise = stream->wait(scriptState()); 499 ScriptPromise newPromise = stream->ready(scriptState());
500 newPromise.then(createCaptor(&onFulfilled), createCaptor(&onRejected)); 500 newPromise.then(createCaptor(&onFulfilled), createCaptor(&onRejected));
501 isolate()->RunMicrotasks(); 501 isolate()->RunMicrotasks();
502 EXPECT_NE(promise, newPromise); 502 EXPECT_NE(promise, newPromise);
503 EXPECT_TRUE(onFulfilled.isNull()); 503 EXPECT_TRUE(onFulfilled.isNull());
504 EXPECT_TRUE(onRejected.isNull()); 504 EXPECT_TRUE(onRejected.isNull());
505 505
506 stream->error(DOMException::create(AbortError, "done")); 506 stream->error(DOMException::create(AbortError, "done"));
507 isolate()->RunMicrotasks(); 507 isolate()->RunMicrotasks();
508 } 508 }
509 509
510 TEST_F(ReadableStreamTest, EnqueueTwiceAndRead) 510 TEST_F(ReadableStreamTest, EnqueueTwiceAndRead)
511 { 511 {
512 StringStream* stream = construct(); 512 StringStream* stream = construct();
513 Checkpoint checkpoint; 513 Checkpoint checkpoint;
514 514
515 { 515 {
516 InSequence s; 516 InSequence s;
517 EXPECT_CALL(checkpoint, Call(0)); 517 EXPECT_CALL(checkpoint, Call(0));
518 EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1); 518 EXPECT_CALL(*m_underlyingSource, pullSource()).Times(1);
519 EXPECT_CALL(checkpoint, Call(1)); 519 EXPECT_CALL(checkpoint, Call(1));
520 } 520 }
521 521
522 EXPECT_TRUE(stream->enqueue("hello")); 522 EXPECT_TRUE(stream->enqueue("hello"));
523 EXPECT_TRUE(stream->enqueue("bye")); 523 EXPECT_TRUE(stream->enqueue("bye"));
524 ScriptPromise promise = stream->wait(scriptState()); 524 ScriptPromise promise = stream->ready(scriptState());
525 EXPECT_EQ(ReadableStream::Readable, stream->state()); 525 EXPECT_EQ(ReadableStream::Readable, stream->state());
526 EXPECT_FALSE(stream->isPulling()); 526 EXPECT_FALSE(stream->isPulling());
527 527
528 String chunk; 528 String chunk;
529 checkpoint.Call(0); 529 checkpoint.Call(0);
530 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk)); 530 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
531 checkpoint.Call(1); 531 checkpoint.Call(1);
532 EXPECT_FALSE(m_exceptionState.hadException()); 532 EXPECT_FALSE(m_exceptionState.hadException());
533 EXPECT_EQ("hello", chunk); 533 EXPECT_EQ("hello", chunk);
534 EXPECT_EQ(ReadableStream::Readable, stream->state()); 534 EXPECT_EQ(ReadableStream::Readable, stream->state());
535 EXPECT_TRUE(stream->isPulling()); 535 EXPECT_TRUE(stream->isPulling());
536 EXPECT_FALSE(stream->isDraining()); 536 EXPECT_FALSE(stream->isDraining());
537 537
538 ScriptPromise newPromise = stream->wait(scriptState()); 538 ScriptPromise newPromise = stream->ready(scriptState());
539 EXPECT_EQ(promise, newPromise); 539 EXPECT_EQ(promise, newPromise);
540 540
541 stream->error(DOMException::create(AbortError, "done")); 541 stream->error(DOMException::create(AbortError, "done"));
542 } 542 }
543 543
544 TEST_F(ReadableStreamTest, CloseWhenReadable) 544 TEST_F(ReadableStreamTest, CloseWhenReadable)
545 { 545 {
546 StringStream* stream = construct(); 546 StringStream* stream = construct();
547 String onClosedFulfilled, onClosedRejected; 547 String onClosedFulfilled, onClosedRejected;
548 548
549 stream->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected)); 549 stream->closed(scriptState()).then(createCaptor(&onClosedFulfilled), createC aptor(&onClosedRejected));
550 EXPECT_TRUE(stream->enqueue("hello")); 550 EXPECT_TRUE(stream->enqueue("hello"));
551 EXPECT_TRUE(stream->enqueue("bye")); 551 EXPECT_TRUE(stream->enqueue("bye"));
552 stream->close(); 552 stream->close();
553 EXPECT_FALSE(stream->enqueue("should be ignored")); 553 EXPECT_FALSE(stream->enqueue("should be ignored"));
554 554
555 ScriptPromise promise = stream->wait(scriptState()); 555 ScriptPromise promise = stream->ready(scriptState());
556 EXPECT_EQ(ReadableStream::Readable, stream->state()); 556 EXPECT_EQ(ReadableStream::Readable, stream->state());
557 EXPECT_FALSE(stream->isPulling()); 557 EXPECT_FALSE(stream->isPulling());
558 EXPECT_TRUE(stream->isDraining()); 558 EXPECT_TRUE(stream->isDraining());
559 559
560 String chunk; 560 String chunk;
561 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk)); 561 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
562 EXPECT_EQ("hello", chunk); 562 EXPECT_EQ("hello", chunk);
563 EXPECT_EQ(promise, stream->wait(scriptState())); 563 EXPECT_EQ(promise, stream->ready(scriptState()));
564 564
565 isolate()->RunMicrotasks(); 565 isolate()->RunMicrotasks();
566 566
567 EXPECT_EQ(ReadableStream::Readable, stream->state()); 567 EXPECT_EQ(ReadableStream::Readable, stream->state());
568 EXPECT_FALSE(stream->isPulling()); 568 EXPECT_FALSE(stream->isPulling());
569 EXPECT_TRUE(stream->isDraining()); 569 EXPECT_TRUE(stream->isDraining());
570 570
571 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk)); 571 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
572 EXPECT_EQ("bye", chunk); 572 EXPECT_EQ("bye", chunk);
573 EXPECT_FALSE(m_exceptionState.hadException()); 573 EXPECT_FALSE(m_exceptionState.hadException());
574 574
575 EXPECT_EQ(promise, stream->wait(scriptState())); 575 EXPECT_EQ(promise, stream->ready(scriptState()));
576 576
577 EXPECT_EQ(ReadableStream::Closed, stream->state()); 577 EXPECT_EQ(ReadableStream::Closed, stream->state());
578 EXPECT_FALSE(stream->isPulling()); 578 EXPECT_FALSE(stream->isPulling());
579 EXPECT_TRUE(stream->isDraining()); 579 EXPECT_TRUE(stream->isDraining());
580 580
581 EXPECT_TRUE(onClosedFulfilled.isNull()); 581 EXPECT_TRUE(onClosedFulfilled.isNull());
582 EXPECT_TRUE(onClosedRejected.isNull()); 582 EXPECT_TRUE(onClosedRejected.isNull());
583 583
584 isolate()->RunMicrotasks(); 584 isolate()->RunMicrotasks();
585 EXPECT_EQ("undefined", onClosedFulfilled); 585 EXPECT_EQ("undefined", onClosedFulfilled);
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
630 String onFulfilled, onRejected; 630 String onFulfilled, onRejected;
631 ScriptValue reason(scriptState(), v8String(scriptState()->isolate(), "reason ")); 631 ScriptValue reason(scriptState(), v8String(scriptState()->isolate(), "reason "));
632 ScriptPromise promise = ScriptPromise::cast(scriptState(), v8String(scriptSt ate()->isolate(), "hello")); 632 ScriptPromise promise = ScriptPromise::cast(scriptState(), v8String(scriptSt ate()->isolate(), "hello"));
633 633
634 { 634 {
635 InSequence s; 635 InSequence s;
636 EXPECT_CALL(*m_underlyingSource, cancelSource(scriptState(), reason)).Wi llOnce(Return(promise)); 636 EXPECT_CALL(*m_underlyingSource, cancelSource(scriptState(), reason)).Wi llOnce(Return(promise));
637 } 637 }
638 638
639 EXPECT_EQ(ReadableStream::Waiting, stream->state()); 639 EXPECT_EQ(ReadableStream::Waiting, stream->state());
640 ScriptPromise wait = stream->wait(scriptState()); 640 ScriptPromise ready = stream->ready(scriptState());
641 EXPECT_NE(promise, stream->cancel(scriptState(), reason)); 641 EXPECT_NE(promise, stream->cancel(scriptState(), reason));
642 EXPECT_EQ(ReadableStream::Closed, stream->state()); 642 EXPECT_EQ(ReadableStream::Closed, stream->state());
643 EXPECT_EQ(stream->wait(scriptState()), wait); 643 EXPECT_EQ(stream->ready(scriptState()), ready);
644 644
645 wait.then(createCaptor(&onFulfilled), createCaptor(&onRejected)); 645 ready.then(createCaptor(&onFulfilled), createCaptor(&onRejected));
646 EXPECT_TRUE(onFulfilled.isNull()); 646 EXPECT_TRUE(onFulfilled.isNull());
647 EXPECT_TRUE(onRejected.isNull()); 647 EXPECT_TRUE(onRejected.isNull());
648 648
649 isolate()->RunMicrotasks(); 649 isolate()->RunMicrotasks();
650 EXPECT_EQ("undefined", onFulfilled); 650 EXPECT_EQ("undefined", onFulfilled);
651 EXPECT_TRUE(onRejected.isNull()); 651 EXPECT_TRUE(onRejected.isNull());
652 } 652 }
653 653
654 TEST_F(ReadableStreamTest, CancelWhenReadable) 654 TEST_F(ReadableStreamTest, CancelWhenReadable)
655 { 655 {
656 StringStream* stream = construct(); 656 StringStream* stream = construct();
657 String onFulfilled, onRejected; 657 String onFulfilled, onRejected;
658 String onCancelFulfilled, onCancelRejected; 658 String onCancelFulfilled, onCancelRejected;
659 ScriptValue reason(scriptState(), v8String(scriptState()->isolate(), "reason ")); 659 ScriptValue reason(scriptState(), v8String(scriptState()->isolate(), "reason "));
660 ScriptPromise promise = ScriptPromise::cast(scriptState(), v8String(scriptSt ate()->isolate(), "hello")); 660 ScriptPromise promise = ScriptPromise::cast(scriptState(), v8String(scriptSt ate()->isolate(), "hello"));
661 661
662 { 662 {
663 InSequence s; 663 InSequence s;
664 EXPECT_CALL(*m_underlyingSource, cancelSource(scriptState(), reason)).Wi llOnce(Return(promise)); 664 EXPECT_CALL(*m_underlyingSource, cancelSource(scriptState(), reason)).Wi llOnce(Return(promise));
665 } 665 }
666 666
667 stream->enqueue("hello"); 667 stream->enqueue("hello");
668 ScriptPromise wait = stream->wait(scriptState()); 668 ScriptPromise ready = stream->ready(scriptState());
669 EXPECT_EQ(ReadableStream::Readable, stream->state()); 669 EXPECT_EQ(ReadableStream::Readable, stream->state());
670 670
671 ScriptPromise cancelResult = stream->cancel(scriptState(), reason); 671 ScriptPromise cancelResult = stream->cancel(scriptState(), reason);
672 cancelResult.then(createCaptor(&onCancelFulfilled), createCaptor(&onCancelRe jected)); 672 cancelResult.then(createCaptor(&onCancelFulfilled), createCaptor(&onCancelRe jected));
673 673
674 EXPECT_NE(promise, cancelResult); 674 EXPECT_NE(promise, cancelResult);
675 EXPECT_EQ(ReadableStream::Closed, stream->state()); 675 EXPECT_EQ(ReadableStream::Closed, stream->state());
676 676
677 EXPECT_EQ(stream->wait(scriptState()), wait); 677 EXPECT_EQ(stream->ready(scriptState()), ready);
678 678
679 EXPECT_TRUE(onCancelFulfilled.isNull()); 679 EXPECT_TRUE(onCancelFulfilled.isNull());
680 EXPECT_TRUE(onCancelRejected.isNull()); 680 EXPECT_TRUE(onCancelRejected.isNull());
681 681
682 isolate()->RunMicrotasks(); 682 isolate()->RunMicrotasks();
683 EXPECT_EQ("undefined", onCancelFulfilled); 683 EXPECT_EQ("undefined", onCancelFulfilled);
684 EXPECT_TRUE(onCancelRejected.isNull()); 684 EXPECT_TRUE(onCancelRejected.isNull());
685 } 685 }
686 686
687 TEST_F(ReadableStreamTest, ReadableArrayBufferCompileTest) 687 TEST_F(ReadableStreamTest, ReadableArrayBufferCompileTest)
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 stream->enqueue("bar"); 768 stream->enqueue("bar");
769 checkpoint.Call(3); 769 checkpoint.Call(3);
770 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk)); 770 EXPECT_TRUE(stream->read(scriptState(), m_exceptionState).toString(chunk));
771 EXPECT_EQ("foo", chunk); 771 EXPECT_EQ("foo", chunk);
772 checkpoint.Call(4); 772 checkpoint.Call(4);
773 773
774 stream->error(DOMException::create(AbortError, "done")); 774 stream->error(DOMException::create(AbortError, "done"));
775 } 775 }
776 776
777 } // namespace blink 777 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/streams/ReadableStream.idl ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698