* chore: use more inclusive language in lint script * whitelist -> allowed_extension_ids in plugin_utils * some other places
		
			
				
	
	
		
			107 lines
		
	
	
	
		
			3.9 KiB
			
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
	
		
			3.9 KiB
			
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright (c) 2012 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 "shell/renderer/electron_renderer_pepper_host_factory.h"
 | 
						|
 | 
						|
#include <memory>
 | 
						|
#include <string>
 | 
						|
 | 
						|
#include "base/logging.h"
 | 
						|
#include "content/public/renderer/renderer_ppapi_host.h"
 | 
						|
#include "ppapi/host/dispatch_host_message.h"
 | 
						|
#include "ppapi/host/ppapi_host.h"
 | 
						|
#include "ppapi/host/resource_host.h"
 | 
						|
#include "ppapi/proxy/ppapi_message_utils.h"
 | 
						|
#include "ppapi/proxy/ppapi_messages.h"
 | 
						|
#include "ppapi/shared_impl/ppapi_permissions.h"
 | 
						|
 | 
						|
using ppapi::host::ResourceHost;
 | 
						|
 | 
						|
// Stub class which ignores all messages
 | 
						|
class PepperUMAHost : public ppapi::host::ResourceHost {
 | 
						|
 public:
 | 
						|
  PepperUMAHost(content::RendererPpapiHost* host,
 | 
						|
                PP_Instance instance,
 | 
						|
                PP_Resource resource)
 | 
						|
      : ResourceHost(host->GetPpapiHost(), instance, resource) {}
 | 
						|
  ~PepperUMAHost() override = default;
 | 
						|
 | 
						|
  // ppapi::host::ResourceMessageHandler implementation.
 | 
						|
  int32_t OnResourceMessageReceived(
 | 
						|
      const IPC::Message& msg,
 | 
						|
      ppapi::host::HostMessageContext* context) override {
 | 
						|
    PPAPI_BEGIN_MESSAGE_MAP(PepperUMAHost, msg)
 | 
						|
      PPAPI_DISPATCH_HOST_RESOURCE_CALL(PpapiHostMsg_UMA_HistogramCustomTimes,
 | 
						|
                                        OnHistogramCustomTimes)
 | 
						|
      PPAPI_DISPATCH_HOST_RESOURCE_CALL(PpapiHostMsg_UMA_HistogramCustomCounts,
 | 
						|
                                        OnHistogramCustomCounts)
 | 
						|
      PPAPI_DISPATCH_HOST_RESOURCE_CALL(PpapiHostMsg_UMA_HistogramEnumeration,
 | 
						|
                                        OnHistogramEnumeration)
 | 
						|
      PPAPI_DISPATCH_HOST_RESOURCE_CALL_0(
 | 
						|
          PpapiHostMsg_UMA_IsCrashReportingEnabled, OnIsCrashReportingEnabled)
 | 
						|
    PPAPI_END_MESSAGE_MAP()
 | 
						|
    return PP_ERROR_FAILED;
 | 
						|
  }
 | 
						|
 | 
						|
 private:
 | 
						|
  int32_t OnHistogramCustomTimes(ppapi::host::HostMessageContext* context,
 | 
						|
                                 const std::string& name,
 | 
						|
                                 int64_t sample,
 | 
						|
                                 int64_t min,
 | 
						|
                                 int64_t max,
 | 
						|
                                 uint32_t bucket_count) {
 | 
						|
    return PP_OK;
 | 
						|
  }
 | 
						|
 | 
						|
  int32_t OnHistogramCustomCounts(ppapi::host::HostMessageContext* context,
 | 
						|
                                  const std::string& name,
 | 
						|
                                  int32_t sample,
 | 
						|
                                  int32_t min,
 | 
						|
                                  int32_t max,
 | 
						|
                                  uint32_t bucket_count) {
 | 
						|
    return PP_OK;
 | 
						|
  }
 | 
						|
 | 
						|
  int32_t OnHistogramEnumeration(ppapi::host::HostMessageContext* context,
 | 
						|
                                 const std::string& name,
 | 
						|
                                 int32_t sample,
 | 
						|
                                 int32_t boundary_value) {
 | 
						|
    return PP_OK;
 | 
						|
  }
 | 
						|
 | 
						|
  int32_t OnIsCrashReportingEnabled(ppapi::host::HostMessageContext* context) {
 | 
						|
    return PP_OK;
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
ElectronRendererPepperHostFactory::ElectronRendererPepperHostFactory(
 | 
						|
    content::RendererPpapiHost* host)
 | 
						|
    : host_(host) {}
 | 
						|
 | 
						|
ElectronRendererPepperHostFactory::~ElectronRendererPepperHostFactory() {}
 | 
						|
 | 
						|
std::unique_ptr<ResourceHost>
 | 
						|
ElectronRendererPepperHostFactory::CreateResourceHost(
 | 
						|
    ppapi::host::PpapiHost* host,
 | 
						|
    PP_Resource resource,
 | 
						|
    PP_Instance instance,
 | 
						|
    const IPC::Message& message) {
 | 
						|
  DCHECK_EQ(host_->GetPpapiHost(), host);
 | 
						|
 | 
						|
  // Make sure the plugin is giving us a valid instance for this resource.
 | 
						|
  if (!host_->IsValidInstance(instance))
 | 
						|
    return nullptr;
 | 
						|
 | 
						|
  // Permissions for the following interfaces will be checked at the
 | 
						|
  // time of the corresponding instance's method calls.  Currently these
 | 
						|
  // interfaces are available only for specifically permitted apps which may
 | 
						|
  // not have access to the other private interfaces.
 | 
						|
  switch (message.type()) {
 | 
						|
    case PpapiHostMsg_UMA_Create::ID: {
 | 
						|
      return std::make_unique<PepperUMAHost>(host_, instance, resource);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return nullptr;
 | 
						|
}
 |