summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-16 19:06:40 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-16 19:06:40 +0000
commite461da2f56549596f94bac6a53a2fdd0e554da9c (patch)
treef8857698b32b0c6c8d2d2ee2083cbfdd7b78706a /ppapi
parent31eac9635b16592117c7491b1b27c34dc895d453 (diff)
downloadchromium_src-e461da2f56549596f94bac6a53a2fdd0e554da9c.zip
chromium_src-e461da2f56549596f94bac6a53a2fdd0e554da9c.tar.gz
chromium_src-e461da2f56549596f94bac6a53a2fdd0e554da9c.tar.bz2
Move socket API restriction check to browser process
BUG=112961 TEST=ui_tests --gtest_filter=*TCPSocket* Review URL: http://codereview.chromium.org/9379002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@122326 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/proxy/ppapi_messages.h9
-rw-r--r--ppapi/proxy/ppb_tcp_socket_private_proxy.cc9
-rw-r--r--ppapi/proxy/ppb_udp_socket_private_proxy.cc5
-rw-r--r--ppapi/tests/test_tcp_socket_private_disallowed.cc26
-rw-r--r--ppapi/tests/test_tcp_socket_private_disallowed.h4
-rw-r--r--ppapi/tests/test_udp_socket_private_disallowed.cc22
-rw-r--r--ppapi/tests/test_udp_socket_private_disallowed.h4
7 files changed, 56 insertions, 23 deletions
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h
index b67a187..04b812d 100644
--- a/ppapi/proxy/ppapi_messages.h
+++ b/ppapi/proxy/ppapi_messages.h
@@ -802,11 +802,13 @@ IPC_SYNC_MESSAGE_CONTROL2_1(PpapiHostMsg_PPBTCPSocket_Create,
int32 /* routing_id */,
uint32 /* plugin_dispatcher_id */,
uint32 /* socket_id */)
-IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBTCPSocket_Connect,
+IPC_MESSAGE_CONTROL4(PpapiHostMsg_PPBTCPSocket_Connect,
+ int32 /* routing_id */,
uint32 /* socket_id */,
std::string /* host */,
uint16_t /* port */)
-IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBTCPSocket_ConnectWithNetAddress,
+IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBTCPSocket_ConnectWithNetAddress,
+ int32 /* routing_id */,
uint32 /* socket_id */,
PP_NetAddress_Private /* net_addr */)
IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBTCPSocket_SSLHandshake,
@@ -827,7 +829,8 @@ IPC_SYNC_MESSAGE_CONTROL2_1(PpapiHostMsg_PPBUDPSocket_Create,
int32 /* routing_id */,
uint32 /* plugin_dispatcher_id */,
uint32 /* socket_id */)
-IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBUDPSocket_Bind,
+IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBUDPSocket_Bind,
+ int32 /* routing_id */,
uint32 /* socket_id */,
PP_NetAddress_Private /* net_addr */)
IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBUDPSocket_RecvFrom,
diff --git a/ppapi/proxy/ppb_tcp_socket_private_proxy.cc b/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
index 42420e3..7e92664 100644
--- a/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
+++ b/ppapi/proxy/ppb_tcp_socket_private_proxy.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -57,12 +57,13 @@ TCPSocket::~TCPSocket() {
}
void TCPSocket::SendConnect(const std::string& host, uint16_t port) {
- SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Connect(socket_id_, host, port));
+ SendToBrowser(new PpapiHostMsg_PPBTCPSocket_Connect(
+ API_ID_PPB_TCPSOCKET_PRIVATE, socket_id_, host, port));
}
void TCPSocket::SendConnectWithNetAddress(const PP_NetAddress_Private& addr) {
- SendToBrowser(
- new PpapiHostMsg_PPBTCPSocket_ConnectWithNetAddress(socket_id_, addr));
+ SendToBrowser(new PpapiHostMsg_PPBTCPSocket_ConnectWithNetAddress(
+ API_ID_PPB_TCPSOCKET_PRIVATE, socket_id_, addr));
}
void TCPSocket::SendSSLHandshake(const std::string& server_name,
diff --git a/ppapi/proxy/ppb_udp_socket_private_proxy.cc b/ppapi/proxy/ppb_udp_socket_private_proxy.cc
index 0716033..2d9d29f 100644
--- a/ppapi/proxy/ppb_udp_socket_private_proxy.cc
+++ b/ppapi/proxy/ppb_udp_socket_private_proxy.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -54,7 +54,8 @@ UDPSocket::~UDPSocket() {
}
void UDPSocket::SendBind(const PP_NetAddress_Private& addr) {
- SendToBrowser(new PpapiHostMsg_PPBUDPSocket_Bind(socket_id_, addr));
+ SendToBrowser(new PpapiHostMsg_PPBUDPSocket_Bind(
+ API_ID_PPB_UDPSOCKET_PRIVATE, socket_id_, addr));
}
void UDPSocket::SendRecvFrom(int32_t num_bytes) {
diff --git a/ppapi/tests/test_tcp_socket_private_disallowed.cc b/ppapi/tests/test_tcp_socket_private_disallowed.cc
index 1193292..25e60dc 100644
--- a/ppapi/tests/test_tcp_socket_private_disallowed.cc
+++ b/ppapi/tests/test_tcp_socket_private_disallowed.cc
@@ -1,12 +1,20 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ppapi/tests/test_tcp_socket_private_disallowed.h"
#include "ppapi/cpp/module.h"
+#include "ppapi/tests/test_utils.h"
#include "ppapi/tests/testing_instance.h"
+namespace {
+
+const char kServerName[] = "www.google.com";
+const int kPort = 80;
+
+}
+
REGISTER_TEST_CASE(TCPSocketPrivateDisallowed);
TestTCPSocketPrivateDisallowed::TestTCPSocketPrivateDisallowed(
@@ -23,15 +31,23 @@ bool TestTCPSocketPrivateDisallowed::Init() {
}
void TestTCPSocketPrivateDisallowed::RunTests(const std::string& filter) {
- RUN_TEST(Create, filter);
+ RUN_TEST(Connect, filter);
}
-std::string TestTCPSocketPrivateDisallowed::TestCreate() {
+std::string TestTCPSocketPrivateDisallowed::TestConnect() {
PP_Resource socket =
tcp_socket_private_interface_->Create(instance_->pp_instance());
if (0 != socket) {
- return "PPB_TCPSocket_Private::Create returns valid socket " \
- "without allowing switch";
+ TestCompletionCallback callback(instance_->pp_instance());
+ int32_t rv = tcp_socket_private_interface_->Connect(
+ socket, kServerName, kPort,
+ static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
+
+ if (PP_OK_COMPLETIONPENDING == rv)
+ rv = callback.WaitForResult();
+
+ if (PP_ERROR_FAILED != rv)
+ return "PPB_TCPSocket_Private can connect without allowing switch";
}
PASS();
}
diff --git a/ppapi/tests/test_tcp_socket_private_disallowed.h b/ppapi/tests/test_tcp_socket_private_disallowed.h
index 9371028..94aff7c 100644
--- a/ppapi/tests/test_tcp_socket_private_disallowed.h
+++ b/ppapi/tests/test_tcp_socket_private_disallowed.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -19,7 +19,7 @@ class TestTCPSocketPrivateDisallowed : public TestCase {
virtual void RunTests(const std::string& filter);
private:
- std::string TestCreate();
+ std::string TestConnect();
const PPB_TCPSocket_Private* tcp_socket_private_interface_;
};
diff --git a/ppapi/tests/test_udp_socket_private_disallowed.cc b/ppapi/tests/test_udp_socket_private_disallowed.cc
index 261fbe8..fa0c179 100644
--- a/ppapi/tests/test_udp_socket_private_disallowed.cc
+++ b/ppapi/tests/test_udp_socket_private_disallowed.cc
@@ -1,11 +1,13 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ppapi/tests/test_udp_socket_private_disallowed.h"
#include "ppapi/cpp/module.h"
+#include "ppapi/cpp/private/net_address_private.h"
#include "ppapi/tests/testing_instance.h"
+#include "ppapi/tests/test_utils.h"
REGISTER_TEST_CASE(UDPSocketPrivateDisallowed);
@@ -23,15 +25,25 @@ bool TestUDPSocketPrivateDisallowed::Init() {
}
void TestUDPSocketPrivateDisallowed::RunTests(const std::string& filter) {
- RUN_TEST(Create, filter);
+ RUN_TEST(Bind, filter);
}
-std::string TestUDPSocketPrivateDisallowed::TestCreate() {
+std::string TestUDPSocketPrivateDisallowed::TestBind() {
PP_Resource socket =
udp_socket_private_interface_->Create(instance_->pp_instance());
if (0 != socket) {
- return "PPB_UDPSocket_Private::Create returns valid socket " \
- "without allowing switch";
+ PP_NetAddress_Private addr;
+ pp::NetAddressPrivate::GetAnyAddress(false, &addr);
+
+ TestCompletionCallback callback(instance_->pp_instance());
+ int32_t rv = udp_socket_private_interface_->Bind(socket, &addr,
+ static_cast<pp::CompletionCallback>(callback).pp_completion_callback());
+
+ if (PP_OK_COMPLETIONPENDING == rv)
+ rv = callback.WaitForResult();
+
+ if (PP_ERROR_FAILED != rv)
+ return "PPB_UDPSocket_Private can bind without allowing switch";
}
PASS();
}
diff --git a/ppapi/tests/test_udp_socket_private_disallowed.h b/ppapi/tests/test_udp_socket_private_disallowed.h
index 807cc9b..f560ead 100644
--- a/ppapi/tests/test_udp_socket_private_disallowed.h
+++ b/ppapi/tests/test_udp_socket_private_disallowed.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -19,7 +19,7 @@ class TestUDPSocketPrivateDisallowed : public TestCase {
virtual void RunTests(const std::string& filter);
private:
- std::string TestCreate();
+ std::string TestBind();
const PPB_UDPSocket_Private* udp_socket_private_interface_;
};