Index: chrome/renderer/chrome_content_renderer_client.cc |
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc |
index b4f26ca95bb4e583b927e892d46a44d7b6c297a6..a649ed7bf23452437909d7a61a4ce03b3167777b 100644 |
--- a/chrome/renderer/chrome_content_renderer_client.cc |
+++ b/chrome/renderer/chrome_content_renderer_client.cc |
@@ -18,6 +18,7 @@ |
#include "chrome/common/chrome_content_client.h" |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/chrome_switches.h" |
+#include "chrome/common/chrome_version_info.h" |
#include "chrome/common/content_settings_pattern.h" |
#include "chrome/common/crash_keys.h" |
#include "chrome/common/extensions/chrome_extensions_client.h" |
@@ -162,6 +163,18 @@ namespace { |
ChromeContentRendererClient* g_current_client; |
+#if defined(ENABLE_PLUGINS) |
+const char* const kPredefinedAllowedCompositorOrigins[] = { |
+ "6EAED1924DB611B6EEF2A664BD077BE7EAD33B8F", // see crbug.com/383937 |
+ "4EB74897CB187C7633357C2FE832E0AD6A44883A" // see crbug.com/383937 |
+}; |
+ |
+const char* const kPredefinedAllowedVideoDecodeOrigins[] = { |
+ "6EAED1924DB611B6EEF2A664BD077BE7EAD33B8F", // see crbug.com/383937 |
+ "4EB74897CB187C7633357C2FE832E0AD6A44883A" // see crbug.com/383937 |
+}; |
+#endif |
+ |
static void AppendParams(const std::vector<base::string16>& additional_names, |
const std::vector<base::string16>& additional_values, |
WebVector<WebString>* existing_names, |
@@ -240,6 +253,13 @@ ChromeContentRendererClient::ChromeContentRendererClient() { |
extensions::ChromeExtensionsClient::GetInstance()); |
extensions::ExtensionsRendererClient::Set( |
ChromeExtensionsRendererClient::GetInstance()); |
+#if defined(ENABLE_PLUGINS) |
+ for (size_t i = 0; i < arraysize(kPredefinedAllowedCompositorOrigins); ++i) |
+ allowed_compositor_origins_.insert(kPredefinedAllowedCompositorOrigins[i]); |
+ for (size_t i = 0; i < arraysize(kPredefinedAllowedVideoDecodeOrigins); ++i) |
+ allowed_video_decode_origins_.insert( |
+ kPredefinedAllowedVideoDecodeOrigins[i]); |
+#endif |
} |
ChromeContentRendererClient::~ChromeContentRendererClient() { |
@@ -1433,3 +1453,46 @@ ChromeContentRendererClient::CreateWorkerPermissionClientProxy( |
blink::WebFrame* frame) { |
return new WorkerPermissionClientProxy(render_frame, frame); |
} |
+ |
+bool ChromeContentRendererClient::IsPluginAllowedToUseDevChannelAPIs() { |
+#if defined(ENABLE_PLUGINS) |
+ // Allow access for tests. |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnablePepperTesting)) { |
+ return true; |
+ } |
+ |
+ chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel(); |
+ // Allow dev channel APIs to be used on "Canary", "Dev", and "Unknown" |
+ // releases of Chrome. Permitting "Unknown" allows these APIs to be used on |
+ // Chromium builds as well. |
+ return channel <= chrome::VersionInfo::CHANNEL_DEV; |
+#else |
+ return false; |
+#endif |
+} |
+ |
+bool ChromeContentRendererClient::IsPluginAllowedToUseCompositorAPI( |
+ const GURL& url) { |
+#if defined(ENABLE_PLUGINS) |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnablePepperTesting)) |
+ return true; |
+ return IsExtensionOrSharedModuleWhitelisted(url, allowed_compositor_origins_); |
+#else |
+ return false; |
+#endif |
+} |
+ |
+bool ChromeContentRendererClient::IsPluginAllowedToUseVideoDecodeAPI( |
+ const GURL& url) { |
+#if defined(ENABLE_PLUGINS) |
+ if (CommandLine::ForCurrentProcess()->HasSwitch( |
+ switches::kEnablePepperTesting)) |
+ return true; |
+ return IsExtensionOrSharedModuleWhitelisted(url, |
+ allowed_video_decode_origins_); |
+#else |
+ return false; |
+#endif |
+} |