Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/run_loop.h" | 6 #include "base/run_loop.h" |
| 7 #include "content/browser/message_port_service.h" | |
| 7 #include "content/browser/service_worker/embedded_worker_registry.h" | 8 #include "content/browser/service_worker/embedded_worker_registry.h" |
| 8 #include "content/browser/service_worker/embedded_worker_test_helper.h" | 9 #include "content/browser/service_worker/embedded_worker_test_helper.h" |
| 9 #include "content/browser/service_worker/service_worker_context_core.h" | 10 #include "content/browser/service_worker/service_worker_context_core.h" |
| 10 #include "content/browser/service_worker/service_worker_registration.h" | 11 #include "content/browser/service_worker/service_worker_registration.h" |
| 11 #include "content/browser/service_worker/service_worker_test_utils.h" | 12 #include "content/browser/service_worker/service_worker_test_utils.h" |
| 12 #include "content/browser/service_worker/service_worker_utils.h" | 13 #include "content/browser/service_worker/service_worker_utils.h" |
| 13 #include "content/browser/service_worker/service_worker_version.h" | 14 #include "content/browser/service_worker/service_worker_version.h" |
| 14 #include "content/public/test/test_browser_thread_bundle.h" | 15 #include "content/public/test/test_browser_thread_bundle.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 16 | 17 |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 | 111 |
| 111 void OnMessageFromWorker(int value) { received_values_.push_back(value); } | 112 void OnMessageFromWorker(int value) { received_values_.push_back(value); } |
| 112 const std::vector<int>& received_values() const { return received_values_; } | 113 const std::vector<int>& received_values() const { return received_values_; } |
| 113 | 114 |
| 114 private: | 115 private: |
| 115 EmbeddedWorkerInstance* instance_; | 116 EmbeddedWorkerInstance* instance_; |
| 116 std::vector<int> received_values_; | 117 std::vector<int> received_values_; |
| 117 DISALLOW_COPY_AND_ASSIGN(MessageReceiverFromWorker); | 118 DISALLOW_COPY_AND_ASSIGN(MessageReceiverFromWorker); |
| 118 }; | 119 }; |
| 119 | 120 |
| 121 void SetUpDummyMessagePort(std::vector<TransferredMessagePort>* ports) { | |
| 122 int port_id = -1; | |
| 123 MessagePortService::GetInstance()->Create(MSG_ROUTING_NONE, NULL, &port_id); | |
|
nhiroki
2015/06/10 08:00:24
nit: nullptr
kinuko
2015/06/10 14:33:30
Done.
| |
| 124 TransferredMessagePort dummy_port; | |
| 125 dummy_port.id = port_id; | |
| 126 ports->push_back(dummy_port); | |
| 127 } | |
| 128 | |
| 120 } // namespace | 129 } // namespace |
| 121 | 130 |
| 122 class ServiceWorkerVersionTest : public testing::Test { | 131 class ServiceWorkerVersionTest : public testing::Test { |
| 123 protected: | 132 protected: |
| 124 struct RunningStateListener : public ServiceWorkerVersion::Listener { | 133 struct RunningStateListener : public ServiceWorkerVersion::Listener { |
| 125 RunningStateListener() : last_status(ServiceWorkerVersion::STOPPED) {} | 134 RunningStateListener() : last_status(ServiceWorkerVersion::STOPPED) {} |
| 126 ~RunningStateListener() override {} | 135 ~RunningStateListener() override {} |
| 127 void OnRunningStateChanged(ServiceWorkerVersion* version) override { | 136 void OnRunningStateChanged(ServiceWorkerVersion* version) override { |
| 128 last_status = version->running_status(); | 137 last_status = version->running_status(); |
| 129 } | 138 } |
| (...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 471 status = SERVICE_WORKER_ERROR_FAILED; | 480 status = SERVICE_WORKER_ERROR_FAILED; |
| 472 version_->idle_time_ -= kOneSecond; | 481 version_->idle_time_ -= kOneSecond; |
| 473 idle_time = version_->idle_time_; | 482 idle_time = version_->idle_time_; |
| 474 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(), | 483 version_->DispatchFetchEvent(ServiceWorkerFetchRequest(), |
| 475 base::Bind(&base::DoNothing), | 484 base::Bind(&base::DoNothing), |
| 476 base::Bind(&ReceiveFetchResult, &status)); | 485 base::Bind(&ReceiveFetchResult, &status)); |
| 477 base::RunLoop().RunUntilIdle(); | 486 base::RunLoop().RunUntilIdle(); |
| 478 | 487 |
| 479 EXPECT_EQ(SERVICE_WORKER_OK, status); | 488 EXPECT_EQ(SERVICE_WORKER_OK, status); |
| 480 EXPECT_LT(idle_time, version_->idle_time_); | 489 EXPECT_LT(idle_time, version_->idle_time_); |
| 490 | |
| 491 // Dispatching a message event resets the idle time. | |
| 492 std::vector<TransferredMessagePort> ports; | |
| 493 SetUpDummyMessagePort(&ports); | |
| 494 status = SERVICE_WORKER_ERROR_FAILED; | |
| 495 version_->idle_time_ -= kOneSecond; | |
| 496 idle_time = version_->idle_time_; | |
| 497 version_->DispatchMessageEvent(base::string16(), ports, | |
| 498 CreateReceiverOnCurrentThread(&status)); | |
| 499 base::RunLoop().RunUntilIdle(); | |
| 500 MessagePortService::GetInstance()->Destroy(ports[0].id); | |
| 501 | |
| 502 EXPECT_EQ(SERVICE_WORKER_OK, status); | |
| 503 EXPECT_LT(idle_time, version_->idle_time_); | |
| 481 } | 504 } |
| 482 | 505 |
| 483 TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) { | 506 TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) { |
| 484 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; | 507 ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
| 485 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); | 508 version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
| 486 | 509 |
| 487 ASSERT_EQ(ServiceWorkerVersion::STARTING, version_->running_status()); | 510 ASSERT_EQ(ServiceWorkerVersion::STARTING, version_->running_status()); |
| 488 | 511 |
| 489 ASSERT_TRUE(version_->timeout_timer_.IsRunning()); | 512 ASSERT_TRUE(version_->timeout_timer_.IsRunning()); |
| 490 ASSERT_FALSE(version_->start_time_.is_null()); | 513 ASSERT_FALSE(version_->start_time_.is_null()); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 591 base::TimeTicks::Now() - | 614 base::TimeTicks::Now() - |
| 592 base::TimeDelta::FromMinutes( | 615 base::TimeDelta::FromMinutes( |
| 593 ServiceWorkerVersion::kStartWorkerTimeoutMinutes + 1); | 616 ServiceWorkerVersion::kStartWorkerTimeoutMinutes + 1); |
| 594 version_->timeout_timer_.user_task().Run(); | 617 version_->timeout_timer_.user_task().Run(); |
| 595 base::RunLoop().RunUntilIdle(); | 618 base::RunLoop().RunUntilIdle(); |
| 596 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); | 619 EXPECT_EQ(SERVICE_WORKER_ERROR_TIMEOUT, status); |
| 597 EXPECT_EQ(ServiceWorkerVersion::STOPPED, version_->running_status()); | 620 EXPECT_EQ(ServiceWorkerVersion::STOPPED, version_->running_status()); |
| 598 } | 621 } |
| 599 | 622 |
| 600 } // namespace content | 623 } // namespace content |
| OLD | NEW |