Index: mojo/edk/system/core_test_base.cc |
diff --git a/mojo/edk/system/core_test_base.cc b/mojo/edk/system/core_test_base.cc |
index 76e70e220b50d9835b140e3351d2e36eff73394d..b81a051d22c45591fc048b572e0d4287a44426f7 100644 |
--- a/mojo/edk/system/core_test_base.cc |
+++ b/mojo/edk/system/core_test_base.cc |
@@ -123,7 +123,7 @@ class MockDispatcher : public Dispatcher { |
return MOJO_RESULT_UNIMPLEMENTED; |
} |
- MojoResult AddAwakableImplNoLock(Awakable* /*awakable*/, |
+ MojoResult AddAwakableImplNoLock(Awakable* awakable, |
MojoHandleSignals /*signals*/, |
uint32_t /*context*/, |
HandleSignalsState* signals_state) override { |
@@ -131,6 +131,11 @@ class MockDispatcher : public Dispatcher { |
lock().AssertAcquired(); |
if (signals_state) |
*signals_state = HandleSignalsState(); |
+ if (info_->IsAddAwakableAllowed()) { |
+ info_->AwakableWasAdded(awakable); |
+ return MOJO_RESULT_OK; |
+ } |
+ |
return MOJO_RESULT_FAILED_PRECONDITION; |
} |
@@ -198,7 +203,8 @@ CoreTestBase_MockHandleInfo::CoreTestBase_MockHandleInfo() |
end_read_data_call_count_(0), |
add_awakable_call_count_(0), |
remove_awakable_call_count_(0), |
- cancel_all_awakables_call_count_(0) { |
+ cancel_all_awakables_call_count_(0), |
+ add_awakable_allowed_(false) { |
} |
CoreTestBase_MockHandleInfo::~CoreTestBase_MockHandleInfo() { |
@@ -274,6 +280,16 @@ unsigned CoreTestBase_MockHandleInfo::GetCancelAllAwakablesCallCount() const { |
return cancel_all_awakables_call_count_; |
} |
+size_t CoreTestBase_MockHandleInfo::GetAddedAwakableSize() const { |
+ base::AutoLock locker(lock_); |
+ return added_awakables_.size(); |
+} |
+ |
+Awakable* CoreTestBase_MockHandleInfo::GetAddedAwakableAt(unsigned i) const { |
+ base::AutoLock locker(lock_); |
+ return added_awakables_[i]; |
+} |
+ |
void CoreTestBase_MockHandleInfo::IncrementCtorCallCount() { |
base::AutoLock locker(lock_); |
ctor_call_count_++; |
@@ -344,6 +360,21 @@ void CoreTestBase_MockHandleInfo::IncrementCancelAllAwakablesCallCount() { |
cancel_all_awakables_call_count_++; |
} |
+void CoreTestBase_MockHandleInfo::AllowAddAwakable(bool alllow) { |
+ base::AutoLock locker(lock_); |
+ add_awakable_allowed_ = alllow; |
+} |
+ |
+bool CoreTestBase_MockHandleInfo::IsAddAwakableAllowed() const { |
+ base::AutoLock locker(lock_); |
+ return add_awakable_allowed_; |
+} |
+ |
+void CoreTestBase_MockHandleInfo::AwakableWasAdded(Awakable* awakable) { |
+ base::AutoLock locker(lock_); |
+ added_awakables_.push_back(awakable); |
+} |
+ |
} // namespace test |
} // namespace system |
} // namespace mojo |