Chromium Code Reviews| Index: webkit/plugins/ppapi/ppb_uma_private_impl.cc |
| =================================================================== |
| --- webkit/plugins/ppapi/ppb_uma_private_impl.cc (revision 0) |
| +++ webkit/plugins/ppapi/ppb_uma_private_impl.cc (revision 0) |
| @@ -0,0 +1,92 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "webkit/plugins/ppapi/ppb_uma_private_impl.h" |
| + |
| +#include "base/metrics/histogram.h" |
| +#include "ppapi/c/pp_var.h" |
| +#include "ppapi/c/private/ppb_uma_private.h" |
| +#include "webkit/glue/webkit_glue.h" |
| +#include "webkit/plugins/ppapi/var.h" |
| + |
| +namespace webkit { |
| +namespace ppapi { |
| + |
| +namespace { |
| + |
| +#define RETURN_IF_BAD_ARGS(_name, _sample, _min, _max, _bucket_count) \ |
| + do { \ |
| + if (_name.type != PP_VARTYPE_STRING || _name.value.as_id == 0) \ |
| + return; \ |
| + if (_min >= _max) \ |
| + return; \ |
| + if (_bucket_count <= 1) \ |
| + return; \ |
| + } while (0) |
| + |
| +void HistogramCustomTimes(PP_Var name, |
| + int64_t sample, |
| + int64_t min, int64_t max, |
| + uint32_t bucket_count) { |
| + RETURN_IF_BAD_ARGS(name, sample, min, max, bucket_count); |
| + |
| + scoped_refptr<StringVar> name_string(StringVar::FromPPVar(name)); |
| + base::Histogram* counter = |
| + base::Histogram::FactoryTimeGet( |
| + name_string->value(), |
| + base::TimeDelta::FromMilliseconds(min), |
| + base::TimeDelta::FromMilliseconds(max), |
| + bucket_count, |
| + base::Histogram::kUmaTargetedHistogramFlag); |
| + counter->AddTime(base::TimeDelta::FromMilliseconds(sample)); |
| +} |
| + |
| +void HistogramCustomCounts(PP_Var name, |
| + int32_t sample, |
| + int32_t min, int32_t max, |
| + uint32_t bucket_count) { |
| + RETURN_IF_BAD_ARGS(name, sample, min, max, bucket_count); |
| + |
| + scoped_refptr<StringVar> name_string(StringVar::FromPPVar(name)); |
| + base::Histogram* counter = |
| + base::Histogram::FactoryGet( |
| + name_string->value(), |
| + min, |
| + max, |
| + bucket_count, |
| + base::Histogram::kUmaTargetedHistogramFlag); |
| + counter->Add(sample); |
| +} |
| + |
| +void HistogramEnumeration(PP_Var name, |
| + int32_t sample, |
| + int32_t boundary_value) { |
| + RETURN_IF_BAD_ARGS(name, sample, 1, boundary_value, boundary_value + 1); |
| + |
| + scoped_refptr<StringVar> name_string(StringVar::FromPPVar(name)); |
|
brettw
2011/04/29 22:11:06
You still need to check this pointer for NULL. The
elijahtaylor (use chromium)
2011/04/29 22:27:04
Done.
|
| + base::Histogram* counter = |
| + base::LinearHistogram::FactoryGet( |
| + name_string->value(), |
| + 1, |
| + boundary_value, |
| + boundary_value + 1, |
| + base::Histogram::kUmaTargetedHistogramFlag); |
| + counter->Add(sample); |
| +} |
| + |
| +} // namespace |
| + |
| +const PPB_UMA_Private ppb_uma = { |
| + &HistogramCustomTimes, |
| + &HistogramCustomCounts, |
| + &HistogramEnumeration, |
| +}; |
| + |
| +// static |
| +const PPB_UMA_Private* PPB_UMA_Private_Impl::GetInterface() { |
| + return &ppb_uma; |
| +} |
| + |
| +} // namespace ppapi |
| +} // namespace webkit |
| Property changes on: webkit/plugins/ppapi/ppb_uma_private_impl.cc |
| ___________________________________________________________________ |
| Added: svn:executable |
| + * |
| Added: svn:eol-style |
| + LF |