| Index: mojo/edk/test/mojo_test_base.cc
|
| diff --git a/mojo/edk/test/mojo_test_base.cc b/mojo/edk/test/mojo_test_base.cc
|
| index 7b83e5708c675e5f1073ac3efcd0f3ad5f90004d..f1032d7e3f5fe0ef45957dba5c8949cd1cdf5602 100644
|
| --- a/mojo/edk/test/mojo_test_base.cc
|
| +++ b/mojo/edk/test/mojo_test_base.cc
|
| @@ -5,16 +5,13 @@
|
| #include "mojo/edk/test/mojo_test_base.h"
|
|
|
| #include "base/memory/ptr_util.h"
|
| -#include "base/memory/ref_counted.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/run_loop.h"
|
| -#include "base/synchronization/waitable_event.h"
|
| #include "mojo/edk/embedder/embedder.h"
|
| #include "mojo/edk/system/handle_signals_state.h"
|
| #include "mojo/public/c/system/buffer.h"
|
| #include "mojo/public/c/system/data_pipe.h"
|
| #include "mojo/public/c/system/functions.h"
|
| -#include "mojo/public/c/system/watcher.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| #if defined(OS_MACOSX) && !defined(OS_IOS)
|
| @@ -25,103 +22,6 @@
|
| namespace edk {
|
| namespace test {
|
|
|
| -namespace {
|
| -
|
| -class Waiter {
|
| - public:
|
| - Waiter() {}
|
| - ~Waiter() {}
|
| -
|
| - MojoResult Wait(MojoHandle handle,
|
| - MojoHandleSignals signals,
|
| - MojoHandleSignalsState* state) {
|
| - MojoHandle watcher;
|
| - MojoCreateWatcher(&Context::OnNotification, &watcher);
|
| -
|
| - context_ = new Context();
|
| -
|
| - // Balanced by OnNotification in the |MOJO_RESULT_CANCELLED| case.
|
| - context_->AddRef();
|
| -
|
| - DCHECK_EQ(MOJO_RESULT_OK,
|
| - MojoWatch(watcher, handle, signals,
|
| - reinterpret_cast<uintptr_t>(context_.get())));
|
| -
|
| - uint32_t num_ready_contexts = 1;
|
| - uintptr_t ready_context;
|
| - MojoResult ready_result;
|
| - MojoHandleSignalsState ready_state;
|
| - MojoResult rv = MojoArmWatcher(watcher, &num_ready_contexts, &ready_context,
|
| - &ready_result, &ready_state);
|
| - if (rv == MOJO_RESULT_FAILED_PRECONDITION) {
|
| - MojoClose(watcher);
|
| - DCHECK_EQ(1u, num_ready_contexts);
|
| - if (state)
|
| - *state = ready_state;
|
| - return ready_result;
|
| - }
|
| -
|
| - // Wait for the first notification.
|
| - context_->event().Wait();
|
| -
|
| - ready_result = context_->wait_result();
|
| - DCHECK_NE(MOJO_RESULT_UNKNOWN, ready_result);
|
| -
|
| - if (state)
|
| - *state = context_->wait_state();
|
| -
|
| - MojoClose(watcher);
|
| -
|
| - return ready_result;
|
| - }
|
| -
|
| - private:
|
| - class Context : public base::RefCountedThreadSafe<Context> {
|
| - public:
|
| - Context()
|
| - : event_(base::WaitableEvent::ResetPolicy::AUTOMATIC,
|
| - base::WaitableEvent::InitialState::NOT_SIGNALED) {}
|
| -
|
| - base::WaitableEvent& event() { return event_; }
|
| - MojoResult wait_result() const { return wait_result_; }
|
| - MojoHandleSignalsState wait_state() const { return wait_state_; }
|
| -
|
| - static void OnNotification(uintptr_t context_value,
|
| - MojoResult result,
|
| - MojoHandleSignalsState state,
|
| - MojoWatcherNotificationFlags flags) {
|
| - auto* context = reinterpret_cast<Context*>(context_value);
|
| - context->Notify(result, state);
|
| - if (result == MOJO_RESULT_CANCELLED)
|
| - context->Release();
|
| - }
|
| -
|
| - private:
|
| - friend class base::RefCountedThreadSafe<Context>;
|
| -
|
| - ~Context() {}
|
| -
|
| - void Notify(MojoResult result, MojoHandleSignalsState state) {
|
| - if (wait_result_ == MOJO_RESULT_UNKNOWN) {
|
| - wait_result_ = result;
|
| - wait_state_ = state;
|
| - }
|
| - event_.Signal();
|
| - }
|
| -
|
| - base::WaitableEvent event_;
|
| - MojoResult wait_result_ = MOJO_RESULT_UNKNOWN;
|
| - MojoHandleSignalsState wait_state_ = {0, 0};
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Context);
|
| - };
|
| -
|
| - scoped_refptr<Context> context_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(Waiter);
|
| -};
|
| -
|
| -} // namespace
|
|
|
| #if defined(OS_MACOSX) && !defined(OS_IOS)
|
| namespace {
|
| @@ -230,7 +130,9 @@
|
| MojoHandle mp,
|
| MojoHandle* handles,
|
| uint32_t expected_num_handles) {
|
| - CHECK_EQ(WaitForSignals(mp, MOJO_HANDLE_SIGNAL_READABLE), MOJO_RESULT_OK);
|
| + CHECK_EQ(MojoWait(mp, MOJO_HANDLE_SIGNAL_READABLE, MOJO_DEADLINE_INDEFINITE,
|
| + nullptr),
|
| + MOJO_RESULT_OK);
|
|
|
| uint32_t message_size = 0;
|
| uint32_t num_handles = 0;
|
| @@ -252,7 +154,9 @@
|
| // static
|
| std::string MojoTestBase::ReadMessageWithOptionalHandle(MojoHandle mp,
|
| MojoHandle* handle) {
|
| - CHECK_EQ(WaitForSignals(mp, MOJO_HANDLE_SIGNAL_READABLE), MOJO_RESULT_OK);
|
| + CHECK_EQ(MojoWait(mp, MOJO_HANDLE_SIGNAL_READABLE, MOJO_DEADLINE_INDEFINITE,
|
| + nullptr),
|
| + MOJO_RESULT_OK);
|
|
|
| uint32_t message_size = 0;
|
| uint32_t num_handles = 0;
|
| @@ -287,7 +191,9 @@
|
| void MojoTestBase::ReadMessage(MojoHandle mp,
|
| char* data,
|
| size_t num_bytes) {
|
| - CHECK_EQ(WaitForSignals(mp, MOJO_HANDLE_SIGNAL_READABLE), MOJO_RESULT_OK);
|
| + CHECK_EQ(MojoWait(mp, MOJO_HANDLE_SIGNAL_READABLE, MOJO_DEADLINE_INDEFINITE,
|
| + nullptr),
|
| + MOJO_RESULT_OK);
|
|
|
| uint32_t message_size = 0;
|
| uint32_t num_handles = 0;
|
| @@ -382,7 +288,8 @@
|
|
|
| // static
|
| void MojoTestBase::WriteData(MojoHandle producer, const std::string& data) {
|
| - CHECK_EQ(WaitForSignals(producer, MOJO_HANDLE_SIGNAL_WRITABLE),
|
| + CHECK_EQ(MojoWait(producer, MOJO_HANDLE_SIGNAL_WRITABLE,
|
| + MOJO_DEADLINE_INDEFINITE, nullptr),
|
| MOJO_RESULT_OK);
|
| uint32_t num_bytes = static_cast<uint32_t>(data.size());
|
| CHECK_EQ(MojoWriteData(producer, data.data(), &num_bytes,
|
| @@ -393,7 +300,8 @@
|
|
|
| // static
|
| std::string MojoTestBase::ReadData(MojoHandle consumer, size_t size) {
|
| - CHECK_EQ(WaitForSignals(consumer, MOJO_HANDLE_SIGNAL_READABLE),
|
| + CHECK_EQ(MojoWait(consumer, MOJO_HANDLE_SIGNAL_READABLE,
|
| + MOJO_DEADLINE_INDEFINITE, nullptr),
|
| MOJO_RESULT_OK);
|
| std::vector<char> buffer(size);
|
| uint32_t num_bytes = static_cast<uint32_t>(size);
|
| @@ -405,21 +313,6 @@
|
| return std::string(buffer.data(), buffer.size());
|
| }
|
|
|
| -// static
|
| -MojoHandleSignalsState MojoTestBase::GetSignalsState(MojoHandle handle) {
|
| - MojoHandleSignalsState signals_state;
|
| - CHECK_EQ(MOJO_RESULT_OK, MojoQueryHandleSignalsState(handle, &signals_state));
|
| - return signals_state;
|
| -}
|
| -
|
| -// static
|
| -MojoResult MojoTestBase::WaitForSignals(MojoHandle handle,
|
| - MojoHandleSignals signals,
|
| - MojoHandleSignalsState* state) {
|
| - Waiter waiter;
|
| - return waiter.Wait(handle, signals, state);
|
| -}
|
| -
|
| } // namespace test
|
| } // namespace edk
|
| } // namespace mojo
|
|
|