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

Unified Diff: ppapi/native_client/tests/ppapi_browser/ppb_tcp_socket_private/ppapi_ppb_tcp_socket_private.cc

Issue 8688002: PPB_TCPSocket_Private/PPB_UDPSocket_Private are exposed to Browser (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 9 years, 1 month 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: ppapi/native_client/tests/ppapi_browser/ppb_tcp_socket_private/ppapi_ppb_tcp_socket_private.cc
diff --git a/ppapi/native_client/tests/ppapi_browser/ppb_tcp_socket_private/ppapi_ppb_tcp_socket_private.cc b/ppapi/native_client/tests/ppapi_browser/ppb_tcp_socket_private/ppapi_ppb_tcp_socket_private.cc
new file mode 100644
index 0000000000000000000000000000000000000000..693934e742f5275de88e3b778ce6bec0adc13736
--- /dev/null
+++ b/ppapi/native_client/tests/ppapi_browser/ppb_tcp_socket_private/ppapi_ppb_tcp_socket_private.cc
@@ -0,0 +1,162 @@
+// Copyright (c) 2011 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 <string.h>
+#include <algorithm>
+
+#include "native_client/src/include/nacl_macros.h"
+#include "native_client/src/shared/platform/nacl_check.h"
+#include "native_client/tests/ppapi_test_lib/get_browser_interface.h"
+#include "native_client/tests/ppapi_test_lib/test_interface.h"
+#include "native_client/tests/ppapi_test_lib/testable_callback.h"
+#include "ppapi/c/pp_errors.h"
+#include "ppapi/cpp/private/tcp_socket_private.h"
+
+namespace {
+
+const char* const kServerHost = "www.google.com";
+const int kServerPort = 443;
+
+PP_Resource CreateSocket() {
+ PP_Resource socket = PPBTCPSocketPrivate()->Create(pp_instance());
+ EXPECT(socket != kInvalidInstance);
+ EXPECT(PPBTCPSocketPrivate()->IsTCPSocket(socket));
+ return socket;
+}
+
+void SyncConnect(PP_Resource socket, const char* host, int port) {
+ TestableCallback callback(pp_instance(), true);
+ callback.Reset();
+ EXPECT(PP_OK_COMPLETIONPENDING ==
+ PPBTCPSocketPrivate()->Connect(socket, host, port,
+ callback.GetCallback()));
+ EXPECT(PP_OK == callback.WaitForResult());
+}
+
+void SyncConnectWithNetAddress(PP_Resource socket,
+ const PP_NetAddress_Private &addr) {
+ TestableCallback callback(pp_instance(), true);
+ callback.Reset();
+ EXPECT(PP_OK_COMPLETIONPENDING ==
+ PPBTCPSocketPrivate()->ConnectWithNetAddress(socket, &addr,
+ callback.GetCallback()));
+ EXPECT(PP_OK == callback.WaitForResult());
+}
+
+void SyncSSLHandshake(PP_Resource socket, const char* host, int port) {
+ TestableCallback callback(pp_instance(), true);
+ callback.Reset();
+ EXPECT(PP_OK_COMPLETIONPENDING ==
+ PPBTCPSocketPrivate()->SSLHandshake(socket, host, port,
+ callback.GetCallback()));
+ EXPECT(PP_OK == callback.WaitForResult());
+}
+
+int32_t SyncRead(PP_Resource socket, char* buffer, int32_t num_bytes) {
+ TestableCallback callback(pp_instance(), true);
+ callback.Reset();
+ EXPECT(PP_OK_COMPLETIONPENDING ==
+ PPBTCPSocketPrivate()->Read(socket, buffer, num_bytes,
+ callback.GetCallback()));
+ return callback.WaitForResult();
+}
+
+int32_t SyncWrite(PP_Resource socket, const char* buffer, int32_t num_bytes) {
+ TestableCallback callback(pp_instance(), true);
+ callback.Reset();
+ EXPECT(PP_OK_COMPLETIONPENDING ==
+ PPBTCPSocketPrivate()->Write(socket, buffer, num_bytes,
+ callback.GetCallback()));
+ return callback.WaitForResult();
+}
+
+void CheckHTTPResponse(PP_Resource socket, const char* request,
+ const char* response) {
+ int32_t rv;
+
+ rv = SyncWrite(socket, request, strlen(request));
+ EXPECT(0 < rv);
+ EXPECT(strlen(request) == static_cast<size_t>(rv));
+
+ static const size_t kResponseBufferSize = 1024;
+ char response_buffer[kResponseBufferSize];
+
+ rv = SyncRead(socket, response_buffer, kResponseBufferSize);
+ EXPECT(0 < rv);
+
+ EXPECT(0 == strncmp(response, response_buffer,
+ std::min(static_cast<size_t>(rv),
+ strlen(response))));
+}
+
+void TestCreate() {
+ PP_Resource socket;
+ socket = PPBTCPSocketPrivate()->Create(kInvalidInstance);
+ EXPECT(socket == kInvalidResource);
+ socket = CreateSocket();
+
+ TEST_PASSED;
+}
+
+void TestGetAddress() {
+ PP_Resource socket = CreateSocket();
+ SyncConnect(socket, kServerHost, kServerPort);
+
+ PP_NetAddress_Private local_address, remote_address;
+
+ EXPECT(PP_TRUE ==
+ PPBTCPSocketPrivate()->GetLocalAddress(socket, &local_address));
+ EXPECT(PP_TRUE ==
+ PPBTCPSocketPrivate()->GetRemoteAddress(socket, &remote_address));
+
+ PPBTCPSocketPrivate()->Disconnect(socket);
+
+ TEST_PASSED;
+}
+
+void TestConnect() {
+ PP_Resource socket = CreateSocket();
+ SyncConnect(socket, kServerHost, kServerPort);
+ SyncSSLHandshake(socket, kServerHost, kServerPort);
+
+ CheckHTTPResponse(socket, "GET /robots.txt\r\n", "HTTP/1.0 200 OK");
+
+ PPBTCPSocketPrivate()->Disconnect(socket);
+
+ TEST_PASSED;
+}
+
+void TestReconnect() {
+ PP_Resource socket = CreateSocket();
+ SyncConnect(socket, kServerHost, kServerPort);
+ SyncSSLHandshake(socket, kServerHost, kServerPort);
+
+ PP_NetAddress_Private remote_address;
+ EXPECT(PP_TRUE ==
+ PPBTCPSocketPrivate()->GetRemoteAddress(socket, &remote_address));
+ PPBTCPSocketPrivate()->Disconnect(socket);
+
+ socket = CreateSocket();
+ SyncConnectWithNetAddress(socket, remote_address);
+ SyncSSLHandshake(socket, kServerHost, kServerPort);
+
+ CheckHTTPResponse(socket, "GET /robots.txt\r\n", "HTTP/1.0 200 OK");
+
+ PPBTCPSocketPrivate()->Disconnect(socket);
+
+ TEST_PASSED;
+}
+
+} // namespace
+
+void SetupTests() {
+ RegisterTest("TestCreate", TestCreate);
+ RegisterTest("TestGetAddress", TestGetAddress);
+ RegisterTest("TestConnect", TestConnect);
+ RegisterTest("TestReconnect", TestReconnect);
+}
+
+void SetupPluginInterfaces() {
+ // none
+}

Powered by Google App Engine
This is Rietveld 408576698