Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1579)

Unified Diff: content/browser/renderer_host/pepper/pepper_message_filter.cc

Issue 11441012: PPB_UDPSocket_Private is switched to the new Pepper proxy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync. Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/pepper/pepper_message_filter.cc
diff --git a/content/browser/renderer_host/pepper/pepper_message_filter.cc b/content/browser/renderer_host/pepper/pepper_message_filter.cc
index 1af7b97e42865684e3aceddaf42ecf9f31ea6aaa..381735c824c62e0de584399de29d8e92440631f6 100644
--- a/content/browser/renderer_host/pepper/pepper_message_filter.cc
+++ b/content/browser/renderer_host/pepper/pepper_message_filter.cc
@@ -22,6 +22,7 @@
#include "content/browser/renderer_host/pepper/pepper_tcp_server_socket.h"
#include "content/browser/renderer_host/pepper/pepper_tcp_socket.h"
#include "content/browser/renderer_host/pepper/pepper_udp_socket.h"
+#include "content/browser/renderer_host/pepper/pepper_utils.h"
#include "content/browser/renderer_host/render_process_host_impl.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/common/pepper_messages.h"
@@ -30,7 +31,6 @@
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/font_list_async.h"
#include "content/public/browser/resource_context.h"
-#include "content/public/browser/site_instance.h"
#include "content/public/common/content_client.h"
#include "net/base/address_family.h"
#include "net/base/address_list.h"
@@ -70,17 +70,17 @@ void CreateNetAddressListFromAddressList(
} // namespace
-PepperMessageFilter::PepperMessageFilter(ProcessType type,
+PepperMessageFilter::PepperMessageFilter(ProcessType process_type,
int process_id,
BrowserContext* browser_context)
- : process_type_(type),
+ : process_type_(process_type),
permissions_(),
process_id_(process_id),
nacl_render_view_id_(0),
resource_context_(browser_context->GetResourceContext()),
host_resolver_(NULL),
next_socket_id_(1) {
- DCHECK(type == RENDERER);
+ DCHECK(process_type == PROCESS_TYPE_RENDERER);
DCHECK(browser_context);
// Keep BrowserContext data in FILE-thread friendly storage.
browser_path_ = browser_context->GetPath();
@@ -89,10 +89,10 @@ PepperMessageFilter::PepperMessageFilter(ProcessType type,
}
PepperMessageFilter::PepperMessageFilter(
- ProcessType type,
+ ProcessType process_type,
const ppapi::PpapiPermissions& permissions,
net::HostResolver* host_resolver)
- : process_type_(type),
+ : process_type_(process_type),
permissions_(permissions),
process_id_(0),
nacl_render_view_id_(0),
@@ -100,24 +100,24 @@ PepperMessageFilter::PepperMessageFilter(
host_resolver_(host_resolver),
next_socket_id_(1),
incognito_(false) {
- DCHECK(type == PLUGIN);
+ DCHECK(process_type == PROCESS_TYPE_PPAPI_PLUGIN);
DCHECK(host_resolver);
}
PepperMessageFilter::PepperMessageFilter(
- ProcessType type,
+ ProcessType process_type,
const ppapi::PpapiPermissions& permissions,
net::HostResolver* host_resolver,
int process_id,
int render_view_id)
- : process_type_(type),
+ : process_type_(process_type),
permissions_(permissions),
process_id_(process_id),
nacl_render_view_id_(render_view_id),
resource_context_(NULL),
host_resolver_(host_resolver),
next_socket_id_(1) {
- DCHECK(type == NACL);
+ DCHECK(process_type == PROCESS_TYPE_NACL_LOADER);
DCHECK(host_resolver);
}
@@ -319,8 +319,10 @@ void PepperMessageFilter::OnTCPConnectWithNetAddress(
uint32 socket_id,
const PP_NetAddress_Private& net_addr) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- bool allowed = CanUseSocketAPIs(routing_id, CreateSocketPermissionRequest(
- content::SocketPermissionRequest::TCP_CONNECT, net_addr));
+ bool allowed = CanUseSocketAPIs(
+ routing_id,
+ PepperUtils::CreateSocketPermissionRequest(
+ content::SocketPermissionRequest::TCP_CONNECT, net_addr));
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&PepperMessageFilter::DoTCPConnectWithNetAddress, this,
allowed, routing_id, socket_id, net_addr));
@@ -422,25 +424,17 @@ void PepperMessageFilter::OnUDPSetBoolSocketFeature(
return;
}
- switch(static_cast<PP_UDPSocketFeature_Private>(name)) {
- case PP_UDPSOCKETFEATURE_ADDRESS_REUSE:
- iter->second->AllowAddressReuse(value);
- break;
- case PP_UDPSOCKETFEATURE_BROADCAST:
- iter->second->AllowBroadcast(value);
- break;
- default:
- NOTREACHED();
- break;
- }
+ iter->second->SetBoolSocketFeature(name, value);
}
void PepperMessageFilter::OnUDPBind(int32 routing_id,
uint32 socket_id,
const PP_NetAddress_Private& addr) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- bool allowed = CanUseSocketAPIs(routing_id, CreateSocketPermissionRequest(
- content::SocketPermissionRequest::UDP_BIND, addr));
+ bool allowed = CanUseSocketAPIs(
+ routing_id,
+ PepperUtils::CreateSocketPermissionRequest(
+ content::SocketPermissionRequest::UDP_BIND, addr));
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&PepperMessageFilter::DoUDPBind, this,
allowed, routing_id, socket_id, addr));
@@ -460,7 +454,7 @@ void PepperMessageFilter::DoUDPBind(bool allowed,
if (routing_id == iter->second->routing_id() && allowed)
iter->second->Bind(addr);
else
- iter->second->SendBindACKError();
+ iter->second->SendBindError();
}
void PepperMessageFilter::OnUDPRecvFrom(uint32 socket_id, int32_t num_bytes) {
@@ -478,8 +472,10 @@ void PepperMessageFilter::OnUDPSendTo(int32 routing_id,
const std::string& data,
const PP_NetAddress_Private& addr) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- bool allowed = CanUseSocketAPIs(routing_id, CreateSocketPermissionRequest(
- content::SocketPermissionRequest::UDP_SEND_TO, addr));
+ bool allowed = CanUseSocketAPIs(
+ routing_id,
+ PepperUtils::CreateSocketPermissionRequest(
+ content::SocketPermissionRequest::UDP_SEND_TO, addr));
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&PepperMessageFilter::DoUDPSendTo, this,
allowed, routing_id, socket_id, data, addr));
@@ -501,7 +497,7 @@ void PepperMessageFilter::DoUDPSendTo(bool allowed,
if (routing_id == iter->second->routing_id() && allowed)
iter->second->SendTo(data, addr);
else
- iter->second->SendSendToACKError();
+ iter->second->SendSendToError();
}
void PepperMessageFilter::OnUDPClose(uint32 socket_id) {
@@ -523,8 +519,10 @@ void PepperMessageFilter::OnTCPServerListen(int32 routing_id,
const PP_NetAddress_Private& addr,
int32_t backlog) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- bool allowed = CanUseSocketAPIs(routing_id, CreateSocketPermissionRequest(
- content::SocketPermissionRequest::TCP_LISTEN, addr));
+ bool allowed = CanUseSocketAPIs(
+ routing_id,
+ PepperUtils::CreateSocketPermissionRequest(
+ content::SocketPermissionRequest::TCP_LISTEN, addr));
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
base::Bind(&PepperMessageFilter::DoTCPServerListen,
this,
@@ -671,7 +669,7 @@ bool PepperMessageFilter::SendHostResolverResolveACKError(
void PepperMessageFilter::OnNetworkMonitorStart(uint32 plugin_dispatcher_id) {
// Support all in-process plugins, and ones with "private" permissions.
- if (process_type_ != RENDERER &&
+ if (process_type_ != PROCESS_TYPE_RENDERER &&
!permissions_.HasPermission(ppapi::PERMISSION_PRIVATE))
return;
@@ -684,7 +682,7 @@ void PepperMessageFilter::OnNetworkMonitorStart(uint32 plugin_dispatcher_id) {
void PepperMessageFilter::OnNetworkMonitorStop(uint32 plugin_dispatcher_id) {
// Support all in-process plugins, and ones with "private" permissions.
- if (process_type_ != RENDERER &&
+ if (process_type_ != PROCESS_TYPE_RENDERER &&
!permissions_.HasPermission(ppapi::PERMISSION_PRIVATE))
return;
@@ -779,46 +777,19 @@ uint32 PepperMessageFilter::GenerateSocketID() {
bool PepperMessageFilter::CanUseSocketAPIs(int32 render_id,
const content::SocketPermissionRequest& params) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (process_type_ == PLUGIN) {
- // Always allow socket APIs for out-process plugins (except NACL).
- return true;
- }
+
// NACL plugins always get their own PepperMessageFilter, initialized with
// a render view id. Use this instead of the one that came with the message,
// which is actually an API ID.
- if (process_type_ == NACL)
+ if (process_type_ == PROCESS_TYPE_NACL_LOADER)
render_id = nacl_render_view_id_;
RenderViewHostImpl* render_view_host =
RenderViewHostImpl::FromID(process_id_, render_id);
- if (!render_view_host)
- return false;
-
- SiteInstance* site_instance = render_view_host->GetSiteInstance();
- if (!site_instance)
- return false;
-
- if (!GetContentClient()->browser()->AllowPepperSocketAPI(
- site_instance->GetBrowserContext(),
- site_instance->GetSiteURL(),
- params)) {
- LOG(ERROR) << "Host " << site_instance->GetSiteURL().host()
- << " cannot use socket API or destination is not allowed";
- return false;
- }
- return true;
-}
-
-content::SocketPermissionRequest
-PepperMessageFilter::CreateSocketPermissionRequest(
- content::SocketPermissionRequest::OperationType type,
- const PP_NetAddress_Private& net_addr) {
- std::string host = NetAddressPrivateImpl::DescribeNetAddress(net_addr, false);
- int port = 0;
- std::vector<unsigned char> address;
- NetAddressPrivateImpl::NetAddressToIPEndPoint(net_addr, &address, &port);
- return content::SocketPermissionRequest(type, host, port);
+ return PepperUtils::CanUseSocketAPIs(process_type_,
+ params,
+ render_view_host);
}
void PepperMessageFilter::GetAndSendNetworkList() {

Powered by Google App Engine
This is Rietveld 408576698