| Index: mojo/public/cpp/environment/tests/async_waiter_unittest.cc
|
| diff --git a/mojo/public/cpp/environment/tests/async_waiter_unittest.cc b/mojo/public/cpp/environment/tests/async_waiter_unittest.cc
|
| index c1876b793d7cc722323d22e5e48738ad2f9b666e..1c1c2bf9d049fe521ad2726e82d0e2106c87d668 100644
|
| --- a/mojo/public/cpp/environment/tests/async_waiter_unittest.cc
|
| +++ b/mojo/public/cpp/environment/tests/async_waiter_unittest.cc
|
| @@ -2,12 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include <string>
|
| -
|
| -#include "mojo/public/c/environment/async_waiter.h"
|
| -#include "mojo/public/cpp/environment/environment.h"
|
| -#include "mojo/public/cpp/system/core.h"
|
| -#include "mojo/public/cpp/system/macros.h"
|
| +#include "mojo/public/cpp/bindings/callback.h"
|
| +#include "mojo/public/cpp/environment/async_waiter.h"
|
| #include "mojo/public/cpp/test_support/test_utils.h"
|
| #include "mojo/public/cpp/utility/run_loop.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -24,11 +20,9 @@ class TestAsyncWaitCallback {
|
|
|
| MojoResult last_result() const { return last_result_; }
|
|
|
| - // MojoAsyncWaitCallback:
|
| - static void OnHandleReady(void* closure, MojoResult result) {
|
| - TestAsyncWaitCallback* self = static_cast<TestAsyncWaitCallback*>(closure);
|
| - self->result_count_++;
|
| - self->last_result_ = result;
|
| + void OnHandleReady(MojoResult result) {
|
| + result_count_++;
|
| + last_result_ = result;
|
| }
|
|
|
| private:
|
| @@ -38,20 +32,17 @@ class TestAsyncWaitCallback {
|
| MOJO_DISALLOW_COPY_AND_ASSIGN(TestAsyncWaitCallback);
|
| };
|
|
|
| -MojoAsyncWaitID CallAsyncWait(const Handle& handle,
|
| - MojoHandleSignals signals,
|
| - TestAsyncWaitCallback* callback) {
|
| - return Environment::GetDefaultAsyncWaiter()->AsyncWait(
|
| - handle.value(),
|
| - signals,
|
| - MOJO_DEADLINE_INDEFINITE,
|
| - &TestAsyncWaitCallback::OnHandleReady,
|
| - callback);
|
| -}
|
| +// Manual code to create a callback since we don't have mojo::Bind yet.
|
| +class ManualCallback {
|
| + public:
|
| + explicit ManualCallback(TestAsyncWaitCallback* callback)
|
| + : callback_(callback) {}
|
|
|
| -void CallCancelWait(MojoAsyncWaitID wait_id) {
|
| - Environment::GetDefaultAsyncWaiter()->CancelWait(wait_id);
|
| -}
|
| + void Run(MojoResult result) const { callback_->OnHandleReady(result); }
|
| +
|
| + private:
|
| + TestAsyncWaitCallback* callback_;
|
| +};
|
|
|
| class AsyncWaiterTest : public testing::Test {
|
| public:
|
| @@ -70,8 +61,8 @@ TEST_F(AsyncWaiterTest, CallbackNotified) {
|
| MessagePipe test_pipe;
|
| EXPECT_TRUE(test::WriteTextMessage(test_pipe.handle1.get(), std::string()));
|
|
|
| - CallAsyncWait(
|
| - test_pipe.handle0.get(), MOJO_HANDLE_SIGNAL_READABLE, &callback);
|
| + AsyncWaiter waiter(test_pipe.handle0.get(), MOJO_HANDLE_SIGNAL_READABLE,
|
| + ManualCallback(&callback));
|
| RunLoop::current()->Run();
|
| EXPECT_EQ(1, callback.result_count());
|
| EXPECT_EQ(MOJO_RESULT_OK, callback.last_result());
|
| @@ -86,10 +77,10 @@ TEST_F(AsyncWaiterTest, TwoCallbacksNotified) {
|
| EXPECT_TRUE(test::WriteTextMessage(test_pipe1.handle1.get(), std::string()));
|
| EXPECT_TRUE(test::WriteTextMessage(test_pipe2.handle1.get(), std::string()));
|
|
|
| - CallAsyncWait(
|
| - test_pipe1.handle0.get(), MOJO_HANDLE_SIGNAL_READABLE, &callback1);
|
| - CallAsyncWait(
|
| - test_pipe2.handle0.get(), MOJO_HANDLE_SIGNAL_READABLE, &callback2);
|
| + AsyncWaiter waiter1(test_pipe1.handle0.get(), MOJO_HANDLE_SIGNAL_READABLE,
|
| + ManualCallback(&callback1));
|
| + AsyncWaiter waiter2(test_pipe2.handle0.get(), MOJO_HANDLE_SIGNAL_READABLE,
|
| + ManualCallback(&callback2));
|
|
|
| RunLoop::current()->Run();
|
| EXPECT_EQ(1, callback1.result_count());
|
| @@ -104,8 +95,10 @@ TEST_F(AsyncWaiterTest, CancelCallback) {
|
| MessagePipe test_pipe;
|
| EXPECT_TRUE(test::WriteTextMessage(test_pipe.handle1.get(), std::string()));
|
|
|
| - CallCancelWait(CallAsyncWait(
|
| - test_pipe.handle0.get(), MOJO_HANDLE_SIGNAL_READABLE, &callback));
|
| + {
|
| + AsyncWaiter waiter(test_pipe.handle0.get(), MOJO_HANDLE_SIGNAL_READABLE,
|
| + ManualCallback(&callback));
|
| + }
|
| RunLoop::current()->Run();
|
| EXPECT_EQ(0, callback.result_count());
|
| }
|
|
|