Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Side by Side Diff: mojo/public/cpp/bindings/tests/sync_method_unittest.cc

Issue 1823683006: Mojo C++ bindings: sync call support for associated interfaces and master interfaces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/logging.h" 6 #include "base/logging.h"
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/threading/thread.h" 10 #include "base/threading/thread.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 } 78 }
79 79
80 Binding<TestSync>* binding() { return &binding_; } 80 Binding<TestSync>* binding() { return &binding_; }
81 81
82 private: 82 private:
83 Binding<TestSync> binding_; 83 Binding<TestSync> binding_;
84 84
85 DISALLOW_COPY_AND_ASSIGN(TestSyncImpl); 85 DISALLOW_COPY_AND_ASSIGN(TestSyncImpl);
86 }; 86 };
87 87
88 class TestSyncMasterImpl : public TestSyncMaster, public TestSyncCommonImpl {
89 public:
90 explicit TestSyncMasterImpl(TestSyncMasterRequest request)
91 : binding_(this, std::move(request)) {}
92
93 // TestSyncMaster implementation:
94 void Ping(const PingCallback& callback) override { PingImpl(callback); }
95 void Echo(int32_t value, const EchoCallback& callback) override {
96 EchoImpl(value, callback);
97 }
98 void AsyncEcho(int32_t value, const AsyncEchoCallback& callback) override {
99 AsyncEchoImpl(value, callback);
100 }
101 void SendInterface(TestSyncAssociatedPtrInfo ptr) override {}
102
103 Binding<TestSyncMaster>* binding() { return &binding_; }
104
105 private:
106 Binding<TestSyncMaster> binding_;
107
108 DISALLOW_COPY_AND_ASSIGN(TestSyncMasterImpl);
109 };
110
88 template <typename Interface> 111 template <typename Interface>
89 struct ImplTraits; 112 struct ImplTraits;
90 113
91 template <> 114 template <>
92 struct ImplTraits<TestSync> { 115 struct ImplTraits<TestSync> {
93 using Type = TestSyncImpl; 116 using Type = TestSyncImpl;
94 }; 117 };
95 118
119 template <>
120 struct ImplTraits<TestSyncMaster> {
121 using Type = TestSyncMasterImpl;
122 };
123
96 template <typename Interface> 124 template <typename Interface>
97 class TestSyncServiceThread { 125 class TestSyncServiceThread {
98 public: 126 public:
99 TestSyncServiceThread() 127 TestSyncServiceThread()
100 : thread_("TestSyncServiceThread"), ping_called_(false) { 128 : thread_("TestSyncServiceThread"), ping_called_(false) {
101 base::Thread::Options thread_options; 129 base::Thread::Options thread_options;
102 thread_options.message_pump_factory = 130 thread_options.message_pump_factory =
103 base::Bind(&common::MessagePumpMojo::Create); 131 base::Bind(&common::MessagePumpMojo::Create);
104 thread_.StartWithOptions(thread_options); 132 thread_.StartWithOptions(thread_options);
105 } 133 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 template <typename T> 169 template <typename T>
142 class SyncMethodCommonTest : public testing::Test { 170 class SyncMethodCommonTest : public testing::Test {
143 public: 171 public:
144 SyncMethodCommonTest() : loop_(common::MessagePumpMojo::Create()) {} 172 SyncMethodCommonTest() : loop_(common::MessagePumpMojo::Create()) {}
145 ~SyncMethodCommonTest() override { loop_.RunUntilIdle(); } 173 ~SyncMethodCommonTest() override { loop_.RunUntilIdle(); }
146 174
147 private: 175 private:
148 base::MessageLoop loop_; 176 base::MessageLoop loop_;
149 }; 177 };
150 178
151 using InterfaceTypes = testing::Types<TestSync>; 179 // TestSync and TestSyncMaster exercise Router and MultiplexRouter,
180 // respectively.
181 using InterfaceTypes = testing::Types<TestSync, TestSyncMaster>;
152 TYPED_TEST_CASE(SyncMethodCommonTest, InterfaceTypes); 182 TYPED_TEST_CASE(SyncMethodCommonTest, InterfaceTypes);
153 183
154 TYPED_TEST(SyncMethodCommonTest, CallSyncMethodAsynchronously) { 184 TYPED_TEST(SyncMethodCommonTest, CallSyncMethodAsynchronously) {
155 InterfacePtr<TypeParam> ptr; 185 InterfacePtr<TypeParam> ptr;
156 typename ImplTraits<TypeParam>::Type impl(GetProxy(&ptr)); 186 typename ImplTraits<TypeParam>::Type impl(GetProxy(&ptr));
157 187
158 base::RunLoop run_loop; 188 base::RunLoop run_loop;
159 ptr->Echo(123, [&run_loop](int32_t result) { 189 ptr->Echo(123, [&run_loop](int32_t result) {
160 EXPECT_EQ(123, result); 190 EXPECT_EQ(123, result);
161 run_loop.Quit(); 191 run_loop.Quit();
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 EXPECT_EQ(-1, result_value); 522 EXPECT_EQ(-1, result_value);
493 ASSERT_FALSE(connection_error_dispatched); 523 ASSERT_FALSE(connection_error_dispatched);
494 524
495 run_loop.Run(); 525 run_loop.Run();
496 ASSERT_TRUE(connection_error_dispatched); 526 ASSERT_TRUE(connection_error_dispatched);
497 } 527 }
498 528
499 } // namespace 529 } // namespace
500 } // namespace test 530 } // namespace test
501 } // namespace mojo 531 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698