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

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

Issue 1932083002: Mojo: Use new message APIs to reduce copying (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 7 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "mojo/public/cpp/bindings/lib/connector.h" 5 #include "mojo/public/cpp/bindings/lib/connector.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdlib.h> 8 #include <stdlib.h>
9 #include <string.h> 9 #include <string.h>
10 #include <utility> 10 #include <utility>
(...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 TEST_F(ConnectorTest, PauseWithQueuedMessages) { 520 TEST_F(ConnectorTest, PauseWithQueuedMessages) {
521 internal::Connector connector0(std::move(handle0_), 521 internal::Connector connector0(std::move(handle0_),
522 internal::Connector::SINGLE_THREADED_SEND, 522 internal::Connector::SINGLE_THREADED_SEND,
523 base::ThreadTaskRunnerHandle::Get()); 523 base::ThreadTaskRunnerHandle::Get());
524 internal::Connector connector1(std::move(handle1_), 524 internal::Connector connector1(std::move(handle1_),
525 internal::Connector::SINGLE_THREADED_SEND, 525 internal::Connector::SINGLE_THREADED_SEND,
526 base::ThreadTaskRunnerHandle::Get()); 526 base::ThreadTaskRunnerHandle::Get());
527 527
528 const char kText[] = "hello world"; 528 const char kText[] = "hello world";
529 529
530 // Queue up two messages.
530 Message message; 531 Message message;
531 AllocMessage(kText, &message); 532 AllocMessage(kText, &message);
532
533 // Queue up two messages.
534 connector0.Accept(&message); 533 connector0.Accept(&message);
534 AllocMessage(kText, &message);
535 connector0.Accept(&message); 535 connector0.Accept(&message);
536 536
537 base::RunLoop run_loop; 537 base::RunLoop run_loop;
538 // Configure the accumulator such that it pauses after the first message is 538 // Configure the accumulator such that it pauses after the first message is
539 // received. 539 // received.
540 MessageAccumulator accumulator([&connector1, &run_loop]() { 540 MessageAccumulator accumulator([&connector1, &run_loop]() {
541 connector1.PauseIncomingMethodCallProcessing(); 541 connector1.PauseIncomingMethodCallProcessing();
542 run_loop.Quit(); 542 run_loop.Quit();
543 }); 543 });
544 connector1.set_incoming_receiver(&accumulator); 544 connector1.set_incoming_receiver(&accumulator);
545 545
546 run_loop.Run(); 546 run_loop.Run();
547 547
548 // As we paused after the first message we should only have gotten one 548 // As we paused after the first message we should only have gotten one
549 // message. 549 // message.
550 ASSERT_EQ(1u, accumulator.size()); 550 ASSERT_EQ(1u, accumulator.size());
551 } 551 }
552 552
553 TEST_F(ConnectorTest, ProcessWhenNested) { 553 TEST_F(ConnectorTest, ProcessWhenNested) {
554 internal::Connector connector0(std::move(handle0_), 554 internal::Connector connector0(std::move(handle0_),
555 internal::Connector::SINGLE_THREADED_SEND, 555 internal::Connector::SINGLE_THREADED_SEND,
556 base::ThreadTaskRunnerHandle::Get()); 556 base::ThreadTaskRunnerHandle::Get());
557 internal::Connector connector1(std::move(handle1_), 557 internal::Connector connector1(std::move(handle1_),
558 internal::Connector::SINGLE_THREADED_SEND, 558 internal::Connector::SINGLE_THREADED_SEND,
559 base::ThreadTaskRunnerHandle::Get()); 559 base::ThreadTaskRunnerHandle::Get());
560 560
561 const char kText[] = "hello world"; 561 const char kText[] = "hello world";
562 562
563 // Queue up two messages.
563 Message message; 564 Message message;
564 AllocMessage(kText, &message); 565 AllocMessage(kText, &message);
565
566 // Queue up two messages.
567 connector0.Accept(&message); 566 connector0.Accept(&message);
567 AllocMessage(kText, &message);
568 connector0.Accept(&message); 568 connector0.Accept(&message);
569 569
570 base::RunLoop run_loop; 570 base::RunLoop run_loop;
571 MessageAccumulator accumulator; 571 MessageAccumulator accumulator;
572 // When the accumulator gets the first message it spins a nested message 572 // When the accumulator gets the first message it spins a nested message
573 // loop. The loop is quit when another message is received. 573 // loop. The loop is quit when another message is received.
574 accumulator.set_closure([&accumulator, &connector1, &run_loop]() { 574 accumulator.set_closure([&accumulator, &connector1, &run_loop]() {
575 base::RunLoop nested_run_loop; 575 base::RunLoop nested_run_loop;
576 base::MessageLoop::ScopedNestableTaskAllower allow( 576 base::MessageLoop::ScopedNestableTaskAllower allow(
577 base::MessageLoop::current()); 577 base::MessageLoop::current());
578 accumulator.set_closure([&nested_run_loop]() { nested_run_loop.Quit(); }); 578 accumulator.set_closure([&nested_run_loop]() { nested_run_loop.Quit(); });
579 nested_run_loop.Run(); 579 nested_run_loop.Run();
580 run_loop.Quit(); 580 run_loop.Quit();
581 }); 581 });
582 connector1.set_incoming_receiver(&accumulator); 582 connector1.set_incoming_receiver(&accumulator);
583 583
584 run_loop.Run(); 584 run_loop.Run();
585 585
586 ASSERT_EQ(2u, accumulator.size()); 586 ASSERT_EQ(2u, accumulator.size());
587 } 587 }
588 588
589 } // namespace 589 } // namespace
590 } // namespace test 590 } // namespace test
591 } // namespace mojo 591 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/message.h ('k') | mojo/public/cpp/bindings/tests/validation_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698