Chromium Code Reviews| 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 3895f55d6a95f6db2522f1e4cb5517c194bfd23d..489018f7e858d0afdd5447250be8c134b1a69928 100644 |
| --- a/content/browser/service_worker/service_worker_version_unittest.cc |
| +++ b/content/browser/service_worker/service_worker_version_unittest.cc |
| @@ -238,6 +238,28 @@ class ServiceWorkerVersionTest : public testing::Test { |
| helper_.reset(); |
| } |
| + void SimulateDispatchEvent() { |
| + ServiceWorkerStatusCode status = |
| + SERVICE_WORKER_ERROR_NETWORK; // dummy value |
|
nhiroki
2016/01/15 01:03:42
nit: SERVICE_WORKER_ERROR_MAX_VALUE would be more
Marijn Kruisselbrink
2016/01/20 01:06:31
Done
|
| + |
| + // 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)); |
|
johnme
2016/01/18 19:06:19
The previous test was actually dispatching an even
Marijn Kruisselbrink
2016/01/20 01:06:31
Since StartRequest and FinishRequest are the only
johnme
2016/01/20 12:01:10
Ok, since nhiroki is happy that's probably fine th
nhiroki
2016/01/20 14:55:54
For these StaleUpdate_* tests, StartWorker is the
|
| + base::RunLoop().RunUntilIdle(); |
| + EXPECT_EQ(SERVICE_WORKER_OK, status); |
| + } |
| + |
| TestBrowserThreadBundle thread_bundle_; |
| scoped_ptr<MessageReceiver> helper_; |
| scoped_refptr<ServiceWorkerRegistration> registration_; |
| @@ -700,16 +722,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()); |
| } |
| @@ -737,10 +754,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()); |
| @@ -754,16 +768,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. |
| @@ -795,11 +804,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, |
|
johnme
2016/01/18 19:06:19
Ditto is this testing the same thing?
Marijn Kruisselbrink
2016/01/20 01:06:31
As I'm not entirely sure what this test is testing
johnme
2016/01/20 12:01:10
Ok, since nhiroki is happy that's probably fine th
nhiroki
2016/01/20 14:55:54
Hmmm... sorry, I completely overlooked this. As I
Marijn Kruisselbrink
2016/01/21 23:38:21
I changed these to call RunAfterStartWorker isntea
|
| + base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
| + version_->StartRequest(ServiceWorkerMetrics::EventType::PUSH, |
| + base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
|
nhiroki
2016/01/20 14:55:54
Can you call RunUntilIdle here?
(Actually this sh
Marijn Kruisselbrink
2016/01/21 23:38:21
Done. Yeah, I was confused for a while how this co
|
| EXPECT_EQ(stale_time, version_->stale_time_); |
| // Timeout triggers the update. |
| @@ -809,12 +823,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()); |