| Index: base/metrics/user_metrics.cc
|
| diff --git a/base/metrics/user_metrics.cc b/base/metrics/user_metrics.cc
|
| index 9db5840ab57052746537bb223a8f6445735d53d9..ee02893f19e2edd4de3c588ba7b0a526360721ea 100644
|
| --- a/base/metrics/user_metrics.cc
|
| +++ b/base/metrics/user_metrics.cc
|
| @@ -25,6 +25,12 @@ class Callbacks {
|
| }
|
| }
|
|
|
| + void Record(const std::string& metric, const std::string& sample) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + if (!rappor_callback_.is_null())
|
| + rappor_callback_.Run(metric, sample);
|
| + }
|
| +
|
| // Adds |callback| to the list of |callbacks_|.
|
| void AddCallback(const ActionCallback& callback) {
|
| DCHECK(thread_checker_.CalledOnValidThread());
|
| @@ -43,9 +49,16 @@ class Callbacks {
|
| }
|
| }
|
|
|
| + void AddCallback(const RapporCallback& callback) {
|
| + DCHECK(thread_checker_.CalledOnValidThread());
|
| + DCHECK(rappor_callback_.is_null());
|
| + rappor_callback_ = callback;
|
| + }
|
| +
|
| private:
|
| base::ThreadChecker thread_checker_;
|
| std::vector<ActionCallback> callbacks_;
|
| + RapporCallback rappor_callback_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(Callbacks);
|
| };
|
| @@ -62,13 +75,20 @@ void RecordComputedAction(const std::string& action) {
|
| g_callbacks.Get().Record(action);
|
| }
|
|
|
| +void RecordRappor(const std::string& metric, const std::string& sample) {
|
| + g_callbacks.Get().Record(metric, sample);
|
| +}
|
| +
|
| void AddActionCallback(const ActionCallback& callback) {
|
| g_callbacks.Get().AddCallback(callback);
|
| }
|
|
|
| void RemoveActionCallback(const ActionCallback& callback) {
|
| g_callbacks.Get().RemoveCallback(callback);
|
| +}
|
|
|
| +void AddRapporCallback(const RapporCallback& callback) {
|
| + g_callbacks.Get().AddCallback(callback);
|
| }
|
|
|
| } // namespace base
|
|
|