Commit 78da8dce authored by Istiaque Ahmed's avatar Istiaque Ahmed Committed by Commit Bot

[Extensions SW] Add worker registering and starting UMAs.

This CL adds boolean histogram indicating whether extension's background
service worker script registering and starting succeeded or not.
This CL also adds timing for those.

Bug: None
Change-Id: I0fb31609b3c54bf21970b6ea39d7bcd50d369662
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2437786Reviewed-by: default avatarBrian White <bcwhite@chromium.org>
Reviewed-by: default avatarDavid Bertoni <dbertoni@chromium.org>
Commit-Queue: Istiaque Ahmed <lazyboy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#812371}
parent 3d5efafd
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include <vector> #include <vector>
#include "base/bind.h" #include "base/bind.h"
#include "base/metrics/histogram_macros.h"
#include "content/public/browser/browser_context.h" #include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_task_traits.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
...@@ -89,6 +90,7 @@ ServiceWorkerTaskQueue* ServiceWorkerTaskQueue::Get(BrowserContext* context) { ...@@ -89,6 +90,7 @@ ServiceWorkerTaskQueue* ServiceWorkerTaskQueue::Get(BrowserContext* context) {
// static // static
void ServiceWorkerTaskQueue::DidStartWorkerForScopeOnCoreThread( void ServiceWorkerTaskQueue::DidStartWorkerForScopeOnCoreThread(
const SequencedContextId& context_id, const SequencedContextId& context_id,
base::Time start_time,
base::WeakPtr<ServiceWorkerTaskQueue> task_queue, base::WeakPtr<ServiceWorkerTaskQueue> task_queue,
int64_t version_id, int64_t version_id,
int process_id, int process_id,
...@@ -96,15 +98,15 @@ void ServiceWorkerTaskQueue::DidStartWorkerForScopeOnCoreThread( ...@@ -96,15 +98,15 @@ void ServiceWorkerTaskQueue::DidStartWorkerForScopeOnCoreThread(
DCHECK_CURRENTLY_ON(content::ServiceWorkerContext::GetCoreThreadId()); DCHECK_CURRENTLY_ON(content::ServiceWorkerContext::GetCoreThreadId());
if (content::ServiceWorkerContext::IsServiceWorkerOnUIEnabled()) { if (content::ServiceWorkerContext::IsServiceWorkerOnUIEnabled()) {
if (task_queue) { if (task_queue) {
task_queue->DidStartWorkerForScope(context_id, version_id, process_id, task_queue->DidStartWorkerForScope(context_id, start_time, version_id,
thread_id); process_id, thread_id);
} }
} else { } else {
content::GetUIThreadTaskRunner({})->PostTask( content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE, FROM_HERE,
base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerForScope, base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerForScope,
task_queue, context_id, version_id, process_id, task_queue, context_id, start_time, version_id,
thread_id)); process_id, thread_id));
} }
} }
...@@ -133,7 +135,7 @@ void ServiceWorkerTaskQueue::StartServiceWorkerOnCoreThreadToRunTasks( ...@@ -133,7 +135,7 @@ void ServiceWorkerTaskQueue::StartServiceWorkerOnCoreThreadToRunTasks(
context_id.first.service_worker_scope(), context_id.first.service_worker_scope(),
base::BindOnce( base::BindOnce(
&ServiceWorkerTaskQueue::DidStartWorkerForScopeOnCoreThread, &ServiceWorkerTaskQueue::DidStartWorkerForScopeOnCoreThread,
context_id, task_queue_weak), context_id, base::Time::Now(), task_queue_weak),
base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerFailOnCoreThread, base::BindOnce(&ServiceWorkerTaskQueue::DidStartWorkerFailOnCoreThread,
context_id, task_queue_weak)); context_id, task_queue_weak));
} }
...@@ -180,6 +182,7 @@ class ServiceWorkerTaskQueue::WorkerState { ...@@ -180,6 +182,7 @@ class ServiceWorkerTaskQueue::WorkerState {
void ServiceWorkerTaskQueue::DidStartWorkerForScope( void ServiceWorkerTaskQueue::DidStartWorkerForScope(
const SequencedContextId& context_id, const SequencedContextId& context_id,
base::Time start_time,
int64_t version_id, int64_t version_id,
int process_id, int process_id,
int thread_id) { int thread_id) {
...@@ -194,6 +197,11 @@ void ServiceWorkerTaskQueue::DidStartWorkerForScope( ...@@ -194,6 +197,11 @@ void ServiceWorkerTaskQueue::DidStartWorkerForScope(
return; return;
} }
UMA_HISTOGRAM_BOOLEAN("Extensions.ServiceWorkerBackground.StartWorkerStatus",
true);
UMA_HISTOGRAM_TIMES("Extensions.ServiceWorkerBackground.StartWorkerTime",
base::Time::Now() - start_time);
WorkerState* worker_state = GetWorkerState(context_id); WorkerState* worker_state = GetWorkerState(context_id);
DCHECK(worker_state); DCHECK(worker_state);
const WorkerId worker_id = {extension_id, process_id, version_id, thread_id}; const WorkerId worker_id = {extension_id, process_id, version_id, thread_id};
...@@ -224,6 +232,9 @@ void ServiceWorkerTaskQueue::DidStartWorkerFail( ...@@ -224,6 +232,9 @@ void ServiceWorkerTaskQueue::DidStartWorkerFail(
return; return;
} }
UMA_HISTOGRAM_BOOLEAN("Extensions.ServiceWorkerBackground.StartWorkerStatus",
false);
WorkerState* worker_state = GetWorkerState(context_id); WorkerState* worker_state = GetWorkerState(context_id);
DCHECK(worker_state); DCHECK(worker_state);
if (g_test_observer) { if (g_test_observer) {
...@@ -397,7 +408,8 @@ void ServiceWorkerTaskQueue::ActivateExtension(const Extension* extension) { ...@@ -397,7 +408,8 @@ void ServiceWorkerTaskQueue::ActivateExtension(const Extension* extension) {
->RegisterServiceWorker( ->RegisterServiceWorker(
script_url, option, script_url, option,
base::BindOnce(&ServiceWorkerTaskQueue::DidRegisterServiceWorker, base::BindOnce(&ServiceWorkerTaskQueue::DidRegisterServiceWorker,
weak_factory_.GetWeakPtr(), context_id)); weak_factory_.GetWeakPtr(), context_id,
base::Time::Now()));
} }
void ServiceWorkerTaskQueue::DeactivateExtension(const Extension* extension) { void ServiceWorkerTaskQueue::DeactivateExtension(const Extension* extension) {
...@@ -462,6 +474,7 @@ void ServiceWorkerTaskQueue::RunTasksAfterStartWorker( ...@@ -462,6 +474,7 @@ void ServiceWorkerTaskQueue::RunTasksAfterStartWorker(
void ServiceWorkerTaskQueue::DidRegisterServiceWorker( void ServiceWorkerTaskQueue::DidRegisterServiceWorker(
const SequencedContextId& context_id, const SequencedContextId& context_id,
base::Time start_time,
bool success) { bool success) {
ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_); ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context_);
const ExtensionId& extension_id = context_id.first.extension_id(); const ExtensionId& extension_id = context_id.first.extension_id();
...@@ -476,12 +489,16 @@ void ServiceWorkerTaskQueue::DidRegisterServiceWorker( ...@@ -476,12 +489,16 @@ void ServiceWorkerTaskQueue::DidRegisterServiceWorker(
WorkerState* worker_state = GetWorkerState(context_id); WorkerState* worker_state = GetWorkerState(context_id);
DCHECK(worker_state); DCHECK(worker_state);
UMA_HISTOGRAM_BOOLEAN("Extensions.ServiceWorkerBackground.RegistrationStatus",
success);
if (!success) { if (!success) {
// TODO(lazyboy): Handle failure case thoroughly. // TODO(lazyboy): Handle failure case thoroughly.
DCHECK(false) << "Failed to register Service Worker"; DCHECK(false) << "Failed to register Service Worker";
return; return;
} }
UMA_HISTOGRAM_TIMES("Extensions.ServiceWorkerBackground.RegistrationTime",
base::Time::Now() - start_time);
worker_state->registration_state_ = RegistrationState::kRegistered; worker_state->registration_state_ = RegistrationState::kRegistered;
SetRegisteredServiceWorkerInfo(extension->id(), extension->version()); SetRegisteredServiceWorkerInfo(extension->id(), extension->version());
......
...@@ -150,6 +150,7 @@ class ServiceWorkerTaskQueue : public KeyedService, ...@@ -150,6 +150,7 @@ class ServiceWorkerTaskQueue : public KeyedService,
static void DidStartWorkerForScopeOnCoreThread( static void DidStartWorkerForScopeOnCoreThread(
const SequencedContextId& context_id, const SequencedContextId& context_id,
base::Time start_time,
base::WeakPtr<ServiceWorkerTaskQueue> task_queue, base::WeakPtr<ServiceWorkerTaskQueue> task_queue,
int64_t version_id, int64_t version_id,
int process_id, int process_id,
...@@ -165,12 +166,14 @@ class ServiceWorkerTaskQueue : public KeyedService, ...@@ -165,12 +166,14 @@ class ServiceWorkerTaskQueue : public KeyedService,
void RunTasksAfterStartWorker(const SequencedContextId& context_id); void RunTasksAfterStartWorker(const SequencedContextId& context_id);
void DidRegisterServiceWorker(const SequencedContextId& context_id, void DidRegisterServiceWorker(const SequencedContextId& context_id,
base::Time start_time,
bool success); bool success);
void DidUnregisterServiceWorker(const ExtensionId& extension_id, void DidUnregisterServiceWorker(const ExtensionId& extension_id,
ActivationSequence sequence, ActivationSequence sequence,
bool success); bool success);
void DidStartWorkerForScope(const SequencedContextId& context_id, void DidStartWorkerForScope(const SequencedContextId& context_id,
base::Time start_time,
int64_t version_id, int64_t version_id,
int process_id, int process_id,
int thread_id); int thread_id);
......
...@@ -2991,6 +2991,43 @@ reviews. Googlers can read more about this at go/gwsq-gerrit. ...@@ -2991,6 +2991,43 @@ reviews. Googlers can read more about this at go/gwsq-gerrit.
</summary> </summary>
</histogram> </histogram>
<histogram name="Extensions.ServiceWorkerBackground.RegistrationStatus"
enum="Boolean" expires_after="2021-10-01">
<owner>lazyboy@chromium.org</owner>
<owner>dbertoni@chromium.org</owner>
<summary>
Tracks whether background service worker registration succeeded or not.
</summary>
</histogram>
<histogram name="Extensions.ServiceWorkerBackground.RegistrationTime"
units="ms" expires_after="2021-10-01">
<owner>lazyboy@chromium.org</owner>
<owner>dbertoni@chromium.org</owner>
<summary>
The amount of time it takes to register a service worker background script.
</summary>
</histogram>
<histogram name="Extensions.ServiceWorkerBackground.StartWorkerStatus"
enum="Boolean" expires_after="2021-10-01">
<owner>lazyboy@chromium.org</owner>
<owner>dbertoni@chromium.org</owner>
<summary>
Tracks whether background service worker starting succeeded or not.
</summary>
</histogram>
<histogram name="Extensions.ServiceWorkerBackground.StartWorkerTime" units="ms"
expires_after="2021-10-01">
<owner>lazyboy@chromium.org</owner>
<owner>dbertoni@chromium.org</owner>
<summary>
The amount of time it takes to start the background service worker of an
extension.
</summary>
</histogram>
<histogram <histogram
name="Extensions.SettingsOverridden.BackToGoogleNtpOverriddenDialogResult" name="Extensions.SettingsOverridden.BackToGoogleNtpOverriddenDialogResult"
enum="SettingsOverriddenDialogResult" expires_after="2021-05-01"> enum="SettingsOverriddenDialogResult" expires_after="2021-05-01">
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment