Index: content/browser/service_worker/service_worker_version_unittest.cc |
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc |
index f3d1aeb8f70d367dfb10055d6a6384b299f7d614..787aa475b020ef7d24cc9cae2d4759a9cc4899fb 100644 |
--- a/content/browser/service_worker/service_worker_version_unittest.cc |
+++ b/content/browser/service_worker/service_worker_version_unittest.cc |
@@ -240,6 +240,28 @@ class ServiceWorkerVersionTest : public testing::Test { |
helper_.reset(); |
} |
+ void SimulateDispatchEvent() { |
+ ServiceWorkerStatusCode status = |
+ SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value |
+ |
+ // Make sure worker is running. |
+ version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(SERVICE_WORKER_OK, status); |
+ EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
+ |
+ // Start request, as if an event is being dispatched. |
+ int request_id = |
+ version_->StartRequest(ServiceWorkerMetrics::EventType::PUSH, |
+ CreateReceiverOnCurrentThread(&status)); |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ // And finish request, as if a response to the event was received. |
+ EXPECT_TRUE(version_->FinishRequest(request_id)); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(SERVICE_WORKER_OK, status); |
+ } |
+ |
TestBrowserThreadBundle thread_bundle_; |
scoped_ptr<MessageReceiver> helper_; |
scoped_refptr<ServiceWorkerRegistration> registration_; |
@@ -702,16 +724,11 @@ TEST_F(ServiceWorkerVersionTest, StoppingBeforeDestruct) { |
// Test that update isn't triggered for a non-stale worker. |
TEST_F(ServiceWorkerVersionTest, StaleUpdate_FreshWorker) { |
- ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
registration_->SetActiveVersion(version_); |
registration_->set_last_update_check(base::Time::Now()); |
- version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), |
- std::string()); |
- base::RunLoop().RunUntilIdle(); |
+ SimulateDispatchEvent(); |
- EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_TRUE(version_->stale_time_.is_null()); |
EXPECT_FALSE(version_->update_timer_.IsRunning()); |
} |
@@ -739,10 +756,7 @@ TEST_F(ServiceWorkerVersionTest, StaleUpdate_StartWorker) { |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
registration_->SetActiveVersion(version_); |
registration_->set_last_update_check(GetYesterday()); |
- version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), |
- std::string()); |
- base::RunLoop().RunUntilIdle(); |
- EXPECT_EQ(SERVICE_WORKER_OK, status); |
+ SimulateDispatchEvent(); |
EXPECT_FALSE(version_->stale_time_.is_null()); |
EXPECT_FALSE(version_->update_timer_.IsRunning()); |
@@ -756,16 +770,11 @@ TEST_F(ServiceWorkerVersionTest, StaleUpdate_StartWorker) { |
// Test that staleness is detected on a running worker. |
TEST_F(ServiceWorkerVersionTest, StaleUpdate_RunningWorker) { |
- ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- |
// Start a fresh worker. |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
registration_->SetActiveVersion(version_); |
registration_->set_last_update_check(base::Time::Now()); |
- version_->DispatchPushEvent(CreateReceiverOnCurrentThread(&status), |
- std::string()); |
- base::RunLoop().RunUntilIdle(); |
- EXPECT_EQ(SERVICE_WORKER_OK, status); |
+ SimulateDispatchEvent(); |
EXPECT_TRUE(version_->stale_time_.is_null()); |
// Simulate it running for a day. It will be marked stale. |
@@ -797,11 +806,16 @@ TEST_F(ServiceWorkerVersionTest, StaleUpdate_DoNotDeferTimer) { |
ServiceWorkerVersion::kStartNewWorkerTimeoutMinutes + 1); |
version_->stale_time_ = stale_time; |
+ // Make sure worker is running. |
+ version_->StartWorker(base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
+ |
// Stale time is not deferred. |
- version_->DispatchPushEvent( |
- base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); |
- version_->DispatchPushEvent( |
- base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); |
+ version_->StartRequest(ServiceWorkerMetrics::EventType::PUSH, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ version_->StartRequest(ServiceWorkerMetrics::EventType::PUSH, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
EXPECT_EQ(stale_time, version_->stale_time_); |
// Timeout triggers the update. |
@@ -811,12 +825,18 @@ TEST_F(ServiceWorkerVersionTest, StaleUpdate_DoNotDeferTimer) { |
// Update timer is not deferred. |
base::TimeTicks run_time = version_->update_timer_.desired_run_time(); |
- version_->DispatchPushEvent( |
- base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); |
- version_->DispatchPushEvent( |
- base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); |
- version_->DispatchPushEvent( |
- base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string()); |
+ int request_id1 = version_->StartRequest( |
+ ServiceWorkerMetrics::EventType::PUSH, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ int request_id2 = version_->StartRequest( |
+ ServiceWorkerMetrics::EventType::PUSH, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ int request_id3 = version_->StartRequest( |
+ ServiceWorkerMetrics::EventType::PUSH, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id1)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id2)); |
+ EXPECT_TRUE(version_->FinishRequest(request_id3)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_TRUE(version_->stale_time_.is_null()); |
EXPECT_EQ(run_time, version_->update_timer_.desired_run_time()); |