|  | // Copyright 2013 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef MOJO_CORE_CORE_TEST_BASE_H_ | 
|  | #define MOJO_CORE_CORE_TEST_BASE_H_ | 
|  |  | 
|  | #include <stddef.h> | 
|  |  | 
|  | #include "base/macros.h" | 
|  | #include "base/synchronization/lock.h" | 
|  | #include "mojo/core/test_utils.h" | 
|  | #include "mojo/public/c/system/types.h" | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  |  | 
|  | namespace mojo { | 
|  | namespace core { | 
|  |  | 
|  | class Core; | 
|  |  | 
|  | namespace test { | 
|  |  | 
|  | class CoreTestBase_MockHandleInfo; | 
|  |  | 
|  | class CoreTestBase : public testing::Test { | 
|  | public: | 
|  | using MockHandleInfo = CoreTestBase_MockHandleInfo; | 
|  |  | 
|  | CoreTestBase(); | 
|  | ~CoreTestBase() override; | 
|  |  | 
|  | protected: | 
|  | // |info| must remain alive until the returned handle is closed. | 
|  | MojoHandle CreateMockHandle(MockHandleInfo* info); | 
|  |  | 
|  | Core* core(); | 
|  |  | 
|  | private: | 
|  | DISALLOW_COPY_AND_ASSIGN(CoreTestBase); | 
|  | }; | 
|  |  | 
|  | class CoreTestBase_MockHandleInfo { | 
|  | public: | 
|  | CoreTestBase_MockHandleInfo(); | 
|  | ~CoreTestBase_MockHandleInfo(); | 
|  |  | 
|  | unsigned GetCtorCallCount() const; | 
|  | unsigned GetDtorCallCount() const; | 
|  | unsigned GetCloseCallCount() const; | 
|  | unsigned GetWriteMessageCallCount() const; | 
|  | unsigned GetReadMessageCallCount() const; | 
|  | unsigned GetWriteDataCallCount() const; | 
|  | unsigned GetBeginWriteDataCallCount() const; | 
|  | unsigned GetEndWriteDataCallCount() const; | 
|  | unsigned GetReadDataCallCount() const; | 
|  | unsigned GetBeginReadDataCallCount() const; | 
|  | unsigned GetEndReadDataCallCount() const; | 
|  |  | 
|  | // For use by |MockDispatcher|: | 
|  | void IncrementCtorCallCount(); | 
|  | void IncrementDtorCallCount(); | 
|  | void IncrementCloseCallCount(); | 
|  | void IncrementWriteMessageCallCount(); | 
|  | void IncrementReadMessageCallCount(); | 
|  | void IncrementWriteDataCallCount(); | 
|  | void IncrementBeginWriteDataCallCount(); | 
|  | void IncrementEndWriteDataCallCount(); | 
|  | void IncrementReadDataCallCount(); | 
|  | void IncrementBeginReadDataCallCount(); | 
|  | void IncrementEndReadDataCallCount(); | 
|  |  | 
|  | private: | 
|  | mutable base::Lock lock_;  // Protects the following members. | 
|  | unsigned ctor_call_count_; | 
|  | unsigned dtor_call_count_; | 
|  | unsigned close_call_count_; | 
|  | unsigned write_message_call_count_; | 
|  | unsigned read_message_call_count_; | 
|  | unsigned write_data_call_count_; | 
|  | unsigned begin_write_data_call_count_; | 
|  | unsigned end_write_data_call_count_; | 
|  | unsigned read_data_call_count_; | 
|  | unsigned begin_read_data_call_count_; | 
|  | unsigned end_read_data_call_count_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(CoreTestBase_MockHandleInfo); | 
|  | }; | 
|  |  | 
|  | }  // namespace test | 
|  | }  // namespace core | 
|  | }  // namespace mojo | 
|  |  | 
|  | #endif  // MOJO_CORE_CORE_TEST_BASE_H_ |