1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "webkit/browser/appcache/appcache_histograms.h"
7 #include "base/metrics/histogram.h"
11 static std::string OriginToCustomHistogramSuffix(const GURL& origin_url) {
12 if (origin_url.host() == "docs.google.com")
17 void AppCacheHistograms::CountInitResult(InitResultType init_result) {
18 UMA_HISTOGRAM_ENUMERATION(
19 "appcache.InitResult",
20 init_result, NUM_INIT_RESULT_TYPES);
23 void AppCacheHistograms::CountReinitAttempt(bool repeated_attempt) {
24 UMA_HISTOGRAM_BOOLEAN("appcache.ReinitAttempt", repeated_attempt);
27 void AppCacheHistograms::CountCorruptionDetected() {
28 UMA_HISTOGRAM_BOOLEAN("appcache.CorruptionDetected", true);
31 void AppCacheHistograms::CountUpdateJobResult(
32 AppCacheUpdateJob::ResultType result,
33 const GURL& origin_url) {
34 UMA_HISTOGRAM_ENUMERATION(
35 "appcache.UpdateJobResult",
36 result, AppCacheUpdateJob::NUM_UPDATE_JOB_RESULT_TYPES);
38 const std::string suffix = OriginToCustomHistogramSuffix(origin_url);
39 if (!suffix.empty()) {
40 base::LinearHistogram::FactoryGet(
41 "appcache.UpdateJobResult" + suffix,
43 AppCacheUpdateJob::NUM_UPDATE_JOB_RESULT_TYPES,
44 AppCacheUpdateJob::NUM_UPDATE_JOB_RESULT_TYPES + 1,
45 base::HistogramBase::kUmaTargetedHistogramFlag)->Add(result);
49 void AppCacheHistograms::CountCheckResponseResult(
50 CheckResponseResultType result) {
51 UMA_HISTOGRAM_ENUMERATION(
52 "appcache.CheckResponseResult",
53 result, NUM_CHECK_RESPONSE_RESULT_TYPES);
56 void AppCacheHistograms::AddTaskQueueTimeSample(
57 const base::TimeDelta& duration) {
58 UMA_HISTOGRAM_TIMES("appcache.TaskQueueTime", duration);
61 void AppCacheHistograms::AddTaskRunTimeSample(
62 const base::TimeDelta& duration) {
63 UMA_HISTOGRAM_TIMES("appcache.TaskRunTime", duration);
66 void AppCacheHistograms::AddCompletionQueueTimeSample(
67 const base::TimeDelta& duration) {
68 UMA_HISTOGRAM_TIMES("appcache.CompletionQueueTime", duration);
71 void AppCacheHistograms::AddCompletionRunTimeSample(
72 const base::TimeDelta& duration) {
73 UMA_HISTOGRAM_TIMES("appcache.CompletionRunTime", duration);
76 void AppCacheHistograms::AddNetworkJobStartDelaySample(
77 const base::TimeDelta& duration) {
78 UMA_HISTOGRAM_TIMES("appcache.JobStartDelay.Network", duration);
81 void AppCacheHistograms::AddErrorJobStartDelaySample(
82 const base::TimeDelta& duration) {
83 UMA_HISTOGRAM_TIMES("appcache.JobStartDelay.Error", duration);
86 void AppCacheHistograms::AddAppCacheJobStartDelaySample(
87 const base::TimeDelta& duration) {
88 UMA_HISTOGRAM_TIMES("appcache.JobStartDelay.AppCache", duration);
91 void AppCacheHistograms::AddMissingManifestEntrySample() {
92 UMA_HISTOGRAM_BOOLEAN("appcache.MissingManifestEntry", true);
95 void AppCacheHistograms::AddMissingManifestDetectedAtCallsite(
96 MissingManifestCallsiteType callsite) {
97 UMA_HISTOGRAM_ENUMERATION(
98 "appcache.MissingManifestDetectedAtCallsite",
99 callsite, NUM_MISSING_MANIFEST_CALLSITE_TYPES);
102 } // namespace appcache