#include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h"
#include "content/browser/renderer_host/pepper/pepper_browser_font_singleton_host.h"
+#include "content/browser/renderer_host/pepper/pepper_file_io_host.h"
#include "content/browser/renderer_host/pepper/pepper_file_ref_host.h"
#include "content/browser/renderer_host/pepper/pepper_file_system_browser_host.h"
#include "content/browser/renderer_host/pepper/pepper_flash_file_message_filter.h"
#include "content/browser/renderer_host/pepper/pepper_printing_host.h"
#include "content/browser/renderer_host/pepper/pepper_tcp_server_socket_message_filter.h"
#include "content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h"
+#include "content/browser/renderer_host/pepper/pepper_truetype_font_host.h"
#include "content/browser/renderer_host/pepper/pepper_truetype_font_list_host.h"
#include "content/browser/renderer_host/pepper/pepper_udp_socket_message_filter.h"
#include "ppapi/host/message_filter_host.h"
using ppapi::host::MessageFilterHost;
using ppapi::host::ResourceHost;
using ppapi::host::ResourceMessageFilter;
+using ppapi::proxy::SerializedTrueTypeFontDesc;
using ppapi::UnpackMessage;
namespace content {
const size_t kMaxSocketsAllowed = 1024;
bool CanCreateSocket() {
- return
- PepperTCPServerSocketMessageFilter::GetNumInstances() +
- PepperTCPSocketMessageFilter::GetNumInstances() +
- PepperUDPSocketMessageFilter::GetNumInstances() <
- kMaxSocketsAllowed;
+ return PepperTCPServerSocketMessageFilter::GetNumInstances() +
+ PepperTCPSocketMessageFilter::GetNumInstances() +
+ PepperUDPSocketMessageFilter::GetNumInstances() <
+ kMaxSocketsAllowed;
}
} // namespace
ContentBrowserPepperHostFactory::ContentBrowserPepperHostFactory(
BrowserPpapiHostImpl* host)
- : host_(host) {
-}
+ : host_(host) {}
-ContentBrowserPepperHostFactory::~ContentBrowserPepperHostFactory() {
-}
+ContentBrowserPepperHostFactory::~ContentBrowserPepperHostFactory() {}
scoped_ptr<ResourceHost> ContentBrowserPepperHostFactory::CreateResourceHost(
ppapi::host::PpapiHost* host,
// Public interfaces.
switch (message.type()) {
+ case PpapiHostMsg_FileIO_Create::ID: {
+ return scoped_ptr<ResourceHost>(
+ new PepperFileIOHost(host_, instance, params.pp_resource()));
+ }
case PpapiHostMsg_FileSystem_Create::ID: {
PP_FileSystemType file_system_type;
- if (!ppapi::UnpackMessage<PpapiHostMsg_FileSystem_Create>(message,
- &file_system_type)) {
+ if (!ppapi::UnpackMessage<PpapiHostMsg_FileSystem_Create>(
+ message, &file_system_type)) {
NOTREACHED();
return scoped_ptr<ResourceHost>();
}
host_, instance, params.pp_resource(), file_system_type));
}
case PpapiHostMsg_Gamepad_Create::ID: {
- return scoped_ptr<ResourceHost>(new PepperGamepadHost(
- host_, instance, params.pp_resource()));
+ return scoped_ptr<ResourceHost>(
+ new PepperGamepadHost(host_, instance, params.pp_resource()));
}
case PpapiHostMsg_NetworkProxy_Create::ID: {
- return scoped_ptr<ResourceHost>(new PepperNetworkProxyHost(
- host_, instance, params.pp_resource()));
+ return scoped_ptr<ResourceHost>(
+ new PepperNetworkProxyHost(host_, instance, params.pp_resource()));
}
case PpapiHostMsg_HostResolver_Create::ID: {
scoped_refptr<ResourceMessageFilter> host_resolver(
new PepperHostResolverMessageFilter(host_, instance, false));
- return scoped_ptr<ResourceHost>(new MessageFilterHost(
- host_->GetPpapiHost(), instance, params.pp_resource(),
- host_resolver));
+ return scoped_ptr<ResourceHost>(
+ new MessageFilterHost(host_->GetPpapiHost(),
+ instance,
+ params.pp_resource(),
+ host_resolver));
}
- case PpapiHostMsg_FileRef_CreateInternal::ID: {
+ case PpapiHostMsg_FileRef_CreateForFileAPI::ID: {
PP_Resource file_system;
std::string internal_path;
- if (!UnpackMessage<PpapiHostMsg_FileRef_CreateInternal>(
- message, &file_system, &internal_path)) {
+ if (!UnpackMessage<PpapiHostMsg_FileRef_CreateForFileAPI>(
+ message, &file_system, &internal_path)) {
NOTREACHED();
return scoped_ptr<ResourceHost>();
}
case PpapiHostMsg_Printing_Create::ID: {
scoped_ptr<PepperPrintSettingsManager> manager(
new PepperPrintSettingsManagerImpl());
- return scoped_ptr<ResourceHost>(new PepperPrintingHost(
- host_->GetPpapiHost(), instance,
- params.pp_resource(), manager.Pass()));
+ return scoped_ptr<ResourceHost>(
+ new PepperPrintingHost(host_->GetPpapiHost(),
+ instance,
+ params.pp_resource(),
+ manager.Pass()));
+ }
+ case PpapiHostMsg_TrueTypeFont_Create::ID: {
+ SerializedTrueTypeFontDesc desc;
+ if (!UnpackMessage<PpapiHostMsg_TrueTypeFont_Create>(message, &desc)) {
+ NOTREACHED();
+ return scoped_ptr<ResourceHost>();
+ }
+ // Check that the family name is valid UTF-8 before passing it to the
+ // host OS.
+ if (!base::IsStringUTF8(desc.family))
+ return scoped_ptr<ResourceHost>();
+
+ return scoped_ptr<ResourceHost>(new PepperTrueTypeFontHost(
+ host_, instance, params.pp_resource(), desc));
}
case PpapiHostMsg_TrueTypeFontSingleton_Create::ID: {
return scoped_ptr<ResourceHost>(new PepperTrueTypeFontListHost(
if (CanCreateSocket()) {
scoped_refptr<ResourceMessageFilter> tcp_server_socket(
new PepperTCPServerSocketMessageFilter(this, host_, instance, true));
- return scoped_ptr<ResourceHost>(new MessageFilterHost(
- host_->GetPpapiHost(), instance, params.pp_resource(),
- tcp_server_socket));
+ return scoped_ptr<ResourceHost>(
+ new MessageFilterHost(host_->GetPpapiHost(),
+ instance,
+ params.pp_resource(),
+ tcp_server_socket));
} else {
return scoped_ptr<ResourceHost>();
}
}
if (message.type() == PpapiHostMsg_TCPSocket_CreatePrivate::ID) {
- return CreateNewTCPSocket(instance, params.pp_resource(),
- ppapi::TCP_SOCKET_VERSION_PRIVATE);
+ return CreateNewTCPSocket(
+ instance, params.pp_resource(), ppapi::TCP_SOCKET_VERSION_PRIVATE);
}
if (message.type() == PpapiHostMsg_UDPSocket_CreatePrivate::ID) {
if (CanCreateSocket()) {
case PpapiHostMsg_FlashFile_Create::ID: {
scoped_refptr<ResourceMessageFilter> file_filter(
new PepperFlashFileMessageFilter(instance, host_));
- return scoped_ptr<ResourceHost>(new MessageFilterHost(
- host_->GetPpapiHost(), instance, params.pp_resource(),
- file_filter));
+ return scoped_ptr<ResourceHost>(
+ new MessageFilterHost(host_->GetPpapiHost(),
+ instance,
+ params.pp_resource(),
+ file_filter));
}
}
}
if (!CanCreateSocket())
return scoped_ptr<ResourceHost>();
scoped_refptr<ResourceMessageFilter> tcp_socket(
- new PepperTCPSocketMessageFilter(host_, instance, version,
- socket.Pass()));
- return scoped_ptr<ResourceHost>(new MessageFilterHost(
- host_->GetPpapiHost(), instance, 0, tcp_socket));
+ new PepperTCPSocketMessageFilter(
+ host_, instance, version, socket.Pass()));
+ return scoped_ptr<ResourceHost>(
+ new MessageFilterHost(host_->GetPpapiHost(), instance, 0, tcp_socket));
}
scoped_ptr<ppapi::host::ResourceHost>
host_->GetPpapiHost(), instance, resource, tcp_socket));
}
-const ppapi::PpapiPermissions&
-ContentBrowserPepperHostFactory::GetPermissions() const {
+const ppapi::PpapiPermissions& ContentBrowserPepperHostFactory::GetPermissions()
+ const {
return host_->GetPpapiHost()->permissions();
}