| Index: ppapi/tests/test_tcp_socket_private.cc
|
| diff --git a/ppapi/tests/test_tcp_socket_private.cc b/ppapi/tests/test_tcp_socket_private.cc
|
| index a15c36e1d4395e097b9f673db2261bbb810e9dc1..b6f158f426e5d8fda06084625631fd37b76322be 100644
|
| --- a/ppapi/tests/test_tcp_socket_private.cc
|
| +++ b/ppapi/tests/test_tcp_socket_private.cc
|
| @@ -47,22 +47,20 @@ bool TestTCPSocketPrivate::Init() {
|
| }
|
|
|
| void TestTCPSocketPrivate::RunTests(const std::string& filter) {
|
| - RUN_TEST_FORCEASYNC_AND_NOT(Basic, filter);
|
| - RUN_TEST_FORCEASYNC_AND_NOT(ReadWrite, filter);
|
| - RUN_TEST_FORCEASYNC_AND_NOT(ReadWriteSSL, filter);
|
| - RUN_TEST_FORCEASYNC_AND_NOT(ConnectAddress, filter);
|
| - RUN_TEST_FORCEASYNC_AND_NOT(SetOption, filter);
|
| + RUN_CALLBACK_TEST(TestTCPSocketPrivate, Basic, filter);
|
| + RUN_CALLBACK_TEST(TestTCPSocketPrivate, ReadWrite, filter);
|
| + RUN_CALLBACK_TEST(TestTCPSocketPrivate, ReadWriteSSL, filter);
|
| + RUN_CALLBACK_TEST(TestTCPSocketPrivate, ConnectAddress, filter);
|
| + RUN_CALLBACK_TEST(TestTCPSocketPrivate, SetOption, filter);
|
| }
|
|
|
| std::string TestTCPSocketPrivate::TestBasic() {
|
| pp::TCPSocketPrivate socket(instance_);
|
| - TestCompletionCallback cb(instance_->pp_instance(), force_async_);
|
| + TestCompletionCallback cb(instance_->pp_instance(), callback_type());
|
|
|
| - int32_t rv = socket.Connect(host_.c_str(), port_, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_OK, rv);
|
| + cb.WaitForResult(socket.Connect(host_.c_str(), port_, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_OK, cb.result());
|
|
|
| PP_NetAddress_Private unused;
|
| // TODO(viettrungluu): check the values somehow.
|
| @@ -76,13 +74,11 @@ std::string TestTCPSocketPrivate::TestBasic() {
|
|
|
| std::string TestTCPSocketPrivate::TestReadWrite() {
|
| pp::TCPSocketPrivate socket(instance_);
|
| - TestCompletionCallback cb(instance_->pp_instance(), force_async_);
|
| + TestCompletionCallback cb(instance_->pp_instance(), callback_type());
|
|
|
| - int32_t rv = socket.Connect(host_.c_str(), port_, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_OK, rv);
|
| + cb.WaitForResult(socket.Connect(host_.c_str(), port_, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_OK, cb.result());
|
|
|
| ASSERT_EQ(PP_OK, WriteStringToSocket(&socket, "GET / HTTP/1.0\r\n\r\n"));
|
|
|
| @@ -98,19 +94,16 @@ std::string TestTCPSocketPrivate::TestReadWrite() {
|
|
|
| std::string TestTCPSocketPrivate::TestReadWriteSSL() {
|
| pp::TCPSocketPrivate socket(instance_);
|
| - TestCompletionCallback cb(instance_->pp_instance(), force_async_);
|
| + TestCompletionCallback cb(instance_->pp_instance(), callback_type());
|
|
|
| - int32_t rv = socket.Connect(host_.c_str(), ssl_port_, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_OK, rv);
|
| + cb.WaitForResult(socket.Connect(host_.c_str(), ssl_port_, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_OK, cb.result());
|
|
|
| - rv = socket.SSLHandshake(host_.c_str(), ssl_port_, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_OK, rv);
|
| + cb.WaitForResult(
|
| + socket.SSLHandshake(host_.c_str(), ssl_port_, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_OK, cb.result());
|
|
|
| ASSERT_EQ(PP_OK, WriteStringToSocket(&socket, "GET / HTTP/1.0\r\n\r\n"));
|
|
|
| @@ -130,12 +123,10 @@ std::string TestTCPSocketPrivate::TestConnectAddress() {
|
| // First, bring up a connection and grab the address.
|
| {
|
| pp::TCPSocketPrivate socket(instance_);
|
| - TestCompletionCallback cb(instance_->pp_instance(), force_async_);
|
| - int32_t rv = socket.Connect(host_.c_str(), port_, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_OK, rv);
|
| + TestCompletionCallback cb(instance_->pp_instance(), callback_type());
|
| + cb.WaitForResult(socket.Connect(host_.c_str(), port_, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_OK, cb.result());
|
| ASSERT_TRUE(socket.GetRemoteAddress(&address));
|
| // Omit the |Disconnect()| here to make sure we don't crash if we just let
|
| // the resource be destroyed.
|
| @@ -143,12 +134,10 @@ std::string TestTCPSocketPrivate::TestConnectAddress() {
|
|
|
| // Connect to that address.
|
| pp::TCPSocketPrivate socket(instance_);
|
| - TestCompletionCallback cb(instance_->pp_instance(), force_async_);
|
| - int32_t rv = socket.ConnectWithNetAddress(&address, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_OK, rv);
|
| + TestCompletionCallback cb(instance_->pp_instance(), callback_type());
|
| + cb.WaitForResult(socket.ConnectWithNetAddress(&address, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_OK, cb.result());
|
|
|
| // Make sure we can read/write to it properly (see |TestReadWrite()|).
|
| ASSERT_EQ(PP_OK, WriteStringToSocket(&socket, "GET / HTTP/1.0\r\n\r\n"));
|
| @@ -163,32 +152,26 @@ std::string TestTCPSocketPrivate::TestConnectAddress() {
|
|
|
| std::string TestTCPSocketPrivate::TestSetOption() {
|
| pp::TCPSocketPrivate socket(instance_);
|
| - TestCompletionCallback cb(instance_->pp_instance(), force_async_);
|
| -
|
| - int32_t rv = socket.SetOption(PP_TCPSOCKETOPTION_NO_DELAY, true,
|
| - cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_ERROR_FAILED, rv);
|
| -
|
| - rv = socket.Connect(host_.c_str(), port_, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_OK, rv);
|
| -
|
| - rv = socket.SetOption(PP_TCPSOCKETOPTION_NO_DELAY, true, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_OK, rv);
|
| -
|
| - rv = socket.SetOption(PP_TCPSOCKETOPTION_INVALID, true, cb.GetCallback());
|
| - ASSERT_TRUE(!force_async_ || rv == PP_OK_COMPLETIONPENDING);
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - ASSERT_EQ(PP_ERROR_BADARGUMENT, rv);
|
| + TestCompletionCallback cb(instance_->pp_instance(), callback_type());
|
| +
|
| + cb.WaitForResult(
|
| + socket.SetOption(PP_TCPSOCKETOPTION_NO_DELAY, true, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_ERROR_FAILED, cb.result());
|
| +
|
| + cb.WaitForResult(socket.Connect(host_.c_str(), port_, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_OK, cb.result());
|
| +
|
| + cb.WaitForResult(
|
| + socket.SetOption(PP_TCPSOCKETOPTION_NO_DELAY, true, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_OK, cb.result());
|
| +
|
| + cb.WaitForResult(
|
| + socket.SetOption(PP_TCPSOCKETOPTION_INVALID, true, cb.GetCallback()));
|
| + CHECK_CALLBACK_BEHAVIOR(cb);
|
| + ASSERT_EQ(PP_ERROR_BADARGUMENT, cb.result());
|
|
|
| socket.Disconnect();
|
|
|
| @@ -203,18 +186,17 @@ int32_t TestTCPSocketPrivate::ReadFirstLineFromSocket(
|
| s->clear();
|
| // Make sure we don't just hang if |Read()| spews.
|
| while (s->size() < 1000000) {
|
| - TestCompletionCallback cb(instance_->pp_instance(), force_async_);
|
| + TestCompletionCallback cb(instance_->pp_instance(), callback_type());
|
| int32_t rv = socket->Read(buffer, sizeof(buffer), cb.GetCallback());
|
| - if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + if (callback_type() == PP_REQUIRED && rv != PP_OK_COMPLETIONPENDING)
|
| return PP_ERROR_FAILED;
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - if (rv < 0)
|
| - return rv;
|
| - if (rv == 0)
|
| + cb.WaitForResult(rv);
|
| + if (cb.result() < 0)
|
| + return cb.result();
|
| + if (cb.result() == 0)
|
| return PP_ERROR_FAILED; // Didn't get a \n-terminated line.
|
| - s->reserve(s->size() + rv);
|
| - for (int32_t i = 0; i < rv; i++) {
|
| + s->reserve(s->size() + cb.result());
|
| + for (int32_t i = 0; i < cb.result(); i++) {
|
| s->push_back(buffer[i]);
|
| if (buffer[i] == '\n')
|
| return PP_OK;
|
| @@ -228,18 +210,17 @@ int32_t TestTCPSocketPrivate::WriteStringToSocket(pp::TCPSocketPrivate* socket,
|
| const char* buffer = s.data();
|
| size_t written = 0;
|
| while (written < s.size()) {
|
| - TestCompletionCallback cb(instance_->pp_instance(), force_async_);
|
| + TestCompletionCallback cb(instance_->pp_instance(), callback_type());
|
| int32_t rv = socket->Write(buffer + written, s.size() - written,
|
| cb.GetCallback());
|
| - if (force_async_ && rv != PP_OK_COMPLETIONPENDING)
|
| + if (callback_type() == PP_REQUIRED && rv != PP_OK_COMPLETIONPENDING)
|
| return PP_ERROR_FAILED;
|
| - if (rv == PP_OK_COMPLETIONPENDING)
|
| - rv = cb.WaitForResult();
|
| - if (rv < 0)
|
| - return rv;
|
| - if (rv == 0)
|
| + cb.WaitForResult(rv);
|
| + if (cb.result() < 0)
|
| + return cb.result();
|
| + if (cb.result() == 0)
|
| return PP_ERROR_FAILED;
|
| - written += rv;
|
| + written += cb.result();
|
| }
|
| if (written != s.size())
|
| return PP_ERROR_FAILED;
|
|
|