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_isolated_file_system_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc index 46513bf122445f822917a1a80d5d9079f288e1b4..7becf2e72ca677335dbd241fa0fef30768a3fc28 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 @@ -12,17 +12,21 @@ #include #include "base/task/sequenced_task_runner.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" @@ -31,12 +35,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 { @@ -46,6 +49,7 @@ const char* kPredefinedAllowedCrxFsOrigins[] = { }; } // namespace +#endif // static PepperIsolatedFileSystemMessageFilter* @@ -69,11 +73,16 @@ PepperIsolatedFileSystemMessageFilter::PepperIsolatedFileSystemMessageFilter( const base::FilePath& profile_directory, const GURL& document_url, ppapi::host::PpapiHost* ppapi_host) +#if 0 : render_process_id_(render_process_id), profile_directory_(profile_directory), document_url_(document_url) { for (size_t i = 0; i < std::size(kPredefinedAllowedCrxFsOrigins); ++i) allowed_crxfs_origins_.insert(kPredefinedAllowedCrxFsOrigins[i]); +#else + : profile_directory_(profile_directory), + document_url_(document_url) { +#endif } PepperIsolatedFileSystemMessageFilter:: @@ -98,6 +107,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(); @@ -122,6 +132,7 @@ PepperIsolatedFileSystemMessageFilter::CreateCrxFileSystem(Profile* profile) { return storage::IsolatedContext::ScopedFSHandle(); #endif } +#endif int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem( ppapi::host::HostMessageContext* context, @@ -130,7 +141,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem( case PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_INVALID: break; case PP_ISOLATEDFILESYSTEMTYPE_PRIVATE_CRX: - return OpenCrxFileSystem(context); + return PP_ERROR_NOTSUPPORTED; } NOTREACHED_IN_MIGRATION(); context->reply_msg = @@ -138,6 +149,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem( return PP_ERROR_FAILED; } +#if 0 int32_t PepperIsolatedFileSystemMessageFilter::OpenCrxFileSystem( ppapi::host::HostMessageContext* context) { #if BUILDFLAG(ENABLE_EXTENSIONS) @@ -178,3 +190,4 @@ int32_t PepperIsolatedFileSystemMessageFilter::OpenCrxFileSystem( return PP_ERROR_NOTSUPPORTED; #endif } +#endif 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 716f5f9abe27a4411f7cc47c37d80d9a72099369..77a5cd69317db2c02a4ca75b91cea9405ea99de5 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; @@ -59,6 +61,7 @@ class PepperIsolatedFileSystemMessageFilter ~PepperIsolatedFileSystemMessageFilter() override; +#if 0 Profile* GetProfile(); // Returns filesystem id of isolated filesystem if valid, or empty string @@ -66,18 +69,23 @@ 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); const int render_process_id_; +#endif // Keep a copy from original thread. const base::FilePath profile_directory_; const GURL document_url_; +#if 0 // Set of origins that can use CrxFs private APIs from NaCl. std::set allowed_crxfs_origins_; +#endif }; #endif // CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_ISOLATED_FILE_SYSTEM_MESSAGE_FILTER_H_ diff --git a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc index 8687c49c7b8b96b1d51eae1a482154c21bb7e20c..983ef9a013184344514b69e8ef2a48a75e67ed01 100644 --- a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc +++ b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc @@ -5,7 +5,9 @@ #include "chrome/renderer/pepper/chrome_renderer_pepper_host_factory.h" #include "base/check_op.h" +#if 0 #include "chrome/renderer/pepper/pepper_uma_host.h" +#endif #include "content/public/renderer/renderer_ppapi_host.h" #include "ppapi/host/ppapi_host.h" #include "ppapi/host/resource_host.h" @@ -33,6 +35,7 @@ ChromeRendererPepperHostFactory::CreateResourceHost( if (!host_->IsValidInstance(instance)) return nullptr; +#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 @@ -42,6 +45,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 3270fecaeae81ff98995268613cbe4f834195b53..9b8156a8e188f97647288c96d664a2d733e02afd 100644 --- a/chrome/renderer/pepper/pepper_helper.h +++ b/chrome/renderer/pepper/pepper_helper.h @@ -5,11 +5,13 @@ #ifndef CHROME_RENDERER_PEPPER_PEPPER_HELPER_H_ #define CHROME_RENDERER_PEPPER_PEPPER_HELPER_H_ +#include "base/component_export.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); diff --git a/ppapi/buildflags/buildflags.gni b/ppapi/buildflags/buildflags.gni index 0bc0e153dff7ef5c093dce4f73b709ac36024d63..fba1a83be000ed58170ff800be1b43862f7d3359 100644 --- a/ppapi/buildflags/buildflags.gni +++ b/ppapi/buildflags/buildflags.gni @@ -19,7 +19,7 @@ declare_args() { # Enables Pepper API (PPAPI) plugin support. # The only remaining PPAPI plugin supported is NaCl and if is disabled # we can disable PPAPI. - enable_ppapi = enable_plugins && enable_nacl && !is_fuchsia + enable_ppapi = enable_plugins && !is_fuchsia } assert(enable_plugins || !enable_ppapi)