| // 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 "content/renderer/pepper/pepper_in_process_resource_creation.h" |
| |
| #include "base/bind.h" |
| #include "base/logging.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/message_loop/message_loop.h" |
| #include "content/child/browser_font_resource_trusted.h" |
| #include "content/renderer/pepper/pepper_in_process_router.h" |
| #include "content/renderer/pepper/pepper_plugin_instance_impl.h" |
| #include "content/renderer/pepper/ppapi_preferences_builder.h" |
| #include "content/renderer/pepper/renderer_ppapi_host_impl.h" |
| #include "content/renderer/render_view_impl.h" |
| #include "ipc/ipc_message.h" |
| #include "ipc/ipc_message_macros.h" |
| #include "ppapi/host/ppapi_host.h" |
| #include "ppapi/proxy/file_chooser_resource.h" |
| #include "ppapi/proxy/file_io_resource.h" |
| #include "ppapi/proxy/file_ref_resource.h" |
| #include "ppapi/proxy/file_system_resource.h" |
| #include "ppapi/proxy/graphics_2d_resource.h" |
| #include "ppapi/proxy/ppapi_messages.h" |
| #include "ppapi/proxy/printing_resource.h" |
| #include "ppapi/proxy/url_loader_resource.h" |
| #include "ppapi/proxy/url_request_info_resource.h" |
| #include "ppapi/proxy/url_response_info_resource.h" |
| #include "ppapi/proxy/websocket_resource.h" |
| #include "ppapi/shared_impl/ppapi_globals.h" |
| #include "ppapi/shared_impl/ppapi_permissions.h" |
| #include "ppapi/shared_impl/resource_tracker.h" |
| #include "ppapi/shared_impl/var.h" |
| |
| // Note that the code in the creation functions in this file should generally |
| // be the same as that in ppapi/proxy/resource_creation_proxy.cc. See |
| // pepper_in_process_resource_creation.h for what this file is for. |
| |
| namespace content { |
| |
| // PepperInProcessResourceCreation -------------------------------------------- |
| |
| PepperInProcessResourceCreation::PepperInProcessResourceCreation( |
| RendererPpapiHostImpl* host_impl, |
| PepperPluginInstanceImpl* instance) |
| : ResourceCreationImpl(instance), host_impl_(host_impl) {} |
| |
| PepperInProcessResourceCreation::~PepperInProcessResourceCreation() {} |
| |
| PP_Resource PepperInProcessResourceCreation::CreateBrowserFont( |
| PP_Instance instance, |
| const PP_BrowserFont_Trusted_Description* description) { |
| if (!BrowserFontResource_Trusted::IsPPFontDescriptionValid(*description)) |
| return 0; |
| ppapi::Preferences prefs(PpapiPreferencesBuilder::Build( |
| host_impl_->GetRenderViewForInstance(instance)->GetWebkitPreferences())); |
| return (new BrowserFontResource_Trusted( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance, |
| *description, |
| prefs))->GetReference(); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateFileChooser( |
| PP_Instance instance, |
| PP_FileChooserMode_Dev mode, |
| const PP_Var& accept_types) { |
| scoped_refptr<ppapi::StringVar> string_var = |
| ppapi::StringVar::FromPPVar(accept_types); |
| std::string str = string_var.get() ? string_var->value() : std::string(); |
| return (new ppapi::proxy::FileChooserResource( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance, |
| mode, |
| str.c_str()))->GetReference(); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateFileIO( |
| PP_Instance instance) { |
| return (new ppapi::proxy::FileIOResource( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance))->GetReference(); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateFileRef( |
| PP_Instance instance, |
| const ppapi::FileRefCreateInfo& create_info) { |
| return ppapi::proxy::FileRefResource::CreateFileRef( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance, |
| create_info); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateFileSystem( |
| PP_Instance instance, |
| PP_FileSystemType type) { |
| return (new ppapi::proxy::FileSystemResource( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance, |
| type))->GetReference(); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateGraphics2D( |
| PP_Instance instance, |
| const PP_Size* size, |
| PP_Bool is_always_opaque) { |
| return (new ppapi::proxy::Graphics2DResource( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance, |
| *size, |
| is_always_opaque))->GetReference(); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreatePrinting( |
| PP_Instance instance) { |
| return (new ppapi::proxy::PrintingResource( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance))->GetReference(); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateTrueTypeFont( |
| PP_Instance instance, |
| const PP_TrueTypeFontDesc_Dev* desc) { |
| NOTIMPLEMENTED(); |
| return 0; |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateURLLoader( |
| PP_Instance instance) { |
| return (new ppapi::proxy::URLLoaderResource( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance))->GetReference(); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateURLRequestInfo( |
| PP_Instance instance) { |
| return (new ppapi::proxy::URLRequestInfoResource( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance, |
| ppapi::URLRequestInfoData()))->GetReference(); |
| } |
| |
| PP_Resource PepperInProcessResourceCreation::CreateWebSocket( |
| PP_Instance instance) { |
| return (new ppapi::proxy::WebSocketResource( |
| host_impl_->in_process_router()->GetPluginConnection(instance), |
| instance))->GetReference(); |
| } |
| |
| } // namespace content |