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 |