From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: deepak1556 <hop2deep@gmail.com>
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 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 <stddef.h>
 
 #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<std::string> 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<PepperFlashFullscreenHost>(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<PepperUMAHost>(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;
