Index: trunk/src/chrome/renderer/chrome_content_renderer_client.cc |
=================================================================== |
--- trunk/src/chrome/renderer/chrome_content_renderer_client.cc (revision 233010) |
+++ trunk/src/chrome/renderer/chrome_content_renderer_client.cc (working copy) |
@@ -209,12 +209,24 @@ |
return false; |
} |
+#if defined(ENABLE_PLUGINS) |
+const char* kPredefinedAllowedFileHandleOrigins[] = { |
+ "6EAED1924DB611B6EEF2A664BD077BE7EAD33B8F", // see crbug.com/234789 |
+ "4EB74897CB187C7633357C2FE832E0AD6A44883A" // see crbug.com/234789 |
+}; |
+#endif |
+ |
} // namespace |
namespace chrome { |
ChromeContentRendererClient::ChromeContentRendererClient() { |
g_current_client = this; |
+ |
+#if defined(ENABLE_PLUGINS) |
+ for (size_t i = 0; i < arraysize(kPredefinedAllowedFileHandleOrigins); ++i) |
+ allowed_file_handle_origins_.insert(kPredefinedAllowedFileHandleOrigins[i]); |
+#endif |
} |
ChromeContentRendererClient::~ChromeContentRendererClient() { |
@@ -1295,6 +1307,23 @@ |
return module_name == "Native Client"; |
} |
+bool ChromeContentRendererClient::IsPluginAllowedToCallRequestOSFileHandle( |
+ WebKit::WebPluginContainer* container) { |
+#if defined(ENABLE_PLUGINS) |
+ if (!container) |
+ return false; |
+ GURL url = container->element().document().baseURL(); |
+ const ExtensionSet* extension_set = extension_dispatcher_->extensions(); |
+ |
+ return IsExtensionOrSharedModuleWhitelisted(url, extension_set, |
+ allowed_file_handle_origins_) || |
+ IsHostAllowedByCommandLine(url, extension_set, |
+ switches::kAllowNaClFileHandleAPI); |
+#else |
+ return false; |
+#endif |
+} |
+ |
WebKit::WebSpeechSynthesizer* |
ChromeContentRendererClient::OverrideSpeechSynthesizer( |
WebKit::WebSpeechSynthesizerClient* client) { |