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

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

Issue 1795863006: service worker: Attribute purpose to start worker attempts for UMA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: patch for landing? Created 4 years, 9 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 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());

Powered by Google App Engine
This is Rietveld 408576698