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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 const EchoTrivialStructWithTraitsCallback& callback) override { | 139 const EchoTrivialStructWithTraitsCallback& callback) override { |
140 callback.Run(s); | 140 callback.Run(s); |
141 } | 141 } |
142 | 142 |
143 void EchoMoveOnlyStructWithTraits( | 143 void EchoMoveOnlyStructWithTraits( |
144 MoveOnlyStructWithTraitsImpl s, | 144 MoveOnlyStructWithTraitsImpl s, |
145 const EchoMoveOnlyStructWithTraitsCallback& callback) override { | 145 const EchoMoveOnlyStructWithTraitsCallback& callback) override { |
146 callback.Run(std::move(s)); | 146 callback.Run(std::move(s)); |
147 } | 147 } |
148 | 148 |
| 149 void EchoNullableMoveOnlyStructWithTraits( |
| 150 base::Optional<MoveOnlyStructWithTraitsImpl> s, |
| 151 const EchoNullableMoveOnlyStructWithTraitsCallback& callback) override { |
| 152 callback.Run(std::move(s)); |
| 153 } |
| 154 |
149 void EchoEnumWithTraits(EnumWithTraitsImpl e, | 155 void EchoEnumWithTraits(EnumWithTraitsImpl e, |
150 const EchoEnumWithTraitsCallback& callback) override { | 156 const EchoEnumWithTraitsCallback& callback) override { |
151 callback.Run(e); | 157 callback.Run(e); |
152 } | 158 } |
153 | 159 |
154 void EchoStructWithTraitsForUniquePtrTest( | 160 void EchoStructWithTraitsForUniquePtr( |
155 std::unique_ptr<int> e, | 161 std::unique_ptr<int> e, |
156 const EchoStructWithTraitsForUniquePtrTestCallback& callback) override { | 162 const EchoStructWithTraitsForUniquePtrCallback& callback) override { |
157 callback.Run(std::move(e)); | 163 callback.Run(std::move(e)); |
158 } | 164 } |
159 | 165 |
| 166 void EchoNullableStructWithTraitsForUniquePtr( |
| 167 std::unique_ptr<int> e, |
| 168 const EchoNullableStructWithTraitsForUniquePtrCallback& callback) |
| 169 override { |
| 170 callback.Run(std::move(e)); |
| 171 } |
| 172 |
160 base::MessageLoop loop_; | 173 base::MessageLoop loop_; |
161 | 174 |
162 ChromiumRectServiceImpl chromium_service_; | 175 ChromiumRectServiceImpl chromium_service_; |
163 BindingSet<RectService> chromium_bindings_; | 176 BindingSet<RectService> chromium_bindings_; |
164 | 177 |
165 BlinkRectServiceImpl blink_service_; | 178 BlinkRectServiceImpl blink_service_; |
166 BindingSet<blink::RectService> blink_bindings_; | 179 BindingSet<blink::RectService> blink_bindings_; |
167 | 180 |
168 BindingSet<TraitsTestService> traits_test_bindings_; | 181 BindingSet<TraitsTestService> traits_test_bindings_; |
169 }; | 182 }; |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 | 349 |
337 char buffer[10] = {0}; | 350 char buffer[10] = {0}; |
338 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer)); | 351 uint32_t buffer_size = static_cast<uint32_t>(sizeof(buffer)); |
339 EXPECT_EQ(MOJO_RESULT_OK, | 352 EXPECT_EQ(MOJO_RESULT_OK, |
340 ReadMessageRaw(received.get(), buffer, &buffer_size, nullptr, | 353 ReadMessageRaw(received.get(), buffer, &buffer_size, nullptr, |
341 nullptr, MOJO_READ_MESSAGE_FLAG_NONE)); | 354 nullptr, MOJO_READ_MESSAGE_FLAG_NONE)); |
342 EXPECT_EQ(kHelloSize, buffer_size); | 355 EXPECT_EQ(kHelloSize, buffer_size); |
343 EXPECT_STREQ(kHello, buffer); | 356 EXPECT_STREQ(kHello, buffer); |
344 } | 357 } |
345 | 358 |
| 359 void CaptureNullableMoveOnlyStructWithTraitsImpl( |
| 360 base::Optional<MoveOnlyStructWithTraitsImpl>* storage, |
| 361 const base::Closure& closure, |
| 362 base::Optional<MoveOnlyStructWithTraitsImpl> passed) { |
| 363 *storage = std::move(passed); |
| 364 closure.Run(); |
| 365 } |
| 366 |
| 367 TEST_F(StructTraitsTest, EchoNullableMoveOnlyStructWithTraits) { |
| 368 base::RunLoop loop; |
| 369 TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
| 370 |
| 371 base::Optional<MoveOnlyStructWithTraitsImpl> received; |
| 372 proxy->EchoNullableMoveOnlyStructWithTraits( |
| 373 base::nullopt, base::Bind(&CaptureNullableMoveOnlyStructWithTraitsImpl, |
| 374 &received, loop.QuitClosure())); |
| 375 loop.Run(); |
| 376 |
| 377 EXPECT_FALSE(received); |
| 378 } |
| 379 |
346 void ExpectEnumWithTraits(EnumWithTraitsImpl expected_value, | 380 void ExpectEnumWithTraits(EnumWithTraitsImpl expected_value, |
347 const base::Closure& closure, | 381 const base::Closure& closure, |
348 EnumWithTraitsImpl value) { | 382 EnumWithTraitsImpl value) { |
349 EXPECT_EQ(expected_value, value); | 383 EXPECT_EQ(expected_value, value); |
350 closure.Run(); | 384 closure.Run(); |
351 } | 385 } |
352 | 386 |
353 TEST_F(StructTraitsTest, EchoEnumWithTraits) { | 387 TEST_F(StructTraitsTest, EchoEnumWithTraits) { |
354 base::RunLoop loop; | 388 base::RunLoop loop; |
355 TraitsTestServicePtr proxy = GetTraitsTestProxy(); | 389 TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
(...skipping 28 matching lines...) Expand all Loading... |
384 EXPECT_EQ(input.get_bool(), output.get_bool()); | 418 EXPECT_EQ(input.get_bool(), output.get_bool()); |
385 EXPECT_EQ(input.get_uint32(), output.get_uint32()); | 419 EXPECT_EQ(input.get_uint32(), output.get_uint32()); |
386 EXPECT_EQ(input.get_uint64(), output.get_uint64()); | 420 EXPECT_EQ(input.get_uint64(), output.get_uint64()); |
387 EXPECT_EQ(input.get_string(), output.get_string()); | 421 EXPECT_EQ(input.get_string(), output.get_string()); |
388 EXPECT_EQ(input.get_string_array(), output.get_string_array()); | 422 EXPECT_EQ(input.get_string_array(), output.get_string_array()); |
389 EXPECT_EQ(input.get_struct(), output.get_struct()); | 423 EXPECT_EQ(input.get_struct(), output.get_struct()); |
390 EXPECT_EQ(input.get_struct_array(), output.get_struct_array()); | 424 EXPECT_EQ(input.get_struct_array(), output.get_struct_array()); |
391 EXPECT_EQ(input.get_struct_map(), output.get_struct_map()); | 425 EXPECT_EQ(input.get_struct_map(), output.get_struct_map()); |
392 } | 426 } |
393 | 427 |
394 void ExpectUniquePtr(int expected, | 428 void ExpectUniquePtr(std::unique_ptr<int> expected, |
395 const base::Closure& closure, | 429 const base::Closure& closure, |
396 std::unique_ptr<int> value) { | 430 std::unique_ptr<int> value) { |
397 EXPECT_EQ(expected, *value); | 431 ASSERT_EQ(!expected, !value); |
| 432 if (expected) |
| 433 EXPECT_EQ(*expected, *value); |
398 closure.Run(); | 434 closure.Run(); |
399 } | 435 } |
400 | 436 |
401 TEST_F(StructTraitsTest, TypemapUniquePtr) { | 437 TEST_F(StructTraitsTest, TypemapUniquePtr) { |
402 base::RunLoop loop; | |
403 TraitsTestServicePtr proxy = GetTraitsTestProxy(); | 438 TraitsTestServicePtr proxy = GetTraitsTestProxy(); |
404 | 439 |
405 proxy->EchoStructWithTraitsForUniquePtrTest( | 440 { |
406 base::MakeUnique<int>(12345), | 441 base::RunLoop loop; |
407 base::Bind(&ExpectUniquePtr, 12345, loop.QuitClosure())); | 442 proxy->EchoStructWithTraitsForUniquePtr( |
408 loop.Run(); | 443 base::MakeUnique<int>(12345), |
| 444 base::Bind(&ExpectUniquePtr, base::Passed(base::MakeUnique<int>(12345)), |
| 445 loop.QuitClosure())); |
| 446 loop.Run(); |
| 447 } |
| 448 { |
| 449 base::RunLoop loop; |
| 450 proxy->EchoNullableStructWithTraitsForUniquePtr( |
| 451 nullptr, base::Bind(&ExpectUniquePtr, nullptr, loop.QuitClosure())); |
| 452 loop.Run(); |
| 453 } |
409 } | 454 } |
410 | 455 |
411 } // namespace test | 456 } // namespace test |
412 } // namespace mojo | 457 } // namespace mojo |
OLD | NEW |