Index: chrome/browser/chrome_content_browser_client.cc |
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc |
index 045a52160d6c2a2abf5429fababb0c8a49332496..aadf8415038ea0226e3377e99756d1d5949f28e7 100644 |
--- a/chrome/browser/chrome_content_browser_client.cc |
+++ b/chrome/browser/chrome_content_browser_client.cc |
@@ -78,6 +78,7 @@ |
#include "chrome/common/extensions/extension.h" |
#include "chrome/common/extensions/extension_process_policy.h" |
#include "chrome/common/extensions/extension_set.h" |
+#include "chrome/common/extensions/permissions/socket_permission.h" |
#include "chrome/common/logging_chrome.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/common/render_messages.h" |
@@ -1681,7 +1682,9 @@ void ChromeContentBrowserClient::DidCreatePpapiPlugin( |
} |
bool ChromeContentBrowserClient::AllowPepperSocketAPI( |
- content::BrowserContext* browser_context, const GURL& url) { |
+ content::BrowserContext* browser_context, |
+ const GURL& url, |
+ const SocketPermissionParam& params) { |
if (!url.is_valid()) |
return false; |
@@ -1717,7 +1720,33 @@ bool ChromeContentBrowserClient::AllowPepperSocketAPI( |
if (!extension) |
return false; |
- if (extension->HasAPIPermission(APIPermission::kSocket)) |
+ extensions::SocketPermissionData::OperationType type = |
+ extensions::SocketPermissionData::NONE; |
+ switch (params.type) { |
+ case SocketPermissionParam::TCP_CONNECT: |
+ type = extensions::SocketPermissionData::TCP_CONNECT; |
+ break; |
+ |
+ case SocketPermissionParam::TCP_LISTEN: |
+ type = extensions::SocketPermissionData::TCP_LISTEN; |
+ break; |
+ |
+ case SocketPermissionParam::UDP_BIND: |
+ type = extensions::SocketPermissionData::UDP_BIND; |
+ break; |
+ |
+ case SocketPermissionParam::UDP_SEND_TO: |
+ type = extensions::SocketPermissionData::UDP_SEND_TO; |
+ break; |
+ |
+ default: |
+ NOTREACHED(); |
+ } |
+ |
+ extensions::SocketPermission::CheckParam extension_params( |
+ type, params.host, params.port); |
+ if (extension->CheckAPIPermissionWithParam(APIPermission::kSocket, |
+ &extension_params)) |
ygorshenin1
2012/09/28 14:43:34
nit: delete single space before "&extension_params
Dmitry Polukhin
2012/10/01 11:00:24
Done.
|
return true; |
return false; |