| // Copyright 2014 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 "ppapi/proxy/uma_private_resource.h" |
| |
| #include "base/bind.h" |
| #include "ppapi/proxy/ppapi_messages.h" |
| #include "ppapi/proxy/resource_message_params.h" |
| #include "ppapi/shared_impl/var.h" |
| |
| namespace { |
| |
| std::string StringFromPPVar(const PP_Var& var) { |
| scoped_refptr<ppapi::StringVar> name_stringvar = |
| ppapi::StringVar::FromPPVar(var); |
| if (!name_stringvar.get()) |
| return std::string(); |
| return name_stringvar->value(); |
| } |
| |
| } |
| |
| namespace ppapi { |
| namespace proxy { |
| |
| UMAPrivateResource::UMAPrivateResource( |
| Connection connection, PP_Instance instance) |
| : PluginResource(connection, instance) { |
| SendCreate(RENDERER, PpapiHostMsg_UMA_Create()); |
| } |
| |
| UMAPrivateResource::~UMAPrivateResource() { |
| } |
| |
| thunk::PPB_UMA_Singleton_API* UMAPrivateResource::AsPPB_UMA_Singleton_API() { |
| return this; |
| } |
| |
| void UMAPrivateResource::HistogramCustomTimes( |
| PP_Instance instance, |
| struct PP_Var name, |
| int64_t sample, |
| int64_t min, |
| int64_t max, |
| uint32_t bucket_count) { |
| if (name.type != PP_VARTYPE_STRING) |
| return; |
| |
| Post(RENDERER, PpapiHostMsg_UMA_HistogramCustomTimes(StringFromPPVar(name), |
| sample, |
| min, |
| max, |
| bucket_count)); |
| } |
| |
| void UMAPrivateResource::HistogramCustomCounts( |
| PP_Instance instance, |
| struct PP_Var name, |
| int32_t sample, |
| int32_t min, |
| int32_t max, |
| uint32_t bucket_count) { |
| if (name.type != PP_VARTYPE_STRING) |
| return; |
| |
| Post(RENDERER, PpapiHostMsg_UMA_HistogramCustomCounts(StringFromPPVar(name), |
| sample, |
| min, |
| max, |
| bucket_count)); |
| } |
| |
| void UMAPrivateResource::HistogramEnumeration( |
| PP_Instance instance, |
| struct PP_Var name, |
| int32_t sample, |
| int32_t boundary_value) { |
| if (name.type != PP_VARTYPE_STRING) |
| return; |
| |
| Post(RENDERER, PpapiHostMsg_UMA_HistogramEnumeration(StringFromPPVar(name), |
| sample, |
| boundary_value)); |
| } |
| |
| int32_t UMAPrivateResource::IsCrashReportingEnabled( |
| PP_Instance instance, |
| scoped_refptr<TrackedCallback> callback) { |
| if (pending_callback_.get() != NULL) |
| return PP_ERROR_INPROGRESS; |
| pending_callback_ = callback; |
| Call<PpapiPluginMsg_UMA_IsCrashReportingEnabledReply>( |
| RENDERER, |
| PpapiHostMsg_UMA_IsCrashReportingEnabled(), |
| base::Bind(&UMAPrivateResource::OnPluginMsgIsCrashReportingEnabled, |
| this)); |
| return PP_OK_COMPLETIONPENDING; |
| } |
| |
| void UMAPrivateResource::OnPluginMsgIsCrashReportingEnabled( |
| const ResourceMessageReplyParams& params) { |
| if (TrackedCallback::IsPending(pending_callback_)) |
| pending_callback_->Run(params.result()); |
| pending_callback_ = NULL; |
| } |
| |
| } // namespace proxy |
| } // namespace ppapi |
| |