diff options
Diffstat (limited to 'src/core/renderer/pepper/pepper_renderer_host_factory_qt.cpp')
-rw-r--r-- | src/core/renderer/pepper/pepper_renderer_host_factory_qt.cpp | 50 |
1 files changed, 42 insertions, 8 deletions
diff --git a/src/core/renderer/pepper/pepper_renderer_host_factory_qt.cpp b/src/core/renderer/pepper/pepper_renderer_host_factory_qt.cpp index 636ca12f1..febde84f7 100644 --- a/src/core/renderer/pepper/pepper_renderer_host_factory_qt.cpp +++ b/src/core/renderer/pepper/pepper_renderer_host_factory_qt.cpp @@ -44,6 +44,9 @@ #include "pepper_renderer_host_factory_qt.h" #include "pepper_flash_renderer_host_qt.h" + +#include "base/memory/ptr_util.h" +#include "chrome/renderer/pepper/pepper_flash_font_file_host.h" #include "content/public/renderer/renderer_ppapi_host.h" #include "ppapi/host/ppapi_host.h" #include "ppapi/host/resource_host.h" @@ -63,7 +66,7 @@ PepperRendererHostFactoryQt::~PepperRendererHostFactoryQt() { } -scoped_ptr<ppapi::host::ResourceHost> PepperRendererHostFactoryQt::CreateResourceHost( +std::unique_ptr<ppapi::host::ResourceHost> PepperRendererHostFactoryQt::CreateResourceHost( ppapi::host::PpapiHost* host, PP_Resource resource, PP_Instance instance, @@ -72,16 +75,47 @@ scoped_ptr<ppapi::host::ResourceHost> PepperRendererHostFactoryQt::CreateResourc DCHECK_EQ(host_->GetPpapiHost(), host); if (!host_->IsValidInstance(instance)) - return scoped_ptr<ppapi::host::ResourceHost>(); + return nullptr; + + if (host_->GetPpapiHost()->permissions().HasPermission(ppapi::PERMISSION_FLASH)) { + switch (message.type()) { + case PpapiHostMsg_Flash_Create::ID: + return base::WrapUnique(new PepperFlashRendererHostQt(host_, instance, resource)); + case PpapiHostMsg_FlashFullscreen_Create::ID: + case PpapiHostMsg_FlashMenu_Create::ID: + // Not implemented + break; + } + } + // TODO(raymes): PDF also needs access to the FlashFontFileHost currently. + // We should either rename PPB_FlashFont_File to PPB_FontFile_Private or get + // rid of its use in PDF if possible. if (host_->GetPpapiHost()->permissions().HasPermission(ppapi::PERMISSION_FLASH) - && message.type() == PpapiHostMsg_Flash_Create::ID) - return scoped_ptr<ppapi::host::ResourceHost>( - new PepperFlashRendererHostQt(host_, - instance, - resource)); + || host_->GetPpapiHost()->permissions().HasPermission(ppapi::PERMISSION_PRIVATE)) { + switch (message.type()) { + case PpapiHostMsg_FlashFontFile_Create::ID: { + ppapi::proxy::SerializedFontDescription description; + PP_PrivateFontCharset charset; + if (ppapi::UnpackMessage<PpapiHostMsg_FlashFontFile_Create>(message, &description, &charset)) + return base::WrapUnique(new PepperFlashFontFileHost(host_, instance, resource, description, charset)); + break; + } + case PpapiHostMsg_FlashDRM_Create::ID: + // Not implemented + break; + } + } + + if (host_->GetPpapiHost()->permissions().HasPermission(ppapi::PERMISSION_PRIVATE)) { + switch (message.type()) { + case PpapiHostMsg_PDF_Create::ID: + // Not implemented + break; + } + } - return scoped_ptr<ppapi::host::ResourceHost>(); + return nullptr; } } // QtWebEngineCore |