OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/callback.h" | 6 #include "base/callback.h" |
7 #include "base/logging.h" | 7 #include "base/logging.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 "mojo/public/cpp/bindings/binding_set.h" | 10 #include "mojo/public/cpp/bindings/binding_set.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 } | 127 } |
128 | 128 |
129 private: | 129 private: |
130 // TraitsTestService: | 130 // TraitsTestService: |
131 void EchoStructWithTraits( | 131 void EchoStructWithTraits( |
132 const StructWithTraitsImpl& s, | 132 const StructWithTraitsImpl& s, |
133 const EchoStructWithTraitsCallback& callback) override { | 133 const EchoStructWithTraitsCallback& callback) override { |
134 callback.Run(s); | 134 callback.Run(s); |
135 } | 135 } |
136 | 136 |
137 void EchoPassByValueStructWithTraits( | 137 void EchoTrivialStructWithTraits( |
138 PassByValueStructWithTraitsImpl s, | 138 TrivialStructWithTraitsImpl s, |
139 const EchoPassByValueStructWithTraitsCallback& callback) override { | 139 const EchoTrivialStructWithTraitsCallback& callback) override { |
| 140 callback.Run(s); |
| 141 } |
| 142 |
| 143 void EchoMoveOnlyStructWithTraits( |
| 144 MoveOnlyStructWithTraitsImpl s, |
| 145 const EchoMoveOnlyStructWithTraitsCallback& callback) override { |
140 callback.Run(std::move(s)); | 146 callback.Run(std::move(s)); |
141 } | 147 } |
142 | 148 |
143 void EchoEnumWithTraits(EnumWithTraitsImpl e, | 149 void EchoEnumWithTraits(EnumWithTraitsImpl e, |
144 const EchoEnumWithTraitsCallback& callback) override { | 150 const EchoEnumWithTraitsCallback& callback) override { |
145 callback.Run(e); | 151 callback.Run(e); |
146 } | 152 } |
147 | 153 |
148 void EchoStructWithTraitsForUniquePtrTest( | 154 void EchoStructWithTraitsForUniquePtrTest( |
149 std::unique_ptr<int> e, | 155 std::unique_ptr<int> e, |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 | 273 |
268 TEST_F(StructTraitsTest, CloneStructWithTraitsContainer) { | 274 TEST_F(StructTraitsTest, CloneStructWithTraitsContainer) { |
269 StructWithTraitsContainerPtr container = StructWithTraitsContainer::New(); | 275 StructWithTraitsContainerPtr container = StructWithTraitsContainer::New(); |
270 container->f_struct.set_uint32(7); | 276 container->f_struct.set_uint32(7); |
271 container->f_struct.set_uint64(42); | 277 container->f_struct.set_uint64(42); |
272 StructWithTraitsContainerPtr cloned_container = container.Clone(); | 278 StructWithTraitsContainerPtr cloned_container = container.Clone(); |
273 EXPECT_EQ(7u, cloned_container->f_struct.get_uint32()); | 279 EXPECT_EQ(7u, cloned_container->f_struct.get_uint32()); |
274 EXPECT_EQ(42u, cloned_container->f_struct.get_uint64()); | 280 EXPECT_EQ(42u, cloned_container->f_struct.get_uint64()); |
275 } | 281 } |
276 | 282 |
| 283 void ExpectTrivialStructWithTraits(TrivialStructWithTraitsImpl expected, |
| 284 const base::Closure& closure, |
| 285 TrivialStructWithTraitsImpl passed) { |
| 286 EXPECT_EQ(expected.value, passed.value); |
| 287 closure.Run(); |
| 288 } |
| 289 |
| 290 TEST_F(StructTraitsTest, EchoTrivialStructWithTraits) { |
| 291 TrivialStructWithTraitsImpl input; |
| 292 input.value = 42; |
| 293 |
| 294 base::RunLoop loop; |
| 295 TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| 296 |
| 297 proxy->EchoTrivialStructWithTraits( |
| 298 input, |
| 299 base::Bind(&ExpectTrivialStructWithTraits, input, loop.QuitClosure())); |
| 300 loop.Run(); |
| 301 } |
| 302 |
277 void CaptureMessagePipe(ScopedMessagePipeHandle* storage, | 303 void CaptureMessagePipe(ScopedMessagePipeHandle* storage, |
278 const base::Closure& closure, | 304 const base::Closure& closure, |
279 PassByValueStructWithTraitsImpl passed) { | 305 MoveOnlyStructWithTraitsImpl passed) { |
280 storage->reset(MessagePipeHandle( | 306 storage->reset(MessagePipeHandle( |
281 passed.get_mutable_handle().release().value())); | 307 passed.get_mutable_handle().release().value())); |
282 closure.Run(); | 308 closure.Run(); |
283 } | 309 } |
284 | 310 |
285 TEST_F(StructTraitsTest, EchoPassByValueStructWithTraits) { | 311 TEST_F(StructTraitsTest, EchoMoveOnlyStructWithTraits) { |
286 MessagePipe mp; | 312 MessagePipe mp; |
287 PassByValueStructWithTraitsImpl input; | 313 MoveOnlyStructWithTraitsImpl input; |
288 input.get_mutable_handle().reset(mp.handle0.release()); | 314 input.get_mutable_handle().reset(mp.handle0.release()); |
289 | 315 |
290 base::RunLoop loop; | 316 base::RunLoop loop; |
291 TraitsTestServicePtr proxy = GetTraitsTestProxy(); | 317 TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
292 | 318 |
293 ScopedMessagePipeHandle received; | 319 ScopedMessagePipeHandle received; |
294 proxy->EchoPassByValueStructWithTraits( | 320 proxy->EchoMoveOnlyStructWithTraits( |
295 std::move(input), | 321 std::move(input), |
296 base::Bind(&CaptureMessagePipe, &received, loop.QuitClosure())); | 322 base::Bind(&CaptureMessagePipe, &received, loop.QuitClosure())); |
297 loop.Run(); | 323 loop.Run(); |
298 | 324 |
299 ASSERT_TRUE(received.is_valid()); | 325 ASSERT_TRUE(received.is_valid()); |
300 | 326 |
301 // Verify that the message pipe handle is correctly passed. | 327 // Verify that the message pipe handle is correctly passed. |
302 const char kHello[] = "hello"; | 328 const char kHello[] = "hello"; |
303 const uint32_t kHelloSize = static_cast<uint32_t>(sizeof(kHello)); | 329 const uint32_t kHelloSize = static_cast<uint32_t>(sizeof(kHello)); |
304 EXPECT_EQ(MOJO_RESULT_OK, | 330 EXPECT_EQ(MOJO_RESULT_OK, |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 TraitsTestServicePtr proxy = GetTraitsTestProxy(); | 403 TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
378 | 404 |
379 proxy->EchoStructWithTraitsForUniquePtrTest( | 405 proxy->EchoStructWithTraitsForUniquePtrTest( |
380 base::MakeUnique<int>(12345), | 406 base::MakeUnique<int>(12345), |
381 base::Bind(&ExpectUniquePtr, 12345, loop.QuitClosure())); | 407 base::Bind(&ExpectUniquePtr, 12345, loop.QuitClosure())); |
382 loop.Run(); | 408 loop.Run(); |
383 } | 409 } |
384 | 410 |
385 } // namespace test | 411 } // namespace test |
386 } // namespace mojo | 412 } // namespace mojo |
OLD | NEW |