electron/patches/chromium/pepper_plugin_support.patch

485 lines
18 KiB
Diff

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_broker_message_filter.cc b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
index 4bb88c55a82a83cef8330ec8157b49d5adb097ce..48f4e385a57eb0e00c90488fbf052900b6884775 100644
--- a/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_broker_message_filter.cc
@@ -7,10 +7,12 @@
#include <string>
#include "base/task/post_task.h"
+#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"
@@ -59,6 +61,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 =
@@ -68,5 +71,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_flash_browser_host.cc b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
index 860c5738d5731c901aeb9074074f3337d7fc4053..27435c3c91440e8c83e209097aae2b2231061eee 100644
--- a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc
@@ -8,9 +8,11 @@
#include "base/task/post_task.h"
#include "base/time/time.h"
#include "build/build_config.h"
+#if 0
#include "chrome/browser/content_settings/cookie_settings_factory.h"
#include "chrome/browser/profiles/profile.h"
#include "components/content_settings/core/browser/cookie_settings.h"
+#endif
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_ppapi_host.h"
#include "content/public/browser/browser_task_traits.h"
@@ -43,6 +45,7 @@ using content::RenderProcessHost;
namespace {
+#if 0
// Get the CookieSettings on the UI thread for the given render process ID.
scoped_refptr<content_settings::CookieSettings> GetCookieSettings(
int render_process_id) {
@@ -56,6 +59,7 @@ scoped_refptr<content_settings::CookieSettings> GetCookieSettings(
}
return nullptr;
}
+#endif
void PepperBindConnectorReceiver(
mojo::PendingReceiver<service_manager::mojom::Connector>
@@ -72,7 +76,9 @@ PepperFlashBrowserHost::PepperFlashBrowserHost(BrowserPpapiHost* host,
PP_Instance instance,
PP_Resource resource)
: ResourceHost(host->GetPpapiHost(), instance, resource),
+#if 0
host_(host),
+#endif
delay_timer_(FROM_HERE,
base::TimeDelta::FromSeconds(45),
this,
@@ -125,6 +131,7 @@ int32_t PepperFlashBrowserHost::OnGetLocalTimeZoneOffset(
int32_t PepperFlashBrowserHost::OnGetLocalDataRestrictions(
ppapi::host::HostMessageContext* context) {
+#if 0
// Getting the Flash LSO settings requires using the CookieSettings which
// belong to the profile which lives on the UI thread. We lazily initialize
// |cookie_settings_| by grabbing the reference from the UI thread and then
@@ -145,9 +152,11 @@ int32_t PepperFlashBrowserHost::OnGetLocalDataRestrictions(
context->MakeReplyMessageContext(), document_url,
plugin_url));
}
- return PP_OK_COMPLETIONPENDING;
+#endif
+ return PP_FLASHLSORESTRICTIONS_IN_MEMORY;
}
+#if 0
void PepperFlashBrowserHost::GetLocalDataRestrictions(
ppapi::host::ReplyMessageContext reply_context,
const GURL& document_url,
@@ -176,6 +185,7 @@ void PepperFlashBrowserHost::GetLocalDataRestrictions(
PpapiPluginMsg_Flash_GetLocalDataRestrictionsReply(
static_cast<int32_t>(restrictions)));
}
+#endif
device::mojom::WakeLock* PepperFlashBrowserHost::GetWakeLock() {
// Here is a lazy binding, and will not reconnect after connection error.
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h
index 6b13bae8def62d9a26d68ac8396b4bf6f7439c1a..d92b5a5855c0cebf94922a31f686e15e3a6cd833 100644
--- a/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_browser_host.h
@@ -24,9 +24,11 @@ namespace content {
class BrowserPpapiHost;
}
+#if 0
namespace content_settings {
class CookieSettings;
}
+#endif
class GURL;
@@ -50,15 +52,19 @@ class PepperFlashBrowserHost : public ppapi::host::ResourceHost {
const base::Time& t);
int32_t OnGetLocalDataRestrictions(ppapi::host::HostMessageContext* context);
+#if 0
void GetLocalDataRestrictions(
ppapi::host::ReplyMessageContext reply_context,
const GURL& document_url,
const GURL& plugin_url,
scoped_refptr<content_settings::CookieSettings> cookie_settings);
+#endif
device::mojom::WakeLock* GetWakeLock();
+#if 0
content::BrowserPpapiHost* host_;
+#endif
int render_process_id_;
// Requests a wake lock to prevent going to sleep, and a timer to cancel it
@@ -66,8 +72,10 @@ class PepperFlashBrowserHost : public ppapi::host::ResourceHost {
mojo::Remote<device::mojom::WakeLock> wake_lock_;
base::DelayTimer delay_timer_;
+#if 0
// For fetching the Flash LSO settings.
scoped_refptr<content_settings::CookieSettings> cookie_settings_;
+#endif
base::WeakPtrFactory<PepperFlashBrowserHost> weak_factory_{this};
DISALLOW_COPY_AND_ASSIGN(PepperFlashBrowserHost);
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
index 2e51425cb66f25f240ad7f4a052bcf6eb76f2062..240fa299b1160ebb2f9b20c7361405c9b84d5d2f 100644
--- a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.cc
@@ -20,6 +20,7 @@
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/common/pepper_plugin_info.h"
+#include "net/base/network_interfaces.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/host/dispatch_host_message.h"
#include "ppapi/host/host_message_context.h"
@@ -127,7 +128,9 @@ PepperFlashDRMHost::PepperFlashDRMHost(BrowserPpapiHost* host,
content::ChildProcessSecurityPolicy::GetInstance()->GrantReadFile(
render_process_id, voucher_file);
+#if 0
fetcher_ = new DeviceIDFetcher(render_process_id);
+#endif
monitor_finder_ = new MonitorFinder(render_process_id, render_frame_id);
monitor_finder_->GetMonitor();
}
@@ -150,12 +153,18 @@ int32_t PepperFlashDRMHost::OnResourceMessageReceived(
int32_t PepperFlashDRMHost::OnHostMsgGetDeviceID(
ppapi::host::HostMessageContext* context) {
+#if 0
if (!fetcher_->Start(base::Bind(&PepperFlashDRMHost::GotDeviceID,
weak_factory_.GetWeakPtr(),
context->MakeReplyMessageContext()))) {
return PP_ERROR_INPROGRESS;
}
- return PP_OK_COMPLETIONPENDING;
+#endif
+ static std::string id;
+ if (id.empty())
+ id = net::GetHostName();
+ context->reply_msg = PpapiPluginMsg_FlashDRM_GetDeviceIDReply(id);
+ return PP_OK;
}
int32_t PepperFlashDRMHost::OnHostMsgGetHmonitor(
@@ -184,6 +193,7 @@ int32_t PepperFlashDRMHost::OnHostMsgMonitorIsExternal(
return PP_OK;
}
+#if 0
void PepperFlashDRMHost::GotDeviceID(
ppapi::host::ReplyMessageContext reply_context,
const std::string& id,
@@ -196,3 +206,4 @@ void PepperFlashDRMHost::GotDeviceID(
host()->SendReply(reply_context,
PpapiPluginMsg_FlashDRM_GetDeviceIDReply(id));
}
+#endif
diff --git a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.h b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.h
index b9d2ce7f7f6837ee7b304daac82d21a3147c6faf..4d4b023d62d12b4d119acbfdee64f4157494ccb3 100644
--- a/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.h
+++ b/chrome/browser/renderer_host/pepper/pepper_flash_drm_host.h
@@ -11,7 +11,9 @@
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
+#if 0
#include "chrome/browser/renderer_host/pepper/device_id_fetcher.h"
+#endif
#include "ppapi/host/host_message_context.h"
#include "ppapi/host/resource_host.h"
@@ -49,7 +51,9 @@ class PepperFlashDRMHost : public ppapi::host::ResourceHost {
const std::string& id,
int32_t result);
+#if 0
scoped_refptr<DeviceIDFetcher> fetcher_;
+#endif
scoped_refptr<MonitorFinder> monitor_finder_;
base::WeakPtrFactory<PepperFlashDRMHost> weak_factory_{this};
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 0fa0fa341e93bd089ef2a22f74450af55db69f5b..9a6d8e5740d6ccede998efd3a96496acd9efabfb 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
@@ -8,17 +8,21 @@
#include "base/stl_util.h"
#include "base/task/post_task.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"
@@ -27,12 +31,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 {
@@ -42,6 +45,7 @@ const char* kPredefinedAllowedCrxFsOrigins[] = {
};
} // namespace
+#endif
// static
PepperIsolatedFileSystemMessageFilter*
@@ -69,8 +73,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::
@@ -95,6 +101,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();
@@ -121,6 +128,7 @@ PepperIsolatedFileSystemMessageFilter::CreateCrxFileSystem(Profile* profile) {
return storage::IsolatedContext::ScopedFSHandle();
#endif
}
+#endif
int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem(
ppapi::host::HostMessageContext* context,
@@ -129,7 +137,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);
}
@@ -139,6 +147,7 @@ int32_t PepperIsolatedFileSystemMessageFilter::OnOpenFileSystem(
return PP_ERROR_FAILED;
}
+#if 0
int32_t PepperIsolatedFileSystemMessageFilter::OpenCrxFileSystem(
ppapi::host::HostMessageContext* context) {
#if BUILDFLAG(ENABLE_EXTENSIONS)
@@ -179,6 +188,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 b36248debee4f5e0503e7611f7d1c47d59650f5b..7af31ee0d2cbb4c8fc7cd41c356305d6476815c5 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 d63e90b6c5079ab3237c4bad3d5e63ce2f99c657..f1d4503d1f72df67ffcc73000a8a2ad3e2c93327 100644
--- a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc
+++ b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc
@@ -10,8 +10,13 @@
#include "chrome/renderer/pepper/pepper_flash_fullscreen_host.h"
#include "chrome/renderer/pepper/pepper_flash_menu_host.h"
#include "chrome/renderer/pepper/pepper_flash_renderer_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"
@@ -86,6 +91,7 @@ ChromeRendererPepperHostFactory::CreateResourceHost(
}
}
+#if BUILDFLAG(ENABLE_PDF_VIEWER)
if (host_->GetPpapiHost()->permissions().HasPermission(
ppapi::PERMISSION_PDF)) {
switch (message.type()) {
@@ -94,7 +100,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
@@ -104,6 +112,7 @@ ChromeRendererPepperHostFactory::CreateResourceHost(
return std::make_unique<PepperUMAHost>(host_, instance, resource);
}
}
+#endif
return nullptr;
}
diff --git a/chrome/renderer/pepper/pepper_flash_renderer_host.cc b/chrome/renderer/pepper/pepper_flash_renderer_host.cc
index fc3ef9c9888d84c993fe7682afef0a188da12894..fb5782894ed8aa9fd7ccff09cff8d7f5520af8dd 100644
--- a/chrome/renderer/pepper/pepper_flash_renderer_host.cc
+++ b/chrome/renderer/pepper/pepper_flash_renderer_host.cc
@@ -13,7 +13,9 @@
#include "base/no_destructor.h"
#include "base/stl_util.h"
#include "base/strings/string_util.h"
+#if 0
#include "components/pdf/renderer/pepper_pdf_host.h"
+#endif
#include "content/public/renderer/pepper_plugin_instance.h"
#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/renderer_ppapi_host.h"
@@ -133,9 +135,11 @@ bool IsSimpleHeader(const std::string& lower_case_header_name,
}
void RecordFlashNavigateUsage(FlashNavigateUsage usage) {
+#if 0
DCHECK_NE(FLASH_NAVIGATE_USAGE_ENUM_COUNT, usage);
UMA_HISTOGRAM_ENUMERATION(
"Plugin.FlashNavigateUsage", usage, FLASH_NAVIGATE_USAGE_ENUM_COUNT);
+#endif
}
} // namespace
@@ -374,6 +378,8 @@ int32_t PepperFlashRendererHost::OnIsRectTopmost(
int32_t PepperFlashRendererHost::OnInvokePrinting(
ppapi::host::HostMessageContext* host_context) {
+#if 0
pdf::PepperPDFHost::InvokePrintingForInstance(pp_instance());
- return PP_OK;
+#endif
+ return PP_ERROR_FAILED;
}
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;