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

Side by Side Diff: content/browser/service_worker/service_worker_cache_writer_unittest.cc

Issue 2431313003: Mojofy unittests related to service workers (Closed)
Patch Set: Rebase Created 4 years, 2 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
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 #include "content/browser/service_worker/service_worker_cache_writer.h" 5 #include "content/browser/service_worker/service_worker_cache_writer.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <list> 9 #include <list>
10 #include <queue> 10 #include <queue>
11 #include <string> 11 #include <string>
12 12
13 #include "base/macros.h" 13 #include "base/macros.h"
14 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
15 #include "content/browser/service_worker/service_worker_disk_cache.h" 15 #include "content/browser/service_worker/service_worker_disk_cache.h"
16 #include "content/browser/service_worker/service_worker_test_utils.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 18
18 namespace content { 19 namespace content {
19 namespace { 20 namespace {
20 21
21 // A test implementation of ServiceWorkerResponseReader. 22 // A test implementation of ServiceWorkerResponseReader.
22 // 23 //
23 // This class exposes the ability to expect reads (see ExpectRead*() below). 24 // This class exposes the ability to expect reads (see ExpectRead*() below).
24 // Each call to ReadInfo() or ReadData() consumes another expected read, in the 25 // Each call to ReadInfo() or ReadData() consumes another expected read, in the
25 // order those reads were expected, so: 26 // order those reads were expected, so:
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 net::Error WriteData(const std::string& data) { 393 net::Error WriteData(const std::string& data) {
393 scoped_refptr<net::IOBuffer> buf = new net::StringIOBuffer(data); 394 scoped_refptr<net::IOBuffer> buf = new net::StringIOBuffer(data);
394 return cache_writer_->MaybeWriteData(buf.get(), data.size(), 395 return cache_writer_->MaybeWriteData(buf.get(), data.size(),
395 CreateWriteCallback()); 396 CreateWriteCallback());
396 } 397 }
397 398
398 private: 399 private:
399 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerCacheWriterTest); 400 DISALLOW_COPY_AND_ASSIGN(ServiceWorkerCacheWriterTest);
400 }; 401 };
401 402
403 class ServiceWorkerCacheWriterTestP
404 : public MojoServiceWorkerTestP<ServiceWorkerCacheWriterTest> {};
405
402 // Passthrough tests: 406 // Passthrough tests:
403 // In these tests, the ServiceWorkerCacheWriter under test has no existing 407 // In these tests, the ServiceWorkerCacheWriter under test has no existing
404 // reader, since no calls to ExpectReader() have been made; this means that 408 // reader, since no calls to ExpectReader() have been made; this means that
405 // there is no existing cached response and the incoming data is written back to 409 // there is no existing cached response and the incoming data is written back to
406 // the cache directly. 410 // the cache directly.
407 411
408 TEST_F(ServiceWorkerCacheWriterTest, PassthroughHeadersSync) { 412 TEST_P(ServiceWorkerCacheWriterTestP, PassthroughHeadersSync) {
409 const size_t kHeaderSize = 16; 413 const size_t kHeaderSize = 16;
410 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 414 MockServiceWorkerResponseWriter* writer = ExpectWriter();
411 writer->ExpectWriteInfoOk(kHeaderSize, false); 415 writer->ExpectWriteInfoOk(kHeaderSize, false);
412 Initialize(); 416 Initialize();
413 417
414 net::Error error = WriteHeaders(kHeaderSize); 418 net::Error error = WriteHeaders(kHeaderSize);
415 EXPECT_EQ(net::OK, error); 419 EXPECT_EQ(net::OK, error);
416 EXPECT_FALSE(write_complete_); 420 EXPECT_FALSE(write_complete_);
417 EXPECT_TRUE(writer->AllExpectedWritesDone()); 421 EXPECT_TRUE(writer->AllExpectedWritesDone());
418 EXPECT_EQ(0U, cache_writer_->bytes_written()); 422 EXPECT_EQ(0U, cache_writer_->bytes_written());
419 } 423 }
420 424
421 TEST_F(ServiceWorkerCacheWriterTest, PassthroughHeadersAsync) { 425 TEST_P(ServiceWorkerCacheWriterTestP, PassthroughHeadersAsync) {
422 size_t kHeaderSize = 16; 426 size_t kHeaderSize = 16;
423 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 427 MockServiceWorkerResponseWriter* writer = ExpectWriter();
424 writer->ExpectWriteInfoOk(kHeaderSize, true); 428 writer->ExpectWriteInfoOk(kHeaderSize, true);
425 Initialize(); 429 Initialize();
426 430
427 net::Error error = WriteHeaders(kHeaderSize); 431 net::Error error = WriteHeaders(kHeaderSize);
428 EXPECT_EQ(net::ERR_IO_PENDING, error); 432 EXPECT_EQ(net::ERR_IO_PENDING, error);
429 EXPECT_FALSE(write_complete_); 433 EXPECT_FALSE(write_complete_);
430 writer->CompletePendingWrite(); 434 writer->CompletePendingWrite();
431 EXPECT_TRUE(write_complete_); 435 EXPECT_TRUE(write_complete_);
432 EXPECT_EQ(net::OK, last_error_); 436 EXPECT_EQ(net::OK, last_error_);
433 EXPECT_TRUE(writer->AllExpectedWritesDone()); 437 EXPECT_TRUE(writer->AllExpectedWritesDone());
434 EXPECT_EQ(0U, cache_writer_->bytes_written()); 438 EXPECT_EQ(0U, cache_writer_->bytes_written());
435 } 439 }
436 440
437 TEST_F(ServiceWorkerCacheWriterTest, PassthroughDataSync) { 441 TEST_P(ServiceWorkerCacheWriterTestP, PassthroughDataSync) {
438 const std::string data1 = "abcdef"; 442 const std::string data1 = "abcdef";
439 const std::string data2 = "ghijklmno"; 443 const std::string data2 = "ghijklmno";
440 size_t response_size = data1.size() + data2.size(); 444 size_t response_size = data1.size() + data2.size();
441 445
442 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 446 MockServiceWorkerResponseWriter* writer = ExpectWriter();
443 writer->ExpectWriteInfoOk(response_size, false); 447 writer->ExpectWriteInfoOk(response_size, false);
444 writer->ExpectWriteDataOk(data1.size(), false); 448 writer->ExpectWriteDataOk(data1.size(), false);
445 writer->ExpectWriteDataOk(data2.size(), false); 449 writer->ExpectWriteDataOk(data2.size(), false);
446 Initialize(); 450 Initialize();
447 451
448 net::Error error = WriteHeaders(response_size); 452 net::Error error = WriteHeaders(response_size);
449 EXPECT_EQ(net::OK, error); 453 EXPECT_EQ(net::OK, error);
450 454
451 error = WriteData(data1); 455 error = WriteData(data1);
452 EXPECT_EQ(net::OK, error); 456 EXPECT_EQ(net::OK, error);
453 457
454 error = WriteData(data2); 458 error = WriteData(data2);
455 EXPECT_EQ(net::OK, error); 459 EXPECT_EQ(net::OK, error);
456 EXPECT_TRUE(writer->AllExpectedWritesDone()); 460 EXPECT_TRUE(writer->AllExpectedWritesDone());
457 } 461 }
458 462
459 TEST_F(ServiceWorkerCacheWriterTest, PassthroughDataAsync) { 463 TEST_P(ServiceWorkerCacheWriterTestP, PassthroughDataAsync) {
460 const std::string data1 = "abcdef"; 464 const std::string data1 = "abcdef";
461 const std::string data2 = "ghijklmno"; 465 const std::string data2 = "ghijklmno";
462 size_t response_size = data1.size() + data2.size(); 466 size_t response_size = data1.size() + data2.size();
463 467
464 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 468 MockServiceWorkerResponseWriter* writer = ExpectWriter();
465 writer->ExpectWriteInfoOk(response_size, false); 469 writer->ExpectWriteInfoOk(response_size, false);
466 writer->ExpectWriteDataOk(data1.size(), true); 470 writer->ExpectWriteDataOk(data1.size(), true);
467 writer->ExpectWriteDataOk(data2.size(), true); 471 writer->ExpectWriteDataOk(data2.size(), true);
468 Initialize(); 472 Initialize();
469 473
470 net::Error error = WriteHeaders(response_size); 474 net::Error error = WriteHeaders(response_size);
471 EXPECT_EQ(net::OK, error); 475 EXPECT_EQ(net::OK, error);
472 476
473 error = WriteData(data1); 477 error = WriteData(data1);
474 EXPECT_EQ(net::ERR_IO_PENDING, error); 478 EXPECT_EQ(net::ERR_IO_PENDING, error);
475 writer->CompletePendingWrite(); 479 writer->CompletePendingWrite();
476 EXPECT_TRUE(write_complete_); 480 EXPECT_TRUE(write_complete_);
477 481
478 write_complete_ = false; 482 write_complete_ = false;
479 error = WriteData(data2); 483 error = WriteData(data2);
480 EXPECT_EQ(net::ERR_IO_PENDING, error); 484 EXPECT_EQ(net::ERR_IO_PENDING, error);
481 writer->CompletePendingWrite(); 485 writer->CompletePendingWrite();
482 EXPECT_TRUE(write_complete_); 486 EXPECT_TRUE(write_complete_);
483 EXPECT_EQ(net::OK, last_error_); 487 EXPECT_EQ(net::OK, last_error_);
484 EXPECT_TRUE(writer->AllExpectedWritesDone()); 488 EXPECT_TRUE(writer->AllExpectedWritesDone());
485 } 489 }
486 490
487 TEST_F(ServiceWorkerCacheWriterTest, PassthroughHeadersFailSync) { 491 TEST_P(ServiceWorkerCacheWriterTestP, PassthroughHeadersFailSync) {
488 const size_t kHeaderSize = 16; 492 const size_t kHeaderSize = 16;
489 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 493 MockServiceWorkerResponseWriter* writer = ExpectWriter();
490 writer->ExpectWriteInfo(kHeaderSize, false, net::ERR_FAILED); 494 writer->ExpectWriteInfo(kHeaderSize, false, net::ERR_FAILED);
491 Initialize(); 495 Initialize();
492 496
493 net::Error error = WriteHeaders(kHeaderSize); 497 net::Error error = WriteHeaders(kHeaderSize);
494 EXPECT_EQ(net::ERR_FAILED, error); 498 EXPECT_EQ(net::ERR_FAILED, error);
495 EXPECT_FALSE(write_complete_); 499 EXPECT_FALSE(write_complete_);
496 EXPECT_TRUE(writer->AllExpectedWritesDone()); 500 EXPECT_TRUE(writer->AllExpectedWritesDone());
497 EXPECT_EQ(0U, cache_writer_->bytes_written()); 501 EXPECT_EQ(0U, cache_writer_->bytes_written());
498 } 502 }
499 503
500 TEST_F(ServiceWorkerCacheWriterTest, PassthroughHeadersFailAsync) { 504 TEST_P(ServiceWorkerCacheWriterTestP, PassthroughHeadersFailAsync) {
501 size_t kHeaderSize = 16; 505 size_t kHeaderSize = 16;
502 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 506 MockServiceWorkerResponseWriter* writer = ExpectWriter();
503 writer->ExpectWriteInfo(kHeaderSize, true, net::ERR_FAILED); 507 writer->ExpectWriteInfo(kHeaderSize, true, net::ERR_FAILED);
504 Initialize(); 508 Initialize();
505 509
506 net::Error error = WriteHeaders(kHeaderSize); 510 net::Error error = WriteHeaders(kHeaderSize);
507 EXPECT_EQ(net::ERR_IO_PENDING, error); 511 EXPECT_EQ(net::ERR_IO_PENDING, error);
508 EXPECT_FALSE(write_complete_); 512 EXPECT_FALSE(write_complete_);
509 writer->CompletePendingWrite(); 513 writer->CompletePendingWrite();
510 EXPECT_TRUE(write_complete_); 514 EXPECT_TRUE(write_complete_);
511 EXPECT_EQ(net::ERR_FAILED, last_error_); 515 EXPECT_EQ(net::ERR_FAILED, last_error_);
512 EXPECT_TRUE(writer->AllExpectedWritesDone()); 516 EXPECT_TRUE(writer->AllExpectedWritesDone());
513 EXPECT_EQ(0U, cache_writer_->bytes_written()); 517 EXPECT_EQ(0U, cache_writer_->bytes_written());
514 } 518 }
515 519
516 TEST_F(ServiceWorkerCacheWriterTest, PassthroughDataFailSync) { 520 TEST_P(ServiceWorkerCacheWriterTestP, PassthroughDataFailSync) {
517 const std::string data = "abcdef"; 521 const std::string data = "abcdef";
518 522
519 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 523 MockServiceWorkerResponseWriter* writer = ExpectWriter();
520 writer->ExpectWriteInfoOk(data.size(), false); 524 writer->ExpectWriteInfoOk(data.size(), false);
521 writer->ExpectWriteData(data.size(), false, net::ERR_FAILED); 525 writer->ExpectWriteData(data.size(), false, net::ERR_FAILED);
522 Initialize(); 526 Initialize();
523 527
524 EXPECT_EQ(net::OK, WriteHeaders(data.size())); 528 EXPECT_EQ(net::OK, WriteHeaders(data.size()));
525 EXPECT_EQ(net::ERR_FAILED, WriteData(data)); 529 EXPECT_EQ(net::ERR_FAILED, WriteData(data));
526 EXPECT_TRUE(writer->AllExpectedWritesDone()); 530 EXPECT_TRUE(writer->AllExpectedWritesDone());
527 } 531 }
528 532
529 TEST_F(ServiceWorkerCacheWriterTest, PassthroughDataFailAsync) { 533 TEST_P(ServiceWorkerCacheWriterTestP, PassthroughDataFailAsync) {
530 const std::string data = "abcdef"; 534 const std::string data = "abcdef";
531 535
532 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 536 MockServiceWorkerResponseWriter* writer = ExpectWriter();
533 writer->ExpectWriteInfoOk(data.size(), false); 537 writer->ExpectWriteInfoOk(data.size(), false);
534 writer->ExpectWriteData(data.size(), true, net::ERR_FAILED); 538 writer->ExpectWriteData(data.size(), true, net::ERR_FAILED);
535 Initialize(); 539 Initialize();
536 540
537 EXPECT_EQ(net::OK, WriteHeaders(data.size())); 541 EXPECT_EQ(net::OK, WriteHeaders(data.size()));
538 542
539 EXPECT_EQ(net::ERR_IO_PENDING, WriteData(data)); 543 EXPECT_EQ(net::ERR_IO_PENDING, WriteData(data));
540 writer->CompletePendingWrite(); 544 writer->CompletePendingWrite();
541 EXPECT_EQ(net::ERR_FAILED, last_error_); 545 EXPECT_EQ(net::ERR_FAILED, last_error_);
542 EXPECT_TRUE(write_complete_); 546 EXPECT_TRUE(write_complete_);
543 EXPECT_TRUE(writer->AllExpectedWritesDone()); 547 EXPECT_TRUE(writer->AllExpectedWritesDone());
544 } 548 }
545 549
546 // Comparison tests: 550 // Comparison tests:
547 // For the Compare* tests below, the ServiceWorkerCacheWriter under test has a 551 // For the Compare* tests below, the ServiceWorkerCacheWriter under test has a
548 // reader for an existing cached response, so it will compare the response being 552 // reader for an existing cached response, so it will compare the response being
549 // written to it against the existing cached response. 553 // written to it against the existing cached response.
550 554
551 TEST_F(ServiceWorkerCacheWriterTest, CompareHeadersSync) { 555 TEST_P(ServiceWorkerCacheWriterTestP, CompareHeadersSync) {
552 size_t response_size = 3; 556 size_t response_size = 3;
553 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 557 MockServiceWorkerResponseWriter* writer = ExpectWriter();
554 MockServiceWorkerResponseReader* reader = ExpectReader(); 558 MockServiceWorkerResponseReader* reader = ExpectReader();
555 559
556 reader->ExpectReadInfoOk(response_size, false); 560 reader->ExpectReadInfoOk(response_size, false);
557 Initialize(); 561 Initialize();
558 562
559 net::Error error = WriteHeaders(response_size); 563 net::Error error = WriteHeaders(response_size);
560 EXPECT_EQ(net::OK, error); 564 EXPECT_EQ(net::OK, error);
561 EXPECT_TRUE(writer->AllExpectedWritesDone()); 565 EXPECT_TRUE(writer->AllExpectedWritesDone());
562 EXPECT_TRUE(reader->AllExpectedReadsDone()); 566 EXPECT_TRUE(reader->AllExpectedReadsDone());
563 } 567 }
564 568
565 TEST_F(ServiceWorkerCacheWriterTest, CompareDataOkSync) { 569 TEST_P(ServiceWorkerCacheWriterTestP, CompareDataOkSync) {
566 const std::string data1 = "abcdef"; 570 const std::string data1 = "abcdef";
567 size_t response_size = data1.size(); 571 size_t response_size = data1.size();
568 572
569 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 573 MockServiceWorkerResponseWriter* writer = ExpectWriter();
570 MockServiceWorkerResponseReader* reader = ExpectReader(); 574 MockServiceWorkerResponseReader* reader = ExpectReader();
571 575
572 reader->ExpectReadInfoOk(response_size, false); 576 reader->ExpectReadInfoOk(response_size, false);
573 reader->ExpectReadDataOk(data1, false); 577 reader->ExpectReadDataOk(data1, false);
574 Initialize(); 578 Initialize();
575 579
576 net::Error error = WriteHeaders(response_size); 580 net::Error error = WriteHeaders(response_size);
577 EXPECT_EQ(net::OK, error); 581 EXPECT_EQ(net::OK, error);
578 582
579 error = WriteData(data1); 583 error = WriteData(data1);
580 EXPECT_EQ(net::OK, error); 584 EXPECT_EQ(net::OK, error);
581 585
582 EXPECT_TRUE(writer->AllExpectedWritesDone()); 586 EXPECT_TRUE(writer->AllExpectedWritesDone());
583 EXPECT_TRUE(reader->AllExpectedReadsDone()); 587 EXPECT_TRUE(reader->AllExpectedReadsDone());
584 EXPECT_EQ(0U, cache_writer_->bytes_written()); 588 EXPECT_EQ(0U, cache_writer_->bytes_written());
585 } 589 }
586 590
587 TEST_F(ServiceWorkerCacheWriterTest, CompareHeadersFailSync) { 591 TEST_P(ServiceWorkerCacheWriterTestP, CompareHeadersFailSync) {
588 size_t response_size = 3; 592 size_t response_size = 3;
589 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 593 MockServiceWorkerResponseWriter* writer = ExpectWriter();
590 MockServiceWorkerResponseReader* reader = ExpectReader(); 594 MockServiceWorkerResponseReader* reader = ExpectReader();
591 595
592 reader->ExpectReadInfo(response_size, false, net::ERR_FAILED); 596 reader->ExpectReadInfo(response_size, false, net::ERR_FAILED);
593 Initialize(); 597 Initialize();
594 598
595 EXPECT_EQ(net::ERR_FAILED, WriteHeaders(response_size)); 599 EXPECT_EQ(net::ERR_FAILED, WriteHeaders(response_size));
596 EXPECT_TRUE(writer->AllExpectedWritesDone()); 600 EXPECT_TRUE(writer->AllExpectedWritesDone());
597 EXPECT_TRUE(reader->AllExpectedReadsDone()); 601 EXPECT_TRUE(reader->AllExpectedReadsDone());
598 } 602 }
599 603
600 TEST_F(ServiceWorkerCacheWriterTest, CompareDataFailSync) { 604 TEST_P(ServiceWorkerCacheWriterTestP, CompareDataFailSync) {
601 const std::string data1 = "abcdef"; 605 const std::string data1 = "abcdef";
602 size_t response_size = data1.size(); 606 size_t response_size = data1.size();
603 607
604 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 608 MockServiceWorkerResponseWriter* writer = ExpectWriter();
605 MockServiceWorkerResponseReader* reader = ExpectReader(); 609 MockServiceWorkerResponseReader* reader = ExpectReader();
606 610
607 reader->ExpectReadInfoOk(response_size, false); 611 reader->ExpectReadInfoOk(response_size, false);
608 reader->ExpectReadData(data1.c_str(), data1.length(), false, net::ERR_FAILED); 612 reader->ExpectReadData(data1.c_str(), data1.length(), false, net::ERR_FAILED);
609 Initialize(); 613 Initialize();
610 614
611 net::Error error = WriteHeaders(response_size); 615 net::Error error = WriteHeaders(response_size);
612 EXPECT_EQ(net::OK, error); 616 EXPECT_EQ(net::OK, error);
613 617
614 EXPECT_EQ(net::ERR_FAILED, WriteData(data1)); 618 EXPECT_EQ(net::ERR_FAILED, WriteData(data1));
615 619
616 EXPECT_TRUE(writer->AllExpectedWritesDone()); 620 EXPECT_TRUE(writer->AllExpectedWritesDone());
617 EXPECT_TRUE(reader->AllExpectedReadsDone()); 621 EXPECT_TRUE(reader->AllExpectedReadsDone());
618 EXPECT_EQ(0U, cache_writer_->bytes_written()); 622 EXPECT_EQ(0U, cache_writer_->bytes_written());
619 } 623 }
620 624
621 TEST_F(ServiceWorkerCacheWriterTest, CompareShortCacheReads) { 625 TEST_P(ServiceWorkerCacheWriterTestP, CompareShortCacheReads) {
622 const size_t kHeaderSize = 16; 626 const size_t kHeaderSize = 16;
623 const std::string& data1 = "abcdef"; 627 const std::string& data1 = "abcdef";
624 const std::string& cache_data2 = "ghi"; 628 const std::string& cache_data2 = "ghi";
625 const std::string& cache_data3 = "j"; 629 const std::string& cache_data3 = "j";
626 const std::string& cache_data4 = "kl"; 630 const std::string& cache_data4 = "kl";
627 const std::string& net_data2 = "ghijkl"; 631 const std::string& net_data2 = "ghijkl";
628 const std::string& data5 = "mnopqrst"; 632 const std::string& data5 = "mnopqrst";
629 633
630 MockServiceWorkerResponseReader* reader = ExpectReader(); 634 MockServiceWorkerResponseReader* reader = ExpectReader();
631 reader->ExpectReadInfo(kHeaderSize, false, kHeaderSize); 635 reader->ExpectReadInfo(kHeaderSize, false, kHeaderSize);
632 reader->ExpectReadDataOk(data1, false); 636 reader->ExpectReadDataOk(data1, false);
633 reader->ExpectReadDataOk(cache_data2, false); 637 reader->ExpectReadDataOk(cache_data2, false);
634 reader->ExpectReadDataOk(cache_data3, false); 638 reader->ExpectReadDataOk(cache_data3, false);
635 reader->ExpectReadDataOk(cache_data4, false); 639 reader->ExpectReadDataOk(cache_data4, false);
636 reader->ExpectReadDataOk(data5, false); 640 reader->ExpectReadDataOk(data5, false);
637 Initialize(); 641 Initialize();
638 642
639 net::Error error = WriteHeaders(kHeaderSize); 643 net::Error error = WriteHeaders(kHeaderSize);
640 EXPECT_EQ(net::OK, error); 644 EXPECT_EQ(net::OK, error);
641 error = WriteData(data1); 645 error = WriteData(data1);
642 EXPECT_EQ(net::OK, error); 646 EXPECT_EQ(net::OK, error);
643 error = WriteData(net_data2); 647 error = WriteData(net_data2);
644 EXPECT_EQ(net::OK, error); 648 EXPECT_EQ(net::OK, error);
645 error = WriteData(data5); 649 error = WriteData(data5);
646 EXPECT_EQ(net::OK, error); 650 EXPECT_EQ(net::OK, error);
647 EXPECT_TRUE(reader->AllExpectedReadsDone()); 651 EXPECT_TRUE(reader->AllExpectedReadsDone());
648 EXPECT_EQ(0U, cache_writer_->bytes_written()); 652 EXPECT_EQ(0U, cache_writer_->bytes_written());
649 } 653 }
650 654
651 TEST_F(ServiceWorkerCacheWriterTest, CompareDataOkAsync) { 655 TEST_P(ServiceWorkerCacheWriterTestP, CompareDataOkAsync) {
652 const std::string data1 = "abcdef"; 656 const std::string data1 = "abcdef";
653 size_t response_size = data1.size(); 657 size_t response_size = data1.size();
654 658
655 MockServiceWorkerResponseReader* reader = ExpectReader(); 659 MockServiceWorkerResponseReader* reader = ExpectReader();
656 660
657 reader->ExpectReadInfoOk(response_size, true); 661 reader->ExpectReadInfoOk(response_size, true);
658 reader->ExpectReadDataOk(data1, true); 662 reader->ExpectReadDataOk(data1, true);
659 Initialize(); 663 Initialize();
660 664
661 net::Error error = WriteHeaders(response_size); 665 net::Error error = WriteHeaders(response_size);
662 EXPECT_EQ(net::ERR_IO_PENDING, error); 666 EXPECT_EQ(net::ERR_IO_PENDING, error);
663 reader->CompletePendingRead(); 667 reader->CompletePendingRead();
664 668
665 error = WriteData(data1); 669 error = WriteData(data1);
666 EXPECT_EQ(net::ERR_IO_PENDING, error); 670 EXPECT_EQ(net::ERR_IO_PENDING, error);
667 reader->CompletePendingRead(); 671 reader->CompletePendingRead();
668 672
669 EXPECT_TRUE(reader->AllExpectedReadsDone()); 673 EXPECT_TRUE(reader->AllExpectedReadsDone());
670 EXPECT_EQ(0U, cache_writer_->bytes_written()); 674 EXPECT_EQ(0U, cache_writer_->bytes_written());
671 } 675 }
672 676
673 TEST_F(ServiceWorkerCacheWriterTest, CompareDataManyOkAsync) { 677 TEST_P(ServiceWorkerCacheWriterTestP, CompareDataManyOkAsync) {
674 const std::string expected_data[] = { 678 const std::string expected_data[] = {
675 "abcdef", "ghijkl", "mnopqr", "stuvwxyz", 679 "abcdef", "ghijkl", "mnopqr", "stuvwxyz",
676 }; 680 };
677 size_t response_size = 0; 681 size_t response_size = 0;
678 for (size_t i = 0; i < arraysize(expected_data); ++i) 682 for (size_t i = 0; i < arraysize(expected_data); ++i)
679 response_size += expected_data[i].size(); 683 response_size += expected_data[i].size();
680 684
681 MockServiceWorkerResponseReader* reader = ExpectReader(); 685 MockServiceWorkerResponseReader* reader = ExpectReader();
682 686
683 reader->ExpectReadInfoOk(response_size, true); 687 reader->ExpectReadInfoOk(response_size, true);
(...skipping 14 matching lines...) Expand all
698 } 702 }
699 703
700 EXPECT_TRUE(reader->AllExpectedReadsDone()); 704 EXPECT_TRUE(reader->AllExpectedReadsDone());
701 EXPECT_EQ(0U, cache_writer_->bytes_written()); 705 EXPECT_EQ(0U, cache_writer_->bytes_written());
702 } 706 }
703 707
704 // This test writes headers and three data blocks data1, data2, data3; data2 708 // This test writes headers and three data blocks data1, data2, data3; data2
705 // differs in the cached version. The writer should be asked to rewrite the 709 // differs in the cached version. The writer should be asked to rewrite the
706 // headers and body with the new value, and the copy reader should be asked to 710 // headers and body with the new value, and the copy reader should be asked to
707 // read the header and data1. 711 // read the header and data1.
708 TEST_F(ServiceWorkerCacheWriterTest, CompareFailedCopySync) { 712 TEST_P(ServiceWorkerCacheWriterTestP, CompareFailedCopySync) {
709 std::string data1 = "abcdef"; 713 std::string data1 = "abcdef";
710 std::string cache_data2 = "ghijkl"; 714 std::string cache_data2 = "ghijkl";
711 std::string net_data2 = "mnopqr"; 715 std::string net_data2 = "mnopqr";
712 std::string data3 = "stuvwxyz"; 716 std::string data3 = "stuvwxyz";
713 size_t cache_response_size = data1.size() + cache_data2.size() + data3.size(); 717 size_t cache_response_size = data1.size() + cache_data2.size() + data3.size();
714 size_t net_response_size = data1.size() + net_data2.size() + data3.size(); 718 size_t net_response_size = data1.size() + net_data2.size() + data3.size();
715 719
716 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 720 MockServiceWorkerResponseWriter* writer = ExpectWriter();
717 MockServiceWorkerResponseReader* compare_reader = ExpectReader(); 721 MockServiceWorkerResponseReader* compare_reader = ExpectReader();
718 MockServiceWorkerResponseReader* copy_reader = ExpectReader(); 722 MockServiceWorkerResponseReader* copy_reader = ExpectReader();
(...skipping 20 matching lines...) Expand all
739 EXPECT_EQ(net::OK, error); 743 EXPECT_EQ(net::OK, error);
740 error = WriteData(data3); 744 error = WriteData(data3);
741 EXPECT_EQ(net::OK, error); 745 EXPECT_EQ(net::OK, error);
742 746
743 EXPECT_TRUE(writer->AllExpectedWritesDone()); 747 EXPECT_TRUE(writer->AllExpectedWritesDone());
744 EXPECT_TRUE(compare_reader->AllExpectedReadsDone()); 748 EXPECT_TRUE(compare_reader->AllExpectedReadsDone());
745 EXPECT_TRUE(copy_reader->AllExpectedReadsDone()); 749 EXPECT_TRUE(copy_reader->AllExpectedReadsDone());
746 } 750 }
747 751
748 // Tests behavior when the cached data is shorter than the network data. 752 // Tests behavior when the cached data is shorter than the network data.
749 TEST_F(ServiceWorkerCacheWriterTest, CompareFailedCopyShort) { 753 TEST_P(ServiceWorkerCacheWriterTestP, CompareFailedCopyShort) {
750 std::string data1 = "abcdef"; 754 std::string data1 = "abcdef";
751 std::string cache_data2 = "mnop"; 755 std::string cache_data2 = "mnop";
752 std::string net_data2 = "mnopqr"; 756 std::string net_data2 = "mnopqr";
753 std::string data3 = "stuvwxyz"; 757 std::string data3 = "stuvwxyz";
754 size_t cache_response_size = data1.size() + cache_data2.size() + data3.size(); 758 size_t cache_response_size = data1.size() + cache_data2.size() + data3.size();
755 size_t net_response_size = data1.size() + net_data2.size() + data3.size(); 759 size_t net_response_size = data1.size() + net_data2.size() + data3.size();
756 760
757 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 761 MockServiceWorkerResponseWriter* writer = ExpectWriter();
758 MockServiceWorkerResponseReader* compare_reader = ExpectReader(); 762 MockServiceWorkerResponseReader* compare_reader = ExpectReader();
759 MockServiceWorkerResponseReader* copy_reader = ExpectReader(); 763 MockServiceWorkerResponseReader* copy_reader = ExpectReader();
(...skipping 21 matching lines...) Expand all
781 EXPECT_EQ(net::OK, error); 785 EXPECT_EQ(net::OK, error);
782 error = WriteData(data3); 786 error = WriteData(data3);
783 EXPECT_EQ(net::OK, error); 787 EXPECT_EQ(net::OK, error);
784 788
785 EXPECT_TRUE(writer->AllExpectedWritesDone()); 789 EXPECT_TRUE(writer->AllExpectedWritesDone());
786 EXPECT_TRUE(compare_reader->AllExpectedReadsDone()); 790 EXPECT_TRUE(compare_reader->AllExpectedReadsDone());
787 EXPECT_TRUE(copy_reader->AllExpectedReadsDone()); 791 EXPECT_TRUE(copy_reader->AllExpectedReadsDone());
788 } 792 }
789 793
790 // Tests behavior when the cached data is longer than the network data. 794 // Tests behavior when the cached data is longer than the network data.
791 TEST_F(ServiceWorkerCacheWriterTest, CompareFailedCopyLong) { 795 TEST_P(ServiceWorkerCacheWriterTestP, CompareFailedCopyLong) {
792 std::string data1 = "abcdef"; 796 std::string data1 = "abcdef";
793 std::string cache_data2 = "mnop"; 797 std::string cache_data2 = "mnop";
794 std::string net_data2 = "mnop"; 798 std::string net_data2 = "mnop";
795 std::string cache_data3 = "qr"; 799 std::string cache_data3 = "qr";
796 size_t cached_size = data1.size() + cache_data2.size() + cache_data3.size(); 800 size_t cached_size = data1.size() + cache_data2.size() + cache_data3.size();
797 size_t net_size = data1.size() + net_data2.size(); 801 size_t net_size = data1.size() + net_data2.size();
798 802
799 MockServiceWorkerResponseWriter* writer = ExpectWriter(); 803 MockServiceWorkerResponseWriter* writer = ExpectWriter();
800 MockServiceWorkerResponseReader* compare_reader = ExpectReader(); 804 MockServiceWorkerResponseReader* compare_reader = ExpectReader();
801 MockServiceWorkerResponseReader* copy_reader = ExpectReader(); 805 MockServiceWorkerResponseReader* copy_reader = ExpectReader();
(...skipping 22 matching lines...) Expand all
824 error = WriteData(net_data2); 828 error = WriteData(net_data2);
825 EXPECT_EQ(net::OK, error); 829 EXPECT_EQ(net::OK, error);
826 error = WriteData(""); 830 error = WriteData("");
827 EXPECT_EQ(net::OK, error); 831 EXPECT_EQ(net::OK, error);
828 832
829 EXPECT_TRUE(writer->AllExpectedWritesDone()); 833 EXPECT_TRUE(writer->AllExpectedWritesDone());
830 EXPECT_TRUE(compare_reader->AllExpectedReadsDone()); 834 EXPECT_TRUE(compare_reader->AllExpectedReadsDone());
831 EXPECT_TRUE(copy_reader->AllExpectedReadsDone()); 835 EXPECT_TRUE(copy_reader->AllExpectedReadsDone());
832 } 836 }
833 837
838 INSTANTIATE_TEST_CASE_P(ServiceWorkerCacheWriterTest,
839 ServiceWorkerCacheWriterTestP,
840 testing::Bool());
841
834 } // namespace 842 } // namespace
835 } // namespace content 843 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698