| 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/edk/system/core_test_base.h" | 5 #include "mojo/edk/system/core_test_base.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 // MockDispatcher -------------------------------------------------------------- | 25 // MockDispatcher -------------------------------------------------------------- |
| 26 | 26 |
| 27 class MockDispatcher : public Dispatcher { | 27 class MockDispatcher : public Dispatcher { |
| 28 public: | 28 public: |
| 29 static scoped_refptr<MockDispatcher> Create( | 29 static scoped_refptr<MockDispatcher> Create( |
| 30 CoreTestBase::MockHandleInfo* info) { | 30 CoreTestBase::MockHandleInfo* info) { |
| 31 return make_scoped_refptr(new MockDispatcher(info)); | 31 return make_scoped_refptr(new MockDispatcher(info)); |
| 32 } | 32 } |
| 33 | 33 |
| 34 // |Dispatcher| private methods: | 34 // Dispatcher: |
| 35 Type GetType() const override { return Type::UNKNOWN; } | 35 Type GetType() const override { return Type::UNKNOWN; } |
| 36 | 36 |
| 37 private: | 37 MojoResult Close() override { |
| 38 explicit MockDispatcher(CoreTestBase::MockHandleInfo* info) : info_(info) { | 38 info_->IncrementCloseCallCount(); |
| 39 CHECK(info_); | 39 return MOJO_RESULT_OK; |
| 40 info_->IncrementCtorCallCount(); | |
| 41 } | 40 } |
| 42 | 41 |
| 43 ~MockDispatcher() override { info_->IncrementDtorCallCount(); } | 42 MojoResult WriteMessage( |
| 44 | |
| 45 // |Dispatcher| protected methods: | |
| 46 void CloseImplNoLock() override { | |
| 47 info_->IncrementCloseCallCount(); | |
| 48 lock().AssertAcquired(); | |
| 49 } | |
| 50 | |
| 51 MojoResult WriteMessageImplNoLock( | |
| 52 const void* bytes, | 43 const void* bytes, |
| 53 uint32_t num_bytes, | 44 uint32_t num_bytes, |
| 54 std::vector<DispatcherTransport>* transports, | 45 const DispatcherInTransit* dispatchers, |
| 46 uint32_t num_dispatchers, |
| 55 MojoWriteMessageFlags /*flags*/) override { | 47 MojoWriteMessageFlags /*flags*/) override { |
| 56 info_->IncrementWriteMessageCallCount(); | 48 info_->IncrementWriteMessageCallCount(); |
| 57 lock().AssertAcquired(); | |
| 58 | 49 |
| 59 if (num_bytes > GetConfiguration().max_message_num_bytes) | 50 if (num_bytes > GetConfiguration().max_message_num_bytes) |
| 60 return MOJO_RESULT_RESOURCE_EXHAUSTED; | 51 return MOJO_RESULT_RESOURCE_EXHAUSTED; |
| 61 | 52 |
| 62 if (transports) | 53 if (dispatchers) |
| 63 return MOJO_RESULT_UNIMPLEMENTED; | 54 return MOJO_RESULT_UNIMPLEMENTED; |
| 64 | 55 |
| 65 return MOJO_RESULT_OK; | 56 return MOJO_RESULT_OK; |
| 66 } | 57 } |
| 67 | 58 |
| 68 MojoResult ReadMessageImplNoLock(void* bytes, | 59 MojoResult ReadMessage(void* bytes, |
| 69 uint32_t* num_bytes, | 60 uint32_t* num_bytes, |
| 70 DispatcherVector* dispatchers, | 61 MojoHandle* handle, |
| 71 uint32_t* num_dispatchers, | 62 uint32_t* num_handles, |
| 72 MojoReadMessageFlags /*flags*/) override { | 63 MojoReadMessageFlags /*flags*/) override { |
| 73 info_->IncrementReadMessageCallCount(); | 64 info_->IncrementReadMessageCallCount(); |
| 74 lock().AssertAcquired(); | |
| 75 | 65 |
| 76 if (num_dispatchers) { | 66 if (num_handles) |
| 77 *num_dispatchers = 1; | 67 *num_handles = 1; |
| 78 if (dispatchers) { | |
| 79 // Okay to leave an invalid dispatcher. | |
| 80 dispatchers->resize(1); | |
| 81 } | |
| 82 } | |
| 83 | 68 |
| 84 return MOJO_RESULT_OK; | 69 return MOJO_RESULT_OK; |
| 85 } | 70 } |
| 86 | 71 |
| 87 MojoResult WriteDataImplNoLock(const void* /*elements*/, | 72 MojoResult WriteData(const void* elements, |
| 88 uint32_t* /*num_bytes*/, | 73 uint32_t* num_bytes, |
| 89 MojoWriteDataFlags /*flags*/) override { | 74 MojoWriteDataFlags flags) override { |
| 90 info_->IncrementWriteDataCallCount(); | 75 info_->IncrementWriteDataCallCount(); |
| 91 lock().AssertAcquired(); | |
| 92 return MOJO_RESULT_UNIMPLEMENTED; | 76 return MOJO_RESULT_UNIMPLEMENTED; |
| 93 } | 77 } |
| 94 | 78 |
| 95 MojoResult BeginWriteDataImplNoLock( | 79 MojoResult BeginWriteData(void** buffer, |
| 96 void** /*buffer*/, | 80 uint32_t* buffer_num_bytes, |
| 97 uint32_t* /*buffer_num_bytes*/, | 81 MojoWriteDataFlags flags) override { |
| 98 MojoWriteDataFlags /*flags*/) override { | |
| 99 info_->IncrementBeginWriteDataCallCount(); | 82 info_->IncrementBeginWriteDataCallCount(); |
| 100 lock().AssertAcquired(); | |
| 101 return MOJO_RESULT_UNIMPLEMENTED; | 83 return MOJO_RESULT_UNIMPLEMENTED; |
| 102 } | 84 } |
| 103 | 85 |
| 104 MojoResult EndWriteDataImplNoLock(uint32_t /*num_bytes_written*/) override { | 86 MojoResult EndWriteData(uint32_t num_bytes_written) override { |
| 105 info_->IncrementEndWriteDataCallCount(); | 87 info_->IncrementEndWriteDataCallCount(); |
| 106 lock().AssertAcquired(); | |
| 107 return MOJO_RESULT_UNIMPLEMENTED; | 88 return MOJO_RESULT_UNIMPLEMENTED; |
| 108 } | 89 } |
| 109 | 90 |
| 110 MojoResult ReadDataImplNoLock(void* /*elements*/, | 91 MojoResult ReadData(void* elements, |
| 111 uint32_t* /*num_bytes*/, | 92 uint32_t* num_bytes, |
| 112 MojoReadDataFlags /*flags*/) override { | 93 MojoReadDataFlags flags) override { |
| 113 info_->IncrementReadDataCallCount(); | 94 info_->IncrementReadDataCallCount(); |
| 114 lock().AssertAcquired(); | |
| 115 return MOJO_RESULT_UNIMPLEMENTED; | 95 return MOJO_RESULT_UNIMPLEMENTED; |
| 116 } | 96 } |
| 117 | 97 |
| 118 MojoResult BeginReadDataImplNoLock(const void** /*buffer*/, | 98 MojoResult BeginReadData(const void** buffer, |
| 119 uint32_t* /*buffer_num_bytes*/, | 99 uint32_t* buffer_num_bytes, |
| 120 MojoReadDataFlags /*flags*/) override { | 100 MojoReadDataFlags flags) override { |
| 121 info_->IncrementBeginReadDataCallCount(); | 101 info_->IncrementBeginReadDataCallCount(); |
| 122 lock().AssertAcquired(); | |
| 123 return MOJO_RESULT_UNIMPLEMENTED; | 102 return MOJO_RESULT_UNIMPLEMENTED; |
| 124 } | 103 } |
| 125 | 104 |
| 126 MojoResult EndReadDataImplNoLock(uint32_t /*num_bytes_read*/) override { | 105 MojoResult EndReadData(uint32_t num_bytes_read) override { |
| 127 info_->IncrementEndReadDataCallCount(); | 106 info_->IncrementEndReadDataCallCount(); |
| 128 lock().AssertAcquired(); | |
| 129 return MOJO_RESULT_UNIMPLEMENTED; | 107 return MOJO_RESULT_UNIMPLEMENTED; |
| 130 } | 108 } |
| 131 | 109 |
| 132 MojoResult AddAwakableImplNoLock(Awakable* awakable, | 110 MojoResult AddAwakable(Awakable* awakable, |
| 133 MojoHandleSignals /*signals*/, | 111 MojoHandleSignals /*signals*/, |
| 134 uintptr_t /*context*/, | 112 uintptr_t /*context*/, |
| 135 HandleSignalsState* signals_state) override { | 113 HandleSignalsState* signals_state) override { |
| 136 info_->IncrementAddAwakableCallCount(); | 114 info_->IncrementAddAwakableCallCount(); |
| 137 lock().AssertAcquired(); | |
| 138 if (signals_state) | 115 if (signals_state) |
| 139 *signals_state = HandleSignalsState(); | 116 *signals_state = HandleSignalsState(); |
| 140 if (info_->IsAddAwakableAllowed()) { | 117 if (info_->IsAddAwakableAllowed()) { |
| 141 info_->AwakableWasAdded(awakable); | 118 info_->AwakableWasAdded(awakable); |
| 142 return MOJO_RESULT_OK; | 119 return MOJO_RESULT_OK; |
| 143 } | 120 } |
| 144 | 121 |
| 145 return MOJO_RESULT_FAILED_PRECONDITION; | 122 return MOJO_RESULT_FAILED_PRECONDITION; |
| 146 } | 123 } |
| 147 | 124 |
| 148 void RemoveAwakableImplNoLock(Awakable* /*awakable*/, | 125 void RemoveAwakable(Awakable* /*awakable*/, |
| 149 HandleSignalsState* signals_state) override { | 126 HandleSignalsState* signals_state) override { |
| 150 info_->IncrementRemoveAwakableCallCount(); | 127 info_->IncrementRemoveAwakableCallCount(); |
| 151 lock().AssertAcquired(); | |
| 152 if (signals_state) | 128 if (signals_state) |
| 153 *signals_state = HandleSignalsState(); | 129 *signals_state = HandleSignalsState(); |
| 154 } | 130 } |
| 155 | 131 |
| 156 void CancelAllAwakablesNoLock() override { | 132 private: |
| 157 info_->IncrementCancelAllAwakablesCallCount(); | 133 explicit MockDispatcher(CoreTestBase::MockHandleInfo* info) : info_(info) { |
| 158 lock().AssertAcquired(); | 134 CHECK(info_); |
| 135 info_->IncrementCtorCallCount(); |
| 159 } | 136 } |
| 160 | 137 |
| 161 scoped_refptr<Dispatcher> CreateEquivalentDispatcherAndCloseImplNoLock() | 138 ~MockDispatcher() override { info_->IncrementDtorCallCount(); } |
| 162 override { | |
| 163 return Create(info_); | |
| 164 } | |
| 165 | 139 |
| 166 CoreTestBase::MockHandleInfo* const info_; | 140 CoreTestBase::MockHandleInfo* const info_; |
| 167 | 141 |
| 168 MOJO_DISALLOW_COPY_AND_ASSIGN(MockDispatcher); | 142 MOJO_DISALLOW_COPY_AND_ASSIGN(MockDispatcher); |
| 169 }; | 143 }; |
| 170 | 144 |
| 171 } // namespace | 145 } // namespace |
| 172 | 146 |
| 173 // CoreTestBase ---------------------------------------------------------------- | 147 // CoreTestBase ---------------------------------------------------------------- |
| 174 | 148 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 196 write_message_call_count_(0), | 170 write_message_call_count_(0), |
| 197 read_message_call_count_(0), | 171 read_message_call_count_(0), |
| 198 write_data_call_count_(0), | 172 write_data_call_count_(0), |
| 199 begin_write_data_call_count_(0), | 173 begin_write_data_call_count_(0), |
| 200 end_write_data_call_count_(0), | 174 end_write_data_call_count_(0), |
| 201 read_data_call_count_(0), | 175 read_data_call_count_(0), |
| 202 begin_read_data_call_count_(0), | 176 begin_read_data_call_count_(0), |
| 203 end_read_data_call_count_(0), | 177 end_read_data_call_count_(0), |
| 204 add_awakable_call_count_(0), | 178 add_awakable_call_count_(0), |
| 205 remove_awakable_call_count_(0), | 179 remove_awakable_call_count_(0), |
| 206 cancel_all_awakables_call_count_(0), | |
| 207 add_awakable_allowed_(false) { | 180 add_awakable_allowed_(false) { |
| 208 } | 181 } |
| 209 | 182 |
| 210 CoreTestBase_MockHandleInfo::~CoreTestBase_MockHandleInfo() { | 183 CoreTestBase_MockHandleInfo::~CoreTestBase_MockHandleInfo() { |
| 211 } | 184 } |
| 212 | 185 |
| 213 unsigned CoreTestBase_MockHandleInfo::GetCtorCallCount() const { | 186 unsigned CoreTestBase_MockHandleInfo::GetCtorCallCount() const { |
| 214 base::AutoLock locker(lock_); | 187 base::AutoLock locker(lock_); |
| 215 return ctor_call_count_; | 188 return ctor_call_count_; |
| 216 } | 189 } |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 unsigned CoreTestBase_MockHandleInfo::GetAddAwakableCallCount() const { | 241 unsigned CoreTestBase_MockHandleInfo::GetAddAwakableCallCount() const { |
| 269 base::AutoLock locker(lock_); | 242 base::AutoLock locker(lock_); |
| 270 return add_awakable_call_count_; | 243 return add_awakable_call_count_; |
| 271 } | 244 } |
| 272 | 245 |
| 273 unsigned CoreTestBase_MockHandleInfo::GetRemoveAwakableCallCount() const { | 246 unsigned CoreTestBase_MockHandleInfo::GetRemoveAwakableCallCount() const { |
| 274 base::AutoLock locker(lock_); | 247 base::AutoLock locker(lock_); |
| 275 return remove_awakable_call_count_; | 248 return remove_awakable_call_count_; |
| 276 } | 249 } |
| 277 | 250 |
| 278 unsigned CoreTestBase_MockHandleInfo::GetCancelAllAwakablesCallCount() const { | |
| 279 base::AutoLock locker(lock_); | |
| 280 return cancel_all_awakables_call_count_; | |
| 281 } | |
| 282 | |
| 283 size_t CoreTestBase_MockHandleInfo::GetAddedAwakableSize() const { | 251 size_t CoreTestBase_MockHandleInfo::GetAddedAwakableSize() const { |
| 284 base::AutoLock locker(lock_); | 252 base::AutoLock locker(lock_); |
| 285 return added_awakables_.size(); | 253 return added_awakables_.size(); |
| 286 } | 254 } |
| 287 | 255 |
| 288 Awakable* CoreTestBase_MockHandleInfo::GetAddedAwakableAt(unsigned i) const { | 256 Awakable* CoreTestBase_MockHandleInfo::GetAddedAwakableAt(unsigned i) const { |
| 289 base::AutoLock locker(lock_); | 257 base::AutoLock locker(lock_); |
| 290 return added_awakables_[i]; | 258 return added_awakables_[i]; |
| 291 } | 259 } |
| 292 | 260 |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 void CoreTestBase_MockHandleInfo::IncrementAddAwakableCallCount() { | 316 void CoreTestBase_MockHandleInfo::IncrementAddAwakableCallCount() { |
| 349 base::AutoLock locker(lock_); | 317 base::AutoLock locker(lock_); |
| 350 add_awakable_call_count_++; | 318 add_awakable_call_count_++; |
| 351 } | 319 } |
| 352 | 320 |
| 353 void CoreTestBase_MockHandleInfo::IncrementRemoveAwakableCallCount() { | 321 void CoreTestBase_MockHandleInfo::IncrementRemoveAwakableCallCount() { |
| 354 base::AutoLock locker(lock_); | 322 base::AutoLock locker(lock_); |
| 355 remove_awakable_call_count_++; | 323 remove_awakable_call_count_++; |
| 356 } | 324 } |
| 357 | 325 |
| 358 void CoreTestBase_MockHandleInfo::IncrementCancelAllAwakablesCallCount() { | |
| 359 base::AutoLock locker(lock_); | |
| 360 cancel_all_awakables_call_count_++; | |
| 361 } | |
| 362 | |
| 363 void CoreTestBase_MockHandleInfo::AllowAddAwakable(bool alllow) { | 326 void CoreTestBase_MockHandleInfo::AllowAddAwakable(bool alllow) { |
| 364 base::AutoLock locker(lock_); | 327 base::AutoLock locker(lock_); |
| 365 add_awakable_allowed_ = alllow; | 328 add_awakable_allowed_ = alllow; |
| 366 } | 329 } |
| 367 | 330 |
| 368 bool CoreTestBase_MockHandleInfo::IsAddAwakableAllowed() const { | 331 bool CoreTestBase_MockHandleInfo::IsAddAwakableAllowed() const { |
| 369 base::AutoLock locker(lock_); | 332 base::AutoLock locker(lock_); |
| 370 return add_awakable_allowed_; | 333 return add_awakable_allowed_; |
| 371 } | 334 } |
| 372 | 335 |
| 373 void CoreTestBase_MockHandleInfo::AwakableWasAdded(Awakable* awakable) { | 336 void CoreTestBase_MockHandleInfo::AwakableWasAdded(Awakable* awakable) { |
| 374 base::AutoLock locker(lock_); | 337 base::AutoLock locker(lock_); |
| 375 added_awakables_.push_back(awakable); | 338 added_awakables_.push_back(awakable); |
| 376 } | 339 } |
| 377 | 340 |
| 378 } // namespace test | 341 } // namespace test |
| 379 } // namespace edk | 342 } // namespace edk |
| 380 } // namespace mojo | 343 } // namespace mojo |
| OLD | NEW |