summaryrefslogtreecommitdiffstats
path: root/ppapi/tests
diff options
context:
space:
mode:
authortoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-16 07:28:21 +0000
committertoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-16 07:28:21 +0000
commit3e919cb2ef7aacd8280200a36ef9f9323432caeb (patch)
treead8edb11d8e64d86bdcf3c95fad3a100c933a259 /ppapi/tests
parente0c18c77100c783f4f9bcc8f2fd19c3fcfed91e4 (diff)
downloadchromium_src-3e919cb2ef7aacd8280200a36ef9f9323432caeb.zip
chromium_src-3e919cb2ef7aacd8280200a36ef9f9323432caeb.tar.gz
chromium_src-3e919cb2ef7aacd8280200a36ef9f9323432caeb.tar.bz2
WebSocket Pepper API: C++ bindings implementation.
This change contains simple straightforward C++ interfaces. JS like bindings will be implemented as a helper class in another change. BUG=87310 TEST=ui_tests --gtest_filter='PPAPITest.WebSocket_CcInterfaces' Review URL: http://codereview.chromium.org/8821010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114779 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/tests')
-rw-r--r--ppapi/tests/test_websocket.cc62
-rw-r--r--ppapi/tests/test_websocket.h2
2 files changed, 64 insertions, 0 deletions
diff --git a/ppapi/tests/test_websocket.cc b/ppapi/tests/test_websocket.cc
index c990113..ae1db54 100644
--- a/ppapi/tests/test_websocket.cc
+++ b/ppapi/tests/test_websocket.cc
@@ -5,6 +5,7 @@
#include "ppapi/tests/test_websocket.h"
#include <string.h>
+#include <vector>
#include "ppapi/c/dev/ppb_testing_dev.h"
#include "ppapi/c/dev/ppb_websocket_dev.h"
@@ -13,6 +14,7 @@
#include "ppapi/c/pp_completion_callback.h"
#include "ppapi/c/ppb_core.h"
#include "ppapi/c/ppb_var.h"
+#include "ppapi/cpp/dev/websocket_dev.h"
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/module.h"
#include "ppapi/tests/test_utils.h"
@@ -21,6 +23,9 @@
const char kEchoServerURL[] =
"ws://localhost:8880/websocket/tests/hybi/echo";
+const char kCloseServerURL[] =
+ "ws://localhost:8880/websocket/tests/hybi/close";
+
const char kProtocolTestServerURL[] =
"ws://localhost:8880/websocket/tests/hybi/protocol-test?protocol=";
@@ -62,6 +67,8 @@ void TestWebSocket::RunTests(const std::string& filter) {
RUN_TEST_WITH_REFERENCE_CHECK(ValidClose, filter);
RUN_TEST_WITH_REFERENCE_CHECK(GetProtocol, filter);
RUN_TEST_WITH_REFERENCE_CHECK(TextSendReceive, filter);
+
+ RUN_TEST_WITH_REFERENCE_CHECK(CcInterfaces, filter);
}
PP_Var TestWebSocket::CreateVar(const char* string) {
@@ -414,3 +421,58 @@ std::string TestWebSocket::TestTextSendReceive() {
// TODO(toyoshim): Add tests for didReceiveMessageError().
// TODO(toyoshim): Add other function tests.
+
+std::string TestWebSocket::TestCcInterfaces() {
+ // C++ bindings is simple straightforward, then just verifies interfaces work
+ // as a interface bridge fine.
+ pp::WebSocket_Dev ws(instance_);
+
+ // Check uninitialized properties access.
+ ASSERT_EQ(0, ws.GetBufferedAmount());
+ ASSERT_EQ(0, ws.GetCloseCode());
+ ASSERT_TRUE(AreEqual(ws.GetCloseReason().pp_var(), ""));
+ ASSERT_EQ(false, ws.GetCloseWasClean());
+ ASSERT_TRUE(AreEqual(ws.GetExtensions().pp_var(), ""));
+ ASSERT_TRUE(AreEqual(ws.GetProtocol().pp_var(), ""));
+ ASSERT_EQ(PP_WEBSOCKETREADYSTATE_INVALID_DEV, ws.GetReadyState());
+ ASSERT_TRUE(AreEqual(ws.GetURL().pp_var(), ""));
+
+ // Check communication interfaces (connect, send, receive, and close).
+ TestCompletionCallback connect_callback(instance_->pp_instance());
+ int32_t result = ws.Connect(pp::Var(std::string(kCloseServerURL)), NULL, 0U,
+ connect_callback);
+ ASSERT_EQ(PP_OK_COMPLETIONPENDING, result);
+ result = connect_callback.WaitForResult();
+ ASSERT_EQ(PP_OK, result);
+
+ std::string message("hello C++");
+ result = ws.SendMessage(pp::Var(message));
+ ASSERT_EQ(PP_OK, result);
+
+ pp::Var receive_var;
+ TestCompletionCallback receive_callback(instance_->pp_instance());
+ result = ws.ReceiveMessage(&receive_var, receive_callback);
+ if (result == PP_OK_COMPLETIONPENDING)
+ result = receive_callback.WaitForResult();
+ ASSERT_EQ(PP_OK, result);
+ ASSERT_TRUE(AreEqual(receive_var.pp_var(), message.c_str()));
+
+ TestCompletionCallback close_callback(instance_->pp_instance());
+ std::string reason("bye");
+ result = ws.Close(kCloseCodeNormalClosure, pp::Var(reason), close_callback);
+ ASSERT_EQ(PP_OK_COMPLETIONPENDING, result);
+ result = close_callback.WaitForResult();
+ ASSERT_EQ(PP_OK, result);
+
+ // Check initialized properties access.
+ ASSERT_EQ(0, ws.GetBufferedAmount());
+ ASSERT_EQ(kCloseCodeNormalClosure, ws.GetCloseCode());
+ ASSERT_TRUE(AreEqual(ws.GetCloseReason().pp_var(), reason.c_str()));
+ ASSERT_EQ(true, ws.GetCloseWasClean());
+ ASSERT_TRUE(AreEqual(ws.GetExtensions().pp_var(), ""));
+ ASSERT_TRUE(AreEqual(ws.GetProtocol().pp_var(), ""));
+ ASSERT_EQ(PP_WEBSOCKETREADYSTATE_CLOSED_DEV, ws.GetReadyState());
+ ASSERT_TRUE(AreEqual(ws.GetURL().pp_var(), kCloseServerURL));
+
+ PASS();
+}
diff --git a/ppapi/tests/test_websocket.h b/ppapi/tests/test_websocket.h
index 6cdf028..4048458 100644
--- a/ppapi/tests/test_websocket.h
+++ b/ppapi/tests/test_websocket.h
@@ -39,6 +39,8 @@ class TestWebSocket : public TestCase {
std::string TestGetProtocol();
std::string TestTextSendReceive();
+ std::string TestCcInterfaces();
+
// Used by the tests that access the C API directly.
const PPB_WebSocket_Dev* websocket_interface_;
const PPB_Var* var_interface_;