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

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: Have a simplified combined StartRequest/DispatchEvent/FinishRequest method 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 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());

Powered by Google App Engine
This is Rietveld 408576698