15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CHROME_RENDERER_PEPPER_PEPPER_UMA_HOST_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CHROME_RENDERER_PEPPER_PEPPER_UMA_HOST_H_ 75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <set> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <string> 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/files/file_path.h" 125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ppapi/host/resource_host.h" 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "url/gurl.h" 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace content { 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class RendererPpapiHost; 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace ppapi { 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace host { 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct HostMessageContext; 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace host 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} // namespace ppapi 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PepperUMAHost : public ppapi::host::ResourceHost { 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public: 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PepperUMAHost(content::RendererPpapiHost* host, 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Instance instance, 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_Resource resource); 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual ~PepperUMAHost(); 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // ppapi::host::ResourceMessageHandler implementation. 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual int32_t OnResourceMessageReceived( 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const IPC::Message& msg, 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ppapi::host::HostMessageContext* context) OVERRIDE; 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private: 41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch bool IsPluginWhitelisted(); 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool IsHistogramAllowed(const std::string& histogram); 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t OnHistogramCustomTimes(ppapi::host::HostMessageContext* context, 45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const std::string& name, 46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int64_t sample, 47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int64_t min, 48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int64_t max, 49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch uint32_t bucket_count); 50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t OnHistogramCustomCounts(ppapi::host::HostMessageContext* context, 52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const std::string& name, 53c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t sample, 54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t min, 55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t max, 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch uint32_t bucket_count); 57c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 58c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t OnHistogramEnumeration(ppapi::host::HostMessageContext* context, 59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch const std::string& name, 60c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t sample, 61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t boundary_value); 62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch int32_t OnIsCrashReportingEnabled(ppapi::host::HostMessageContext* context); 64effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch 655d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const GURL document_url_; 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool is_plugin_in_process_; 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) base::FilePath plugin_base_name_; 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Set of origins that can use UMA private APIs from NaCl. 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) std::set<std::string> allowed_origins_; 71a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Set of hashed histogram prefixes that can be used from this interface. 72a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::set<std::string> allowed_histogram_prefixes_; 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Set of plugin files names that are allowed to use this interface. 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) std::set<std::string> allowed_plugin_base_names_; 755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PepperUMAHost); 775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // CHROME_RENDERER_PEPPER_PEPPER_UMA_HOST_H_ 80