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 eca884420b83a15ead218782a0842e3f96cf41fa..02b5c08774f3868b0dbf3e0d2dec31555ea69e67 100644 |
--- a/chrome/renderer/chrome_content_renderer_client.cc |
+++ b/chrome/renderer/chrome_content_renderer_client.cc |
@@ -774,16 +774,22 @@ bool ChromeContentRendererClient::IsNaClAllowed( |
bool is_nacl_unrestricted, |
const Extension* extension, |
WebPluginParams* params) { |
- // Temporarily allow these URLs to run NaCl apps, as long as the manifest is |
- // also whitelisted. We should remove this code when PNaCl ships. |
- bool is_whitelisted_url = |
+ // Temporarily allow these whitelisted apps to use NaCl. |
+ std::string manifest_url_path = manifest_url.path(); |
+ bool is_whitelisted_app = |
+ // Whitelisted apps must be served over https. |
app_url.SchemeIs("https") && |
- (app_url.host() == "plus.google.com" || |
- app_url.host() == "plus.sandbox.google.com") && |
manifest_url.SchemeIs("https") && |
- manifest_url.host() == "ssl.gstatic.com" && |
- ((manifest_url.path().find("s2/oz/nacl/") == 1) || |
- (manifest_url.path().find("photos/nacl/") == 1)); |
+ // Photos app. |
+ (((app_url.DomainIs("plus.google.com") || |
+ app_url.DomainIs("plus.sandbox.google.com")) && |
+ manifest_url.DomainIs("ssl.gstatic.com") && |
+ (manifest_url_path.find("s2/oz/nacl/") == 1 || |
+ manifest_url_path.find("photos/nacl/") == 1)) || |
+ // Hangouts app. |
darin (slow to review)
2013/09/16 19:37:44
nit: "Hangouts" -> "Chat" since the URLs don't men
bbudge
2013/09/16 19:47:51
Done.
|
+ (EndsWith(app_url.host(), "talkgadget.google.com", false) && |
+ manifest_url.DomainIs("ssl.gstatic.com") && |
+ manifest_url_path.find("chat/apps/fx") == 1)); |
bool is_extension_from_webstore = |
extension && extension->from_webstore(); |
@@ -810,7 +816,7 @@ bool ChromeContentRendererClient::IsNaClAllowed( |
// scheme. Also allow invocations if they are from whitelisted URLs or |
// if --enable-nacl is set. |
bool is_nacl_allowed = is_nacl_unrestricted || |
- is_whitelisted_url || |
+ is_whitelisted_app || |
is_nacl_pdf_viewer || |
is_invoked_by_hosted_app || |
(is_invoked_by_extension && |
@@ -821,7 +827,7 @@ bool ChromeContentRendererClient::IsNaClAllowed( |
// Make sure that PPAPI 'dev' interfaces aren't available for production |
// apps unless they're whitelisted. |
WebString dev_attribute = WebString::fromUTF8("@dev"); |
- if ((!is_whitelisted_url && !is_extension_from_webstore) || |
+ if ((!is_whitelisted_app && !is_extension_from_webstore) || |
app_can_use_dev_interfaces) { |
// Add the special '@dev' attribute. |
std::vector<string16> param_names; |
@@ -1286,12 +1292,11 @@ bool ChromeContentRendererClient::AllowBrowserPlugin( |
bool ChromeContentRendererClient::AllowPepperMediaStreamAPI( |
const GURL& url) { |
#if !defined(OS_ANDROID) |
- std::string host = url.host(); |
// Allow only the Hangouts app to use the MediaStream APIs. It's OK to check |
// the whitelist in the renderer, since we're only preventing access until |
// these APIs are public and stable. |
- if (url.SchemeIs(extensions::kExtensionScheme) && |
- !host.compare("hpcogiolnobbkijnnkdahioejpdcdoph")) { |
+ if (url.SchemeIs("https") && |
+ url.DomainIs("talkgadget.google.com")) { |
juberti2
2013/09/16 19:41:52
I think this needs the EndsWith treatment too.
bbudge
2013/09/16 19:47:51
Yep, good catch. Done.
|
return true; |
} |
// Allow access for tests. |