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

Side by Side Diff: chrome/browser/extensions/extension_metrics_module.cc

Issue 8548013: Moving experimental.metrics API to metricsPrivate (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Rebase Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/extension_metrics_module.h" 5 #include "chrome/browser/extensions/extension_metrics_module.h"
6 6
7 #include "base/metrics/histogram.h" 7 #include "base/metrics/histogram.h"
8 #include "base/values.h"
9 #include "chrome/common/extensions/extension.h" 8 #include "chrome/common/extensions/extension.h"
10 #include "chrome/browser/ui/options/options_util.h"
11 #include "chrome/installer/util/google_update_settings.h"
12 #include "content/browser/user_metrics.h" 9 #include "content/browser/user_metrics.h"
13 10
14 using base::Histogram; 11 using base::Histogram;
15 using base::LinearHistogram; 12 using base::LinearHistogram;
16 13
17 namespace {
18
19 // Build the full name of a metrics for the given extension.
20 // For a non-component extension the metric name is made up of the unique name
21 // within the extension followed by the extension's id. This keeps the metrics
22 // from one extension unique from other extensions, as well as those metrics
23 // from chrome itself.
24 // For a component extension the metric name is used as is. There are not so
25 // many of them and it is easy enough to prevent name clashes.
26 std::string BuildMetricName(const std::string& name,
27 const Extension* extension) {
28 std::string full_name(name);
29 if (extension->location() != Extension::COMPONENT)
30 full_name += extension->id();
31 return full_name;
32 }
33
34 } // anonymous namespace
35
36 bool MetricsSetEnabledFunction::RunImpl() {
37 bool enabled = false;
38 EXTENSION_FUNCTION_VALIDATE(args_->GetBoolean(0, &enabled));
39
40 // Using OptionsUtil is better because it actually ensures we reset all the
41 // necessary threads. This is the main way for starting / stopping UMA and
42 // crash reporting.
43 // This method will return the resulting enabled, which we send to JS.
44 bool result = OptionsUtil::ResolveMetricsReportingEnabled(enabled);
45 result_.reset(Value::CreateBooleanValue(result));
46 return true;
47 }
48
49 bool MetricsGetEnabledFunction::RunImpl() {
50 bool enabled = GoogleUpdateSettings::GetCollectStatsConsent();
51 result_.reset(Value::CreateBooleanValue(enabled));
52 return true;
53 }
54
55 bool MetricsRecordUserActionFunction::RunImpl() { 14 bool MetricsRecordUserActionFunction::RunImpl() {
56 std::string name; 15 std::string name;
57 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &name)); 16 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &name));
58 17
59 name = BuildMetricName(name, GetExtension());
60 UserMetrics::RecordComputedAction(name); 18 UserMetrics::RecordComputedAction(name);
61 return true; 19 return true;
62 } 20 }
63 21
64 bool MetricsHistogramHelperFunction::GetNameAndSample(std::string* name, 22 bool MetricsHistogramHelperFunction::GetNameAndSample(std::string* name,
65 int* sample) { 23 int* sample) {
66 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, name)); 24 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, name));
67 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(1, sample)); 25 EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(1, sample));
68 return true; 26 return true;
69 } 27 }
70 28
71 bool MetricsHistogramHelperFunction::RecordValue(const std::string& name, 29 bool MetricsHistogramHelperFunction::RecordValue(const std::string& name,
72 Histogram::ClassType type, 30 Histogram::ClassType type,
73 int min, 31 int min,
74 int max, 32 int max,
75 size_t buckets, 33 size_t buckets,
76 int sample) { 34 int sample) {
77 std::string full_name = BuildMetricName(name, GetExtension());
78 Histogram* counter; 35 Histogram* counter;
79 if (type == Histogram::LINEAR_HISTOGRAM) { 36 if (type == Histogram::LINEAR_HISTOGRAM) {
80 counter = LinearHistogram::FactoryGet(full_name, 37 counter = LinearHistogram::FactoryGet(name,
81 min, 38 min,
82 max, 39 max,
83 buckets, 40 buckets,
84 Histogram::kUmaTargetedHistogramFlag); 41 Histogram::kUmaTargetedHistogramFlag);
85 } else { 42 } else {
86 counter = Histogram::FactoryGet(full_name, 43 counter = Histogram::FactoryGet(name,
87 min, 44 min,
88 max, 45 max,
89 buckets, 46 buckets,
90 Histogram::kUmaTargetedHistogramFlag); 47 Histogram::kUmaTargetedHistogramFlag);
91 } 48 }
92 49
93 counter->Add(sample); 50 counter->Add(sample);
94 return true; 51 return true;
95 } 52 }
96 53
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 return RecordValue(name, Histogram::HISTOGRAM, 1, kThreeMinMs, 50, sample); 119 return RecordValue(name, Histogram::HISTOGRAM, 1, kThreeMinMs, 50, sample);
163 } 120 }
164 121
165 bool MetricsRecordLongTimeFunction::RunImpl() { 122 bool MetricsRecordLongTimeFunction::RunImpl() {
166 std::string name; 123 std::string name;
167 int sample; 124 int sample;
168 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample)); 125 EXTENSION_FUNCTION_VALIDATE(GetNameAndSample(&name, &sample));
169 static const int kOneHourMs = 60 * 60 * 1000; 126 static const int kOneHourMs = 60 * 60 * 1000;
170 return RecordValue(name, Histogram::HISTOGRAM, 1, kOneHourMs, 50, sample); 127 return RecordValue(name, Histogram::HISTOGRAM, 1, kOneHourMs, 50, sample);
171 } 128 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_metrics_module.h ('k') | chrome/browser/resources/file_manager/js/metrics.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698