| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "mojo/system/dispatcher.h" | 5 #include "mojo/system/dispatcher.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
| 10 #include "base/synchronization/waitable_event.h" | 10 #include "base/synchronization/waitable_event.h" |
| 11 #include "base/threading/simple_thread.h" | 11 #include "base/threading/simple_thread.h" |
| 12 #include "mojo/system/memory.h" |
| 12 #include "mojo/system/raw_shared_buffer.h" | 13 #include "mojo/system/raw_shared_buffer.h" |
| 13 #include "mojo/system/waiter.h" | 14 #include "mojo/system/waiter.h" |
| 14 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 15 | 16 |
| 16 namespace mojo { | 17 namespace mojo { |
| 17 namespace system { | 18 namespace system { |
| 18 namespace { | 19 namespace { |
| 19 | 20 |
| 20 // Trivial subclass that makes the constructor public. | 21 // Trivial subclass that makes the constructor public. |
| 21 class TrivialDispatcher : public Dispatcher { | 22 class TrivialDispatcher : public Dispatcher { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 45 EXPECT_EQ(Dispatcher::kTypeUnknown, d->GetType()); | 46 EXPECT_EQ(Dispatcher::kTypeUnknown, d->GetType()); |
| 46 | 47 |
| 47 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 48 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 48 d->WriteMessage(NULL, 0, NULL, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 49 d->WriteMessage(NULL, 0, NULL, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 49 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 50 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 50 d->ReadMessage(NULL, NULL, NULL, NULL, | 51 d->ReadMessage(NULL, NULL, NULL, NULL, |
| 51 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 52 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 52 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 53 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 53 d->WriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE)); | 54 d->WriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE)); |
| 54 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 55 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 55 d->BeginWriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE)); | 56 d->BeginWriteData(NullUserPointer(), NullUserPointer(), |
| 57 MOJO_WRITE_DATA_FLAG_NONE)); |
| 56 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 58 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 57 d->EndWriteData(0)); | 59 d->EndWriteData(0)); |
| 58 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 60 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 59 d->ReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); | 61 d->ReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); |
| 60 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 62 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 61 d->BeginReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); | 63 d->BeginReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); |
| 62 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 64 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 63 d->EndReadData(0)); | 65 d->EndReadData(0)); |
| 64 Waiter w; | 66 Waiter w; |
| 65 w.Init(); | 67 w.Init(); |
| 66 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, | 68 EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, |
| 67 d->AddWaiter(&w, ~MOJO_HANDLE_SIGNAL_NONE, 0)); | 69 d->AddWaiter(&w, ~MOJO_HANDLE_SIGNAL_NONE, 0)); |
| 68 // Okay to remove even if it wasn't added (or was already removed). | 70 // Okay to remove even if it wasn't added (or was already removed). |
| 69 d->RemoveWaiter(&w); | 71 d->RemoveWaiter(&w); |
| 70 d->RemoveWaiter(&w); | 72 d->RemoveWaiter(&w); |
| 71 | 73 |
| 72 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); | 74 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); |
| 73 | 75 |
| 74 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 76 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 75 d->WriteMessage(NULL, 0, NULL, MOJO_WRITE_MESSAGE_FLAG_NONE)); | 77 d->WriteMessage(NULL, 0, NULL, MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 76 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 78 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 77 d->ReadMessage(NULL, NULL, NULL, NULL, | 79 d->ReadMessage(NULL, NULL, NULL, NULL, |
| 78 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 80 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 79 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 81 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 80 d->WriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE)); | 82 d->WriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE)); |
| 81 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 83 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 82 d->BeginWriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE)); | 84 d->BeginWriteData(NullUserPointer(), NullUserPointer(), |
| 85 MOJO_WRITE_DATA_FLAG_NONE)); |
| 83 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 86 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 84 d->EndWriteData(0)); | 87 d->EndWriteData(0)); |
| 85 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 88 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 86 d->ReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); | 89 d->ReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); |
| 87 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 90 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 88 d->BeginReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); | 91 d->BeginReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); |
| 89 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 92 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 90 d->EndReadData(0)); | 93 d->EndReadData(0)); |
| 91 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 94 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 92 d->AddWaiter(&w, ~MOJO_HANDLE_SIGNAL_NONE, 0)); | 95 d->AddWaiter(&w, ~MOJO_HANDLE_SIGNAL_NONE, 0)); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 dispatcher_->ReadMessage(NULL, NULL, NULL, NULL, | 153 dispatcher_->ReadMessage(NULL, NULL, NULL, NULL, |
| 151 MOJO_WRITE_MESSAGE_FLAG_NONE)); | 154 MOJO_WRITE_MESSAGE_FLAG_NONE)); |
| 152 break; | 155 break; |
| 153 case WRITE_DATA: | 156 case WRITE_DATA: |
| 154 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 157 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 155 dispatcher_->WriteData(NULL, NULL, | 158 dispatcher_->WriteData(NULL, NULL, |
| 156 MOJO_WRITE_DATA_FLAG_NONE)); | 159 MOJO_WRITE_DATA_FLAG_NONE)); |
| 157 break; | 160 break; |
| 158 case BEGIN_WRITE_DATA: | 161 case BEGIN_WRITE_DATA: |
| 159 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 162 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 160 dispatcher_->BeginWriteData(NULL, NULL, | 163 dispatcher_->BeginWriteData(NullUserPointer(), |
| 164 NullUserPointer(), |
| 161 MOJO_WRITE_DATA_FLAG_NONE)); | 165 MOJO_WRITE_DATA_FLAG_NONE)); |
| 162 break; | 166 break; |
| 163 case END_WRITE_DATA: | 167 case END_WRITE_DATA: |
| 164 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 168 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 165 dispatcher_->EndWriteData(0)); | 169 dispatcher_->EndWriteData(0)); |
| 166 break; | 170 break; |
| 167 case READ_DATA: | 171 case READ_DATA: |
| 168 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, | 172 EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, |
| 169 dispatcher_->ReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); | 173 dispatcher_->ReadData(NULL, NULL, MOJO_READ_DATA_FLAG_NONE)); |
| 170 break; | 174 break; |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 event.Signal(); // Kicks off real work on the threads. | 269 event.Signal(); // Kicks off real work on the threads. |
| 266 } // Joins all the threads. | 270 } // Joins all the threads. |
| 267 | 271 |
| 268 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); | 272 EXPECT_EQ(MOJO_RESULT_OK, d->Close()); |
| 269 } | 273 } |
| 270 } | 274 } |
| 271 | 275 |
| 272 } // namespace | 276 } // namespace |
| 273 } // namespace system | 277 } // namespace system |
| 274 } // namespace mojo | 278 } // namespace mojo |
| OLD | NEW |