diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-16 19:06:40 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-16 19:06:40 +0000 |
commit | e461da2f56549596f94bac6a53a2fdd0e554da9c (patch) | |
tree | f8857698b32b0c6c8d2d2ee2083cbfdd7b78706a /ppapi | |
parent | 31eac9635b16592117c7491b1b27c34dc895d453 (diff) | |
download | chromium_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.h | 9 | ||||
-rw-r--r-- | ppapi/proxy/ppb_tcp_socket_private_proxy.cc | 9 | ||||
-rw-r--r-- | ppapi/proxy/ppb_udp_socket_private_proxy.cc | 5 | ||||
-rw-r--r-- | ppapi/tests/test_tcp_socket_private_disallowed.cc | 26 | ||||
-rw-r--r-- | ppapi/tests/test_tcp_socket_private_disallowed.h | 4 | ||||
-rw-r--r-- | ppapi/tests/test_udp_socket_private_disallowed.cc | 22 | ||||
-rw-r--r-- | ppapi/tests/test_udp_socket_private_disallowed.h | 4 |
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_; }; |