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

Unified Diff: content/browser/service_worker/service_worker_version_unittest.cc

Issue 1579413004: Move push event dispatching out of ServiceWorkerVersion. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698