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

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

Issue 1178043002: Update ServiceWorker event handled status histogram (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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
« no previous file with comments | « content/browser/service_worker/service_worker_metrics.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/service_worker/service_worker_version.cc
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 802ed2e7311ad813ac91b579c6338dcc31bbdf32..fad1b56a3eb28ad3ed5aebd9e091483f088491a4 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -4,6 +4,9 @@
#include "content/browser/service_worker/service_worker_version.h"
+#include <map>
+#include <string>
+
#include "base/command_line.h"
#include "base/location.h"
#include "base/memory/ref_counted.h"
@@ -395,15 +398,20 @@ const int ServiceWorkerVersion::kRequestTimeoutMinutes = 5;
class ServiceWorkerVersion::Metrics {
public:
+ using EventType = ServiceWorkerMetrics::EventType;
explicit Metrics(ServiceWorkerVersion* owner) : owner_(owner) {}
~Metrics() {
- ServiceWorkerMetrics::RecordEventStatus(fired_events_, handled_events_);
+ for (const auto& ev : event_stats_) {
+ ServiceWorkerMetrics::RecordEventHandledRatio(owner_->scope(), ev.first,
+ ev.second.handled_events,
+ ev.second.fired_events);
+ }
}
- void RecordEventStatus(bool handled) {
- ++fired_events_;
+ void RecordEventHandledStatus(EventType event, bool handled) {
+ event_stats_[event].fired_events++;
if (handled)
- ++handled_events_;
+ event_stats_[event].handled_events++;
}
void NotifyStopping() {
@@ -438,9 +446,13 @@ class ServiceWorkerVersion::Metrics {
}
private:
+ struct EventStat {
+ size_t fired_events = 0;
+ size_t handled_events = 0;
+ };
+
ServiceWorkerVersion* owner_;
- size_t fired_events_ = 0;
- size_t handled_events_ = 0;
+ std::map<EventType, EventStat> event_stats_;
ServiceWorkerMetrics::StopWorkerStatus stop_status_ =
ServiceWorkerMetrics::STOP_STATUS_STOPPING;
@@ -516,7 +528,6 @@ ServiceWorkerVersion::ServiceWorkerVersion(
context_(context),
script_cache_map_(this, context),
ping_controller_(new PingController(this)),
- metrics_(new Metrics(this)),
weak_factory_(this) {
DCHECK(context_);
DCHECK(registration);
@@ -1344,7 +1355,8 @@ void ServiceWorkerVersion::OnFetchEventFinished(
// TODO(kinuko): Record other event statuses too.
const bool handled = (result == SERVICE_WORKER_FETCH_EVENT_RESULT_RESPONSE);
- metrics_->RecordEventStatus(handled);
+ metrics_->RecordEventHandledStatus(ServiceWorkerMetrics::EVENT_TYPE_FETCH,
+ handled);
scoped_refptr<ServiceWorkerVersion> protect(this);
callback->Run(SERVICE_WORKER_OK, result, response);
@@ -1747,6 +1759,8 @@ void ServiceWorkerVersion::DidEnsureLiveRegistrationForStartWorker(
}
void ServiceWorkerVersion::StartWorkerInternal(bool pause_after_download) {
+ if (!metrics_)
+ metrics_.reset(new Metrics(this));
if (!timeout_timer_.IsRunning())
StartTimeoutTimer();
if (running_status() == STOPPED) {
@@ -2119,6 +2133,9 @@ void ServiceWorkerVersion::OnStoppedInternal(
DCHECK_EQ(STOPPED, running_status());
scoped_refptr<ServiceWorkerVersion> protect(this);
+ DCHECK(metrics_);
+ metrics_.reset();
+
bool should_restart = !is_redundant() && !start_callbacks_.empty() &&
(old_status != EmbeddedWorkerInstance::STARTING);
« no previous file with comments | « content/browser/service_worker/service_worker_metrics.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698