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

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: hopefully correct tests 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..5826014e13c0b9b2c75787130462425180e148c3 100644
--- a/content/browser/service_worker/service_worker_version_unittest.cc
+++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -240,6 +240,30 @@ class ServiceWorkerVersionTest : public testing::Test {
helper_.reset();
}
+ void SimulateDispatchEvent() {
+ ServiceWorkerStatusCode status =
+ SERVICE_WORKER_ERROR_MAX_VALUE; // dummy value
+
+ // Make sure worker is running.
+ scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner);
+ version_->RunAfterStartWorker(runner->QuitClosure(),
+ CreateReceiverOnCurrentThread(&status));
+ runner->Run();
+ EXPECT_EQ(SERVICE_WORKER_ERROR_MAX_VALUE, 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_ERROR_MAX_VALUE, status);
+ }
+
TestBrowserThreadBundle thread_bundle_;
scoped_ptr<MessageReceiver> helper_;
scoped_refptr<ServiceWorkerRegistration> registration_;
@@ -702,16 +726,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 +758,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 +772,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.
@@ -798,10 +809,13 @@ TEST_F(ServiceWorkerVersionTest, StaleUpdate_DoNotDeferTimer) {
version_->stale_time_ = stale_time;
// Stale time is not deferred.
- version_->DispatchPushEvent(
- base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string());
- version_->DispatchPushEvent(
- base::Bind(&ServiceWorkerUtils::NoOpStatusCallback), std::string());
+ version_->RunAfterStartWorker(
+ base::Bind(&base::DoNothing),
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
+ version_->RunAfterStartWorker(
+ base::Bind(&base::DoNothing),
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback));
+ base::RunLoop().RunUntilIdle();
EXPECT_EQ(stale_time, version_->stale_time_);
// Timeout triggers the update.
@@ -811,12 +825,9 @@ 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());
+ SimulateDispatchEvent();
+ SimulateDispatchEvent();
+ SimulateDispatchEvent();
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