Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/embedded_worker_instance.h" | 5 #include "content/browser/service_worker/embedded_worker_instance.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 514 EXPECT_EQ(SERVICE_WORKER_OK, status); | 514 EXPECT_EQ(SERVICE_WORKER_OK, status); |
| 515 ASSERT_EQ(3u, events_.size()); | 515 ASSERT_EQ(3u, events_.size()); |
| 516 EXPECT_EQ(PROCESS_ALLOCATED, events_[0].type); | 516 EXPECT_EQ(PROCESS_ALLOCATED, events_[0].type); |
| 517 EXPECT_EQ(START_WORKER_MESSAGE_SENT, events_[1].type); | 517 EXPECT_EQ(START_WORKER_MESSAGE_SENT, events_[1].type); |
| 518 EXPECT_EQ(STARTED, events_[2].type); | 518 EXPECT_EQ(STARTED, events_[2].type); |
| 519 | 519 |
| 520 // Tear down the worker. | 520 // Tear down the worker. |
| 521 worker->Stop(); | 521 worker->Stop(); |
| 522 } | 522 } |
| 523 | 523 |
| 524 class DontReceiveResumeAfterDownloadInstanceClient | |
| 525 : public EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient { | |
| 526 public: | |
| 527 explicit DontReceiveResumeAfterDownloadInstanceClient( | |
| 528 base::WeakPtr<EmbeddedWorkerTestHelper> helper, | |
| 529 bool* is_resume_after_download_called) | |
| 530 : EmbeddedWorkerTestHelper::MockEmbeddedWorkerInstanceClient(helper), | |
| 531 is_resume_after_download_called_(is_resume_after_download_called) {} | |
| 532 | |
| 533 private: | |
| 534 void ResumeAfterDownload() override { | |
| 535 *is_resume_after_download_called_ = true; | |
| 536 } | |
| 537 | |
| 538 bool* const is_resume_after_download_called_; | |
|
falken
2017/01/18 03:57:38
nit: "was_" seems like better grammar
shimazu
2017/01/18 05:00:46
Done.
| |
| 539 }; | |
| 540 | |
| 524 TEST_F(EmbeddedWorkerInstanceTest, StopDuringPausedAfterDownload) { | 541 TEST_F(EmbeddedWorkerInstanceTest, StopDuringPausedAfterDownload) { |
| 525 const int64_t version_id = 55L; | 542 const int64_t version_id = 55L; |
| 526 const GURL scope("http://example.com/"); | 543 const GURL scope("http://example.com/"); |
| 527 const GURL url("http://example.com/worker.js"); | 544 const GURL url("http://example.com/worker.js"); |
| 528 | 545 |
| 546 bool is_resume_after_download_called = false; | |
| 547 helper_->RegisterMockInstanceClient( | |
| 548 base::MakeUnique<DontReceiveResumeAfterDownloadInstanceClient>( | |
| 549 helper_->AsWeakPtr(), &is_resume_after_download_called)); | |
| 550 | |
| 529 std::unique_ptr<EmbeddedWorkerInstance> worker = | 551 std::unique_ptr<EmbeddedWorkerInstance> worker = |
| 530 embedded_worker_registry()->CreateWorker(); | 552 embedded_worker_registry()->CreateWorker(); |
| 531 worker->AddListener(this); | 553 worker->AddListener(this); |
| 532 | 554 |
| 533 // Run the start worker sequence until pause after download. | 555 // Run the start worker sequence until pause after download. |
| 534 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; | 556 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_MAX_VALUE; |
| 535 | 557 |
| 536 std::unique_ptr<EmbeddedWorkerStartParams> params = | 558 std::unique_ptr<EmbeddedWorkerStartParams> params = |
| 537 CreateStartParams(version_id, scope, url); | 559 CreateStartParams(version_id, scope, url); |
| 538 params->pause_after_download = true; | 560 params->pause_after_download = true; |
| 539 worker->Start( | 561 worker->Start( |
| 540 std::move(params), CreateEventDispatcher(), | 562 std::move(params), CreateEventDispatcher(), |
| 541 base::Bind(&SaveStatusAndCall, &status, base::Bind(&base::DoNothing))); | 563 base::Bind(&SaveStatusAndCall, &status, base::Bind(&base::DoNothing))); |
| 542 base::RunLoop().RunUntilIdle(); | 564 base::RunLoop().RunUntilIdle(); |
| 543 | 565 |
| 544 // Make the worker stopping and attempt to send a resume after download | 566 // Make the worker stopping and attempt to send a resume after download |
| 545 // message. | 567 // message. |
| 546 worker->Stop(); | 568 worker->Stop(); |
| 547 worker->ResumeAfterDownload(); | 569 worker->ResumeAfterDownload(); |
| 548 base::RunLoop().RunUntilIdle(); | 570 base::RunLoop().RunUntilIdle(); |
| 549 | 571 |
| 550 // The resume after download message should not have been sent. | 572 // The resume after download message should not have been sent. |
| 551 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, worker->status()); | 573 EXPECT_EQ(EmbeddedWorkerStatus::STOPPED, worker->status()); |
| 552 EXPECT_FALSE(ipc_sink()->GetFirstMessageMatching( | 574 EXPECT_FALSE(is_resume_after_download_called); |
| 553 EmbeddedWorkerMsg_ResumeAfterDownload::ID)); | |
| 554 } | 575 } |
| 555 | 576 |
| 556 TEST_F(EmbeddedWorkerInstanceTest, StopAfterSendingStartWorkerMessage) { | 577 TEST_F(EmbeddedWorkerInstanceTest, StopAfterSendingStartWorkerMessage) { |
| 557 const int64_t version_id = 55L; | 578 const int64_t version_id = 55L; |
| 558 const GURL scope("http://example.com/"); | 579 const GURL scope("http://example.com/"); |
| 559 const GURL url("http://example.com/worker.js"); | 580 const GURL url("http://example.com/worker.js"); |
| 560 | 581 |
| 561 helper_.reset(new StalledInStartWorkerHelper); | 582 helper_.reset(new StalledInStartWorkerHelper); |
| 562 std::unique_ptr<EmbeddedWorkerInstance> worker = | 583 std::unique_ptr<EmbeddedWorkerInstance> worker = |
| 563 embedded_worker_registry()->CreateWorker(); | 584 embedded_worker_registry()->CreateWorker(); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 719 | 740 |
| 720 // Worker should handle the sudden shutdown as detach. | 741 // Worker should handle the sudden shutdown as detach. |
| 721 ASSERT_EQ(3u, events_.size()); | 742 ASSERT_EQ(3u, events_.size()); |
| 722 EXPECT_EQ(PROCESS_ALLOCATED, events_[0].type); | 743 EXPECT_EQ(PROCESS_ALLOCATED, events_[0].type); |
| 723 EXPECT_EQ(START_WORKER_MESSAGE_SENT, events_[1].type); | 744 EXPECT_EQ(START_WORKER_MESSAGE_SENT, events_[1].type); |
| 724 EXPECT_EQ(DETACHED, events_[2].type); | 745 EXPECT_EQ(DETACHED, events_[2].type); |
| 725 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, events_[2].status); | 746 EXPECT_EQ(EmbeddedWorkerStatus::STARTING, events_[2].status); |
| 726 } | 747 } |
| 727 | 748 |
| 728 } // namespace content | 749 } // namespace content |
| OLD | NEW |