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 8744b98dd897645f9fc7ca170c18daf43f8bdb28..628d625f5f8f63e15ae77c7f18bfa5afb1da72d6 100644 |
--- a/content/browser/service_worker/service_worker_version_unittest.cc |
+++ b/content/browser/service_worker/service_worker_version_unittest.cc |
@@ -252,7 +252,7 @@ class ServiceWorkerVersionTest : public testing::Test { |
// Make sure worker is running. |
scoped_refptr<MessageLoopRunner> runner(new MessageLoopRunner); |
- version_->RunAfterStartWorker(runner->QuitClosure(), |
+ version_->RunAfterStartWorker(event_type, runner->QuitClosure(), |
CreateReceiverOnCurrentThread(&status)); |
runner->Run(); |
EXPECT_EQ(SERVICE_WORKER_ERROR_MAX_VALUE, status); |
@@ -387,15 +387,18 @@ TEST_F(ServiceWorkerVersionTest, ConcurrentStartAndStop) { |
ServiceWorkerStatusCode status1 = SERVICE_WORKER_ERROR_FAILED; |
ServiceWorkerStatusCode status2 = SERVICE_WORKER_ERROR_FAILED; |
ServiceWorkerStatusCode status3 = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status1)); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status2)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status1)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status2)); |
EXPECT_EQ(ServiceWorkerVersion::STARTING, version_->running_status()); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
// Call StartWorker() after it's started. |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status3)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status3)); |
base::RunLoop().RunUntilIdle(); |
// All should just succeed. |
@@ -422,7 +425,8 @@ TEST_F(ServiceWorkerVersionTest, ConcurrentStartAndStop) { |
status2 = SERVICE_WORKER_ERROR_FAILED; |
status3 = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status1)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status1)); |
EXPECT_EQ(ServiceWorkerVersion::STARTING, version_->running_status()); |
base::RunLoop().RunUntilIdle(); |
@@ -433,7 +437,8 @@ TEST_F(ServiceWorkerVersionTest, ConcurrentStartAndStop) { |
version_->StopWorker(CreateReceiverOnCurrentThread(&status2)); |
// And try calling StartWorker while StopWorker is in queue. |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status3)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status3)); |
EXPECT_EQ(ServiceWorkerVersion::STOPPING, version_->running_status()); |
base::RunLoop().RunUntilIdle(); |
@@ -468,7 +473,8 @@ TEST_F(ServiceWorkerVersionTest, DispatchEventToStoppedWorker) { |
TEST_F(ServiceWorkerVersionTest, StartUnregisteredButStillLiveWorker) { |
// Start the worker. |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
@@ -501,7 +507,8 @@ TEST_F(ServiceWorkerVersionTest, StartUnregisteredButStillLiveWorker) { |
TEST_F(ServiceWorkerVersionTest, ReceiveMessageFromWorker) { |
// Start worker. |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
EXPECT_EQ(ServiceWorkerVersion::STARTING, version_->running_status()); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
@@ -592,7 +599,8 @@ TEST_F(ServiceWorkerVersionTest, IdleTimeout) { |
// Verify the timer is running after the worker is started. |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_TRUE(version_->timeout_timer_.IsRunning()); |
@@ -607,7 +615,8 @@ TEST_F(ServiceWorkerVersionTest, IdleTimeout) { |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_TRUE(version_->timeout_timer_.IsRunning()); |
@@ -658,7 +667,8 @@ TEST_F(ServiceWorkerVersionTest, IdleTimeout) { |
TEST_F(ServiceWorkerVersionTest, SetDevToolsAttached) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
ASSERT_EQ(ServiceWorkerVersion::STARTING, version_->running_status()); |
@@ -690,7 +700,8 @@ TEST_F(ServiceWorkerVersionTest, StoppingBeforeDestruct) { |
version_->AddListener(&listener); |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -782,10 +793,10 @@ TEST_F(ServiceWorkerVersionTest, StaleUpdate_DoNotDeferTimer) { |
// Stale time is not deferred. |
version_->RunAfterStartWorker( |
- base::Bind(&base::DoNothing), |
+ ServiceWorkerMetrics::EventType::UNKNOWN, base::Bind(&base::DoNothing), |
base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
version_->RunAfterStartWorker( |
- base::Bind(&base::DoNothing), |
+ ServiceWorkerMetrics::EventType::UNKNOWN, base::Bind(&base::DoNothing), |
base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(stale_time, version_->stale_time_); |
@@ -809,7 +820,8 @@ TEST_F(ServiceWorkerVersionTest, RequestTimeout) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
base::RunLoop().RunUntilIdle(); |
// Create a request. |
@@ -836,7 +848,8 @@ TEST_F(ServiceWorkerVersionTest, RequestCustomizedTimeout) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
base::RunLoop().RunUntilIdle(); |
// Create a request that should expire Now(). |
@@ -861,7 +874,8 @@ TEST_F(ServiceWorkerVersionTest, RequestCustomizedTimeoutKill) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
base::RunLoop().RunUntilIdle(); |
// Create a request that should expire Now(). |
@@ -889,7 +903,8 @@ TEST_F(ServiceWorkerVersionTest, MixedRequestTimeouts) { |
SERVICE_WORKER_ERROR_NETWORK; // dummy value |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::FETCH, |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
base::RunLoop().RunUntilIdle(); |
// Create a fetch request that should expire sometime later. |
@@ -932,8 +947,8 @@ TEST_F(ServiceWorkerVersionTest, MixedRequestTimeouts) { |
TEST_F(ServiceWorkerFailToStartTest, RendererCrash) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
- version_->StartWorker( |
- CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
// Callback has not completed yet. |
@@ -957,7 +972,8 @@ TEST_F(ServiceWorkerFailToStartTest, Timeout) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
// Start starting the worker. |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
// Callback has not completed yet. |
@@ -981,7 +997,8 @@ TEST_F(ServiceWorkerFailToStartTest, Timeout) { |
TEST_F(ServiceWorkerStallInStoppingTest, DetachThenStart) { |
// Start a worker. |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1010,7 +1027,8 @@ TEST_F(ServiceWorkerStallInStoppingTest, DetachThenStart) { |
// Try to start the worker again. It should work. |
status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1027,7 +1045,8 @@ TEST_F(ServiceWorkerStallInStoppingTest, DetachThenStart) { |
TEST_F(ServiceWorkerStallInStoppingTest, DetachThenRestart) { |
// Start a worker. |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1039,7 +1058,8 @@ TEST_F(ServiceWorkerStallInStoppingTest, DetachThenRestart) { |
// Worker is now stalled in stopping. Add a start worker requset. |
ServiceWorkerStatusCode start_status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&start_status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&start_status)); |
// Simulate timeout. The worker should stop and get restarted. |
EXPECT_TRUE(version_->timeout_timer_.IsRunning()); |
@@ -1058,7 +1078,8 @@ TEST_F(ServiceWorkerVersionTest, RegisterForeignFetchScopes) { |
version_->SetStatus(ServiceWorkerVersion::INSTALLING); |
// Start a worker. |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_FAILED; |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1133,7 +1154,8 @@ TEST_F(ServiceWorkerVersionTest, RendererCrashDuringEvent) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1166,7 +1188,8 @@ TEST_F(ServiceWorkerVersionWithMojoTest, MojoService) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1190,7 +1213,8 @@ TEST_F(ServiceWorkerVersionTest, NonExistentMojoService) { |
ServiceWorkerStatusCode status = SERVICE_WORKER_ERROR_NETWORK; // dummy value |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1215,7 +1239,8 @@ TEST_F(ServiceWorkerVersionTest, DispatchEvent) { |
// Activate and start worker. |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1265,16 +1290,19 @@ TEST_F(ServiceWorkerFailToStartTest, FailingWorkerIsDisabled) { |
int64_t id = version_->version_id(); |
set_start_mode(MessageReceiverDisallowStart::StartMode::FAIL); |
// Fail once. |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, context->GetVersionFailureCount(id)); |
// Fail again. |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2, context->GetVersionFailureCount(id)); |
// Succeed. It should choose the "new process". |
set_start_mode(MessageReceiverDisallowStart::StartMode::SUCCEED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(helper_->new_render_process_id(), |
version_->embedded_worker()->process_id()); |
@@ -1285,22 +1313,26 @@ TEST_F(ServiceWorkerFailToStartTest, FailingWorkerIsDisabled) { |
// (2) Fail three times. The worker should be disabled. |
set_start_mode(MessageReceiverDisallowStart::StartMode::FAIL); |
// Fail once. |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(1, context->GetVersionFailureCount(id)); |
// Fail again. |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(2, context->GetVersionFailureCount(id)); |
// Fail again. |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(3, context->GetVersionFailureCount(id)); |
// The worker should be disabled. |
EXPECT_TRUE(version_->IsDisabled()); |
set_start_mode(MessageReceiverDisallowStart::StartMode::SUCCEED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::UNKNOWN, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_ERROR_DISABLED_WORKER, status); |
EXPECT_EQ(ServiceWorkerVersion::STOPPED, version_->running_status()); |
@@ -1319,7 +1351,8 @@ TEST_F(ServiceWorkerVersionTest, DispatchConcurrentEvent) { |
// Activate and start worker. |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1396,7 +1429,8 @@ TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Completed) { |
// Activate and start worker. |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |
@@ -1432,7 +1466,8 @@ TEST_F(ServiceWorkerVersionTest, DispatchSimpleEvent_Rejected) { |
// Activate and start worker. |
version_->SetStatus(ServiceWorkerVersion::ACTIVATED); |
- version_->StartWorker(CreateReceiverOnCurrentThread(&status)); |
+ version_->StartWorker(ServiceWorkerMetrics::EventType::SYNC, |
+ CreateReceiverOnCurrentThread(&status)); |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(SERVICE_WORKER_OK, status); |
EXPECT_EQ(ServiceWorkerVersion::RUNNING, version_->running_status()); |