From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: deepak1556 Date: Thu, 20 Sep 2018 17:46:17 -0700 Subject: pepper plugin support This tweaks Chrome's pepper flash and PDF plugin support to make it usable from Electron. diff --git a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc index 82fa5b7026e62cfe69700f30fcc84731fc30afe8..f4ad9fbc72a5cb27ed22ab014ccb2fcb4cb49284 100644 --- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc +++ b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc @@ -6,10 +6,12 @@ #include +#if 0 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/profiles/profile.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/content_settings/core/common/content_settings.h" +#endif #include "content/public/browser/browser_ppapi_host.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" @@ -58,6 +60,7 @@ int32_t PepperBrokerMessageFilter::OnIsAllowed( RenderProcessHost::FromID(render_process_id_); if (!render_process_host) return PP_ERROR_FAILED; +#if 0 Profile* profile = Profile::FromBrowserContext(render_process_host->GetBrowserContext()); HostContentSettingsMap* content_settings = @@ -67,5 +70,6 @@ int32_t PepperBrokerMessageFilter::OnIsAllowed( std::string()); if (setting == CONTENT_SETTING_ALLOW) return PP_OK; - return PP_ERROR_FAILED; +#endif + return PP_OK; } diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc index 0a04a1e0ec56126a7e44537141d024332b22a190..5384d7ac2f2eaf708bf001dd885f401783ac7133 100644 --- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc +++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc @@ -7,17 +7,21 @@ #include #include "base/stl_util.h" +#if 0 #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/pepper_permission_util.h" +#endif #include "content/public/browser/browser_ppapi_host.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/child_process_security_policy.h" #include "content/public/browser/render_view_host.h" +#if 0 #include "extensions/buildflags/buildflags.h" +#endif #include "ppapi/c/pp_errors.h" #include "ppapi/host/dispatch_host_message.h" #include "ppapi/host/host_message_context.h" @@ -26,12 +30,11 @@ #include "ppapi/shared_impl/file_system_util.h" #include "storage/browser/file_system/isolated_context.h" -#if BUILDFLAG(ENABLE_EXTENSIONS) +#if 0 #include "extensions/browser/extension_registry.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "extensions/common/extension_set.h" -#endif namespace { @@ -41,6 +44,7 @@ const char* kPredefinedAllowedCrxFsOrigins[] = { }; } // namespace +#endif // static PepperIsolatedFileSystemMessageFilter* @@ -68,8 +72,10 @@ PepperIsolatedFileSystemMessageFilter::PepperIsolatedFileSystemMessageFilter( profile_directory_(profile_directory), document_url_(document_url), ppapi_host_(ppapi_host) { +#if 0 for (size_t i = 0; i < base::size(kPredefinedAllowedCrxFsOrigins); ++i) allowed_crxfs_origins_.insert(kPredefinedAllowedCrxFsOrigins[i]); +#endif } PepperIsolatedFileSystemMessageFilter:: @@ -94,6 +100,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnResourceMessageReceived( return PP_ERROR_FAILED; } +#if 0 Profile* PepperIsolatedFileSystemMessageFilter::GetProfile() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); ProfileManager* profile_manager = g_browser_process->profile_manager(); @@ -120,6 +127,7 @@ PepperIsolatedFileSystemMessageFilter::CreateCrxFileSystem(Profile* profile) { return storage::IsolatedContext::ScopedFSHandle(); #endif } +#endif int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem( ppapi::host::HostMessageContext* context, @@ -128,7 +136,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem( case PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_INVALID: break; case PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_CRX: - return OpenCrxFileSystem(context); + return PP_ERROR_NOTSUPPORTED; case PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_PLUGINPRIVATE: return OpenPluginPrivateFileSystem(context); } @@ -138,6 +146,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem( return PP_ERROR_FAILED; } +#if 0 int32_t PepperIsolatedFileSystemMessageFilter::OpenCrxFileSystem( ppapi::host::HostMessageContext* context) { #if BUILDFLAG(ENABLE_EXTENSIONS) @@ -178,6 +187,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OpenCrxFileSystem( return PP_ERROR_NOTSUPPORTED; #endif } +#endif int32_t PepperIsolatedFileSystemMessageFilter::OpenPluginPrivateFileSystem( ppapi::host::HostMessageContext* context) { diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h index 56a23e8f41bb418d414f11af5797b30571d4cc2b..6f9f577f16de80dd2ab194b557bbd9ec89599280 100644 --- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h +++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h @@ -20,7 +20,9 @@ #include "storage/browser/file_system/isolated_context.h" #include "url/gurl.h" +#if 0 class Profile; +#endif namespace content { class BrowserPpapiHost; @@ -54,6 +56,7 @@ class PepperIsolatedFileSystemMessageFilter ~PepperIsolatedFileSystemMessageFilter() override; +#if 0 Profile* GetProfile(); // Returns filesystem id of isolated filesystem if valid, or empty string @@ -61,10 +64,13 @@ class PepperIsolatedFileSystemMessageFilter // allows access on that thread. storage::IsolatedContext::ScopedFSHandle CreateCrxFileSystem( Profile* profile); +#endif int32_t OnOpenFileSystem(ppapi::host::HostMessageContext* context, PP_IsolatedFileSystemType_Private type); +#if 0 int32_t OpenCrxFileSystem(ppapi::host::HostMessageContext* context); +#endif int32_t OpenPluginPrivateFileSystem(ppapi::host::HostMessageContext* context); const int render_process_id_; @@ -75,8 +81,10 @@ class PepperIsolatedFileSystemMessageFilter // Not owned by this object. ppapi::host::PpapiHost* ppapi_host_; +#if 0 // Set of origins that can use CrxFs private APIs from NaCl. std::set allowed_crxfs_origins_; +#endif DISALLOW_COPY_AND_ASSIGN(PepperIsolatedFileSystemMessageFilter); }; diff --git a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc index 7820a55f563d40865cd7bbf4a03e7f82db81043e..d9b1c4bc6abfa395782761455d4dd2e3105d7b14 100644 --- a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc +++ b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc @@ -7,8 +7,13 @@ #include "base/check_op.h" #include "chrome/renderer/pepper/pepper_flash_font_file_host.h" #include "chrome/renderer/pepper/pepper_flash_fullscreen_host.h" +#if 0 #include "chrome/renderer/pepper/pepper_uma_host.h" +#endif +#include "electron/buildflags/buildflags.h" +#if BUILDFLAG(ENABLE_PDF_VIEWER) #include "components/pdf/renderer/pepper_pdf_host.h" +#endif #include "content/public/renderer/renderer_ppapi_host.h" #include "ppapi/host/ppapi_host.h" #include "ppapi/host/resource_host.h" @@ -36,19 +41,10 @@ ChromeRendererPepperHostFactory::CreateResourceHost( if (!host_->IsValidInstance(instance)) return nullptr; - if (host_->GetPpapiHost()->permissions().HasPermission( - ppapi::PERMISSION_FLASH)) { - switch (message.type()) { - case PpapiHostMsg_FlashFullscreen_Create::ID: { - return std::make_unique(host_, instance, - resource); - } - } - } - // 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 BUILDFLAG(ENABLE_PDF_VIEWER) if (host_->GetPpapiHost()->permissions().HasPermission( ppapi::PERMISSION_FLASH) || host_->GetPpapiHost()->permissions().HasPermission( @@ -75,7 +71,9 @@ ChromeRendererPepperHostFactory::CreateResourceHost( } } } +#endif +#if 0 // 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 whitelisted apps which may not have @@ -85,6 +83,7 @@ ChromeRendererPepperHostFactory::CreateResourceHost( return std::make_unique(host_, instance, resource); } } +#endif return nullptr; } diff --git a/chrome/renderer/pepper/pepper_helper.h b/chrome/renderer/pepper/pepper_helper.h index e021c964da3d467530775164a67d5cadaf6dc741..e035f0fb9e2baa6a9148b43765b09c52bc45599b 100644 --- a/chrome/renderer/pepper/pepper_helper.h +++ b/chrome/renderer/pepper/pepper_helper.h @@ -6,12 +6,14 @@ #define CHROME_RENDERER_PEPPER_PEPPER_HELPER_H_ #include "base/compiler_specific.h" +#include "base/component_export.h" #include "base/macros.h" #include "content/public/renderer/render_frame_observer.h" // This class listens for Pepper creation events from the RenderFrame and // attaches the parts required for Chrome-specific plugin support. -class PepperHelper : public content::RenderFrameObserver { +class COMPONENT_EXPORT(PEPPER_FLASH) PepperHelper + : public content::RenderFrameObserver { public: explicit PepperHelper(content::RenderFrame* render_frame); ~PepperHelper() override;