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

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

Issue 2589663003: mojo:: Rename mojo::GetProxy() to mojo::MakeRequest() (Closed)
Patch Set: Rebase Created 4 years 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 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 545
546 void CaptureSenderPtrInfo(IntegerSenderAssociatedPtr* storage, 546 void CaptureSenderPtrInfo(IntegerSenderAssociatedPtr* storage,
547 const base::Closure& closure, 547 const base::Closure& closure,
548 IntegerSenderAssociatedPtrInfo info) { 548 IntegerSenderAssociatedPtrInfo info) {
549 storage->Bind(std::move(info)); 549 storage->Bind(std::move(info));
550 closure.Run(); 550 closure.Run();
551 } 551 }
552 552
553 TEST_F(AssociatedInterfaceTest, PassAssociatedInterfaces) { 553 TEST_F(AssociatedInterfaceTest, PassAssociatedInterfaces) {
554 IntegerSenderConnectionPtr connection_ptr; 554 IntegerSenderConnectionPtr connection_ptr;
555 IntegerSenderConnectionImpl connection(GetProxy(&connection_ptr)); 555 IntegerSenderConnectionImpl connection(MakeRequest(&connection_ptr));
556 556
557 IntegerSenderAssociatedPtr sender0; 557 IntegerSenderAssociatedPtr sender0;
558 connection_ptr->GetSender( 558 connection_ptr->GetSender(
559 GetProxy(&sender0, connection_ptr.associated_group())); 559 MakeRequest(&sender0, connection_ptr.associated_group()));
560 560
561 int32_t echoed_value = 0; 561 int32_t echoed_value = 0;
562 base::RunLoop run_loop; 562 base::RunLoop run_loop;
563 sender0->Echo(123, base::Bind(&CaptureInt32, &echoed_value, 563 sender0->Echo(123, base::Bind(&CaptureInt32, &echoed_value,
564 run_loop.QuitClosure())); 564 run_loop.QuitClosure()));
565 run_loop.Run(); 565 run_loop.Run();
566 EXPECT_EQ(123, echoed_value); 566 EXPECT_EQ(123, echoed_value);
567 567
568 IntegerSenderAssociatedPtr sender1; 568 IntegerSenderAssociatedPtr sender1;
569 base::RunLoop run_loop2; 569 base::RunLoop run_loop2;
570 connection_ptr->AsyncGetSender( 570 connection_ptr->AsyncGetSender(
571 base::Bind(&CaptureSenderPtrInfo, &sender1, run_loop2.QuitClosure())); 571 base::Bind(&CaptureSenderPtrInfo, &sender1, run_loop2.QuitClosure()));
572 run_loop2.Run(); 572 run_loop2.Run();
573 EXPECT_TRUE(sender1); 573 EXPECT_TRUE(sender1);
574 574
575 base::RunLoop run_loop3; 575 base::RunLoop run_loop3;
576 sender1->Echo(456, base::Bind(&CaptureInt32, &echoed_value, 576 sender1->Echo(456, base::Bind(&CaptureInt32, &echoed_value,
577 run_loop3.QuitClosure())); 577 run_loop3.QuitClosure()));
578 run_loop3.Run(); 578 run_loop3.Run();
579 EXPECT_EQ(456, echoed_value); 579 EXPECT_EQ(456, echoed_value);
580 } 580 }
581 581
582 TEST_F(AssociatedInterfaceTest, BindingWaitAndPauseWhenNoAssociatedInterfaces) { 582 TEST_F(AssociatedInterfaceTest, BindingWaitAndPauseWhenNoAssociatedInterfaces) {
583 IntegerSenderConnectionPtr connection_ptr; 583 IntegerSenderConnectionPtr connection_ptr;
584 IntegerSenderConnectionImpl connection(GetProxy(&connection_ptr)); 584 IntegerSenderConnectionImpl connection(MakeRequest(&connection_ptr));
585 585
586 IntegerSenderAssociatedPtr sender0; 586 IntegerSenderAssociatedPtr sender0;
587 connection_ptr->GetSender( 587 connection_ptr->GetSender(
588 GetProxy(&sender0, connection_ptr.associated_group())); 588 MakeRequest(&sender0, connection_ptr.associated_group()));
589 589
590 EXPECT_FALSE(connection.binding()->HasAssociatedInterfaces()); 590 EXPECT_FALSE(connection.binding()->HasAssociatedInterfaces());
591 // There are no associated interfaces running on the pipe yet. It is okay to 591 // There are no associated interfaces running on the pipe yet. It is okay to
592 // pause. 592 // pause.
593 connection.binding()->PauseIncomingMethodCallProcessing(); 593 connection.binding()->PauseIncomingMethodCallProcessing();
594 connection.binding()->ResumeIncomingMethodCallProcessing(); 594 connection.binding()->ResumeIncomingMethodCallProcessing();
595 595
596 // There are no associated interfaces running on the pipe yet. It is okay to 596 // There are no associated interfaces running on the pipe yet. It is okay to
597 // wait. 597 // wait.
598 EXPECT_TRUE(connection.binding()->WaitForIncomingMethodCall()); 598 EXPECT_TRUE(connection.binding()->WaitForIncomingMethodCall());
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 683
684 private: 684 private:
685 const base::Closure callback_; 685 const base::Closure callback_;
686 }; 686 };
687 687
688 // Verifies that filters work as expected on associated bindings, i.e. that 688 // Verifies that filters work as expected on associated bindings, i.e. that
689 // they're notified in order, before dispatch; and that each associated 689 // they're notified in order, before dispatch; and that each associated
690 // binding in a group operates with its own set of filters. 690 // binding in a group operates with its own set of filters.
691 TEST_F(AssociatedInterfaceTest, BindingWithFilters) { 691 TEST_F(AssociatedInterfaceTest, BindingWithFilters) {
692 AssociatedPingProviderPtr provider; 692 AssociatedPingProviderPtr provider;
693 PingProviderImpl provider_impl(GetProxy(&provider)); 693 PingProviderImpl provider_impl(MakeRequest(&provider));
694 694
695 PingServiceAssociatedPtr ping_a, ping_b; 695 PingServiceAssociatedPtr ping_a, ping_b;
696 provider->GetPing(GetProxy(&ping_a, provider.associated_group())); 696 provider->GetPing(MakeRequest(&ping_a, provider.associated_group()));
697 provider->GetPing(GetProxy(&ping_b, provider.associated_group())); 697 provider->GetPing(MakeRequest(&ping_b, provider.associated_group()));
698 provider_impl.WaitForBindings(2); 698 provider_impl.WaitForBindings(2);
699 699
700 ASSERT_EQ(2u, provider_impl.ping_services().size()); 700 ASSERT_EQ(2u, provider_impl.ping_services().size());
701 PingServiceImpl& ping_a_impl = *provider_impl.ping_services()[0]; 701 PingServiceImpl& ping_a_impl = *provider_impl.ping_services()[0];
702 PingServiceImpl& ping_b_impl = *provider_impl.ping_services()[1]; 702 PingServiceImpl& ping_b_impl = *provider_impl.ping_services()[1];
703 703
704 int a_status, b_status; 704 int a_status, b_status;
705 auto handler_helper = [] (int* a_status, int* b_status, int expected_a_status, 705 auto handler_helper = [] (int* a_status, int* b_status, int expected_a_status,
706 int new_a_status, int expected_b_status, 706 int new_a_status, int expected_b_status,
707 int new_b_status) { 707 int new_b_status) {
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
831 IntegerSenderImpl impl(std::move(request)); 831 IntegerSenderImpl impl(std::move(request));
832 bool called = false; 832 bool called = false;
833 impl.set_connection_error_handler(base::Bind(&SetBool, &called)); 833 impl.set_connection_error_handler(base::Bind(&SetBool, &called));
834 impl.binding()->FlushForTesting(); 834 impl.binding()->FlushForTesting();
835 EXPECT_TRUE(called); 835 EXPECT_TRUE(called);
836 impl.binding()->FlushForTesting(); 836 impl.binding()->FlushForTesting();
837 } 837 }
838 838
839 TEST_F(AssociatedInterfaceTest, BindingFlushForTesting) { 839 TEST_F(AssociatedInterfaceTest, BindingFlushForTesting) {
840 IntegerSenderConnectionPtr ptr; 840 IntegerSenderConnectionPtr ptr;
841 IntegerSenderConnectionImpl impl(GetProxy(&ptr)); 841 IntegerSenderConnectionImpl impl(MakeRequest(&ptr));
842 bool called = false; 842 bool called = false;
843 ptr->AsyncGetSender(base::Bind( 843 ptr->AsyncGetSender(base::Bind(
844 &SetBoolWithUnusedParameter<IntegerSenderAssociatedPtrInfo>, &called)); 844 &SetBoolWithUnusedParameter<IntegerSenderAssociatedPtrInfo>, &called));
845 EXPECT_FALSE(called); 845 EXPECT_FALSE(called);
846 impl.binding()->set_connection_error_handler(base::Bind(&Fail)); 846 impl.binding()->set_connection_error_handler(base::Bind(&Fail));
847 // Because the flush is sent from the binding, it only guarantees that the 847 // Because the flush is sent from the binding, it only guarantees that the
848 // request has been received, not the response. The second flush waits for the 848 // request has been received, not the response. The second flush waits for the
849 // response to be received. 849 // response to be received.
850 impl.binding()->FlushForTesting(); 850 impl.binding()->FlushForTesting();
851 impl.binding()->FlushForTesting(); 851 impl.binding()->FlushForTesting();
852 EXPECT_TRUE(called); 852 EXPECT_TRUE(called);
853 } 853 }
854 854
855 TEST_F(AssociatedInterfaceTest, BindingFlushForTestingWithClosedPeer) { 855 TEST_F(AssociatedInterfaceTest, BindingFlushForTestingWithClosedPeer) {
856 IntegerSenderConnectionPtr ptr; 856 IntegerSenderConnectionPtr ptr;
857 IntegerSenderConnectionImpl impl(GetProxy(&ptr)); 857 IntegerSenderConnectionImpl impl(MakeRequest(&ptr));
858 bool called = false; 858 bool called = false;
859 impl.binding()->set_connection_error_handler(base::Bind(&SetBool, &called)); 859 impl.binding()->set_connection_error_handler(base::Bind(&SetBool, &called));
860 ptr.reset(); 860 ptr.reset();
861 EXPECT_FALSE(called); 861 EXPECT_FALSE(called);
862 impl.binding()->FlushForTesting(); 862 impl.binding()->FlushForTesting();
863 EXPECT_TRUE(called); 863 EXPECT_TRUE(called);
864 impl.binding()->FlushForTesting(); 864 impl.binding()->FlushForTesting();
865 } 865 }
866 866
867 TEST_F(AssociatedInterfaceTest, StrongBindingFlushForTesting) { 867 TEST_F(AssociatedInterfaceTest, StrongBindingFlushForTesting) {
868 IntegerSenderConnectionPtr ptr; 868 IntegerSenderConnectionPtr ptr;
869 auto binding = 869 auto binding =
870 MakeStrongBinding(base::MakeUnique<IntegerSenderConnectionImpl>( 870 MakeStrongBinding(base::MakeUnique<IntegerSenderConnectionImpl>(
871 IntegerSenderConnectionRequest{}), 871 IntegerSenderConnectionRequest{}),
872 GetProxy(&ptr)); 872 MakeRequest(&ptr));
873 bool called = false; 873 bool called = false;
874 IntegerSenderAssociatedPtr sender_ptr; 874 IntegerSenderAssociatedPtr sender_ptr;
875 ptr->GetSender(GetProxy(&sender_ptr, ptr.associated_group())); 875 ptr->GetSender(MakeRequest(&sender_ptr, ptr.associated_group()));
876 sender_ptr->Echo(1, base::Bind(&SetBoolWithUnusedParameter<int>, &called)); 876 sender_ptr->Echo(1, base::Bind(&SetBoolWithUnusedParameter<int>, &called));
877 EXPECT_FALSE(called); 877 EXPECT_FALSE(called);
878 // Because the flush is sent from the binding, it only guarantees that the 878 // Because the flush is sent from the binding, it only guarantees that the
879 // request has been received, not the response. The second flush waits for the 879 // request has been received, not the response. The second flush waits for the
880 // response to be received. 880 // response to be received.
881 ASSERT_TRUE(binding); 881 ASSERT_TRUE(binding);
882 binding->FlushForTesting(); 882 binding->FlushForTesting();
883 ASSERT_TRUE(binding); 883 ASSERT_TRUE(binding);
884 binding->FlushForTesting(); 884 binding->FlushForTesting();
885 EXPECT_TRUE(called); 885 EXPECT_TRUE(called);
886 } 886 }
887 887
888 TEST_F(AssociatedInterfaceTest, StrongBindingFlushForTestingWithClosedPeer) { 888 TEST_F(AssociatedInterfaceTest, StrongBindingFlushForTestingWithClosedPeer) {
889 IntegerSenderConnectionPtr ptr; 889 IntegerSenderConnectionPtr ptr;
890 bool called = false; 890 bool called = false;
891 auto binding = 891 auto binding =
892 MakeStrongBinding(base::MakeUnique<IntegerSenderConnectionImpl>( 892 MakeStrongBinding(base::MakeUnique<IntegerSenderConnectionImpl>(
893 IntegerSenderConnectionRequest{}), 893 IntegerSenderConnectionRequest{}),
894 GetProxy(&ptr)); 894 MakeRequest(&ptr));
895 binding->set_connection_error_handler(base::Bind(&SetBool, &called)); 895 binding->set_connection_error_handler(base::Bind(&SetBool, &called));
896 ptr.reset(); 896 ptr.reset();
897 EXPECT_FALSE(called); 897 EXPECT_FALSE(called);
898 ASSERT_TRUE(binding); 898 ASSERT_TRUE(binding);
899 binding->FlushForTesting(); 899 binding->FlushForTesting();
900 EXPECT_TRUE(called); 900 EXPECT_TRUE(called);
901 ASSERT_FALSE(binding); 901 ASSERT_FALSE(binding);
902 } 902 }
903 903
904 TEST_F(AssociatedInterfaceTest, PtrFlushForTesting) { 904 TEST_F(AssociatedInterfaceTest, PtrFlushForTesting) {
905 IntegerSenderConnectionPtr ptr; 905 IntegerSenderConnectionPtr ptr;
906 IntegerSenderConnectionImpl impl(GetProxy(&ptr)); 906 IntegerSenderConnectionImpl impl(MakeRequest(&ptr));
907 bool called = false; 907 bool called = false;
908 ptr.set_connection_error_handler(base::Bind(&Fail)); 908 ptr.set_connection_error_handler(base::Bind(&Fail));
909 ptr->AsyncGetSender(base::Bind( 909 ptr->AsyncGetSender(base::Bind(
910 &SetBoolWithUnusedParameter<IntegerSenderAssociatedPtrInfo>, &called)); 910 &SetBoolWithUnusedParameter<IntegerSenderAssociatedPtrInfo>, &called));
911 EXPECT_FALSE(called); 911 EXPECT_FALSE(called);
912 ptr.FlushForTesting(); 912 ptr.FlushForTesting();
913 EXPECT_TRUE(called); 913 EXPECT_TRUE(called);
914 } 914 }
915 915
916 TEST_F(AssociatedInterfaceTest, PtrFlushForTestingWithClosedPeer) { 916 TEST_F(AssociatedInterfaceTest, PtrFlushForTestingWithClosedPeer) {
917 IntegerSenderConnectionPtr ptr; 917 IntegerSenderConnectionPtr ptr;
918 GetProxy(&ptr); 918 MakeRequest(&ptr);
919 bool called = false; 919 bool called = false;
920 ptr.set_connection_error_handler(base::Bind(&SetBool, &called)); 920 ptr.set_connection_error_handler(base::Bind(&SetBool, &called));
921 EXPECT_FALSE(called); 921 EXPECT_FALSE(called);
922 ptr.FlushForTesting(); 922 ptr.FlushForTesting();
923 EXPECT_TRUE(called); 923 EXPECT_TRUE(called);
924 ptr.FlushForTesting(); 924 ptr.FlushForTesting();
925 } 925 }
926 926
927 TEST_F(AssociatedInterfaceTest, AssociatedBindingConnectionErrorWithReason) { 927 TEST_F(AssociatedInterfaceTest, AssociatedBindingConnectionErrorWithReason) {
928 AssociatedInterfaceRequest<IntegerSender> request; 928 AssociatedInterfaceRequest<IntegerSender> request;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 }, 990 },
991 run_loop.QuitClosure())); 991 run_loop.QuitClosure()));
992 992
993 request.ResetWithReason(789u, "long time no see"); 993 request.ResetWithReason(789u, "long time no see");
994 994
995 run_loop.Run(); 995 run_loop.Run();
996 } 996 }
997 997
998 TEST_F(AssociatedInterfaceTest, ThreadSafeAssociatedInterfacePtr) { 998 TEST_F(AssociatedInterfaceTest, ThreadSafeAssociatedInterfacePtr) {
999 IntegerSenderConnectionPtr connection_ptr; 999 IntegerSenderConnectionPtr connection_ptr;
1000 IntegerSenderConnectionImpl connection(GetProxy(&connection_ptr)); 1000 IntegerSenderConnectionImpl connection(MakeRequest(&connection_ptr));
1001 1001
1002 IntegerSenderAssociatedPtr sender; 1002 IntegerSenderAssociatedPtr sender;
1003 connection_ptr->GetSender( 1003 connection_ptr->GetSender(
1004 GetProxy(&sender, connection_ptr.associated_group())); 1004 MakeRequest(&sender, connection_ptr.associated_group()));
1005 1005
1006 scoped_refptr<ThreadSafeIntegerSenderAssociatedPtr> thread_safe_sender = 1006 scoped_refptr<ThreadSafeIntegerSenderAssociatedPtr> thread_safe_sender =
1007 ThreadSafeIntegerSenderAssociatedPtr::Create(std::move(sender)); 1007 ThreadSafeIntegerSenderAssociatedPtr::Create(std::move(sender));
1008 1008
1009 { 1009 {
1010 // Test the thread safe pointer can be used from the interface ptr thread. 1010 // Test the thread safe pointer can be used from the interface ptr thread.
1011 int32_t echoed_value = 0; 1011 int32_t echoed_value = 0;
1012 base::RunLoop run_loop; 1012 base::RunLoop run_loop;
1013 (*thread_safe_sender) 1013 (*thread_safe_sender)
1014 ->Echo(123, base::Bind(&CaptureInt32, &echoed_value, 1014 ->Echo(123, base::Bind(&CaptureInt32, &echoed_value,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1070 base::RunLoop run_loop; 1070 base::RunLoop run_loop;
1071 auto run_method = base::Bind( 1071 auto run_method = base::Bind(
1072 [](const scoped_refptr<base::TaskRunner>& main_task_runner, 1072 [](const scoped_refptr<base::TaskRunner>& main_task_runner,
1073 const base::Closure& quit_closure, 1073 const base::Closure& quit_closure,
1074 const scoped_refptr<ThreadSafeIntegerSenderAssociatedPtr>& 1074 const scoped_refptr<ThreadSafeIntegerSenderAssociatedPtr>&
1075 thread_safe_ptr, 1075 thread_safe_ptr,
1076 ForwarderTestContext* context) { 1076 ForwarderTestContext* context) {
1077 // We are on the background thread, create the interface ptr. 1077 // We are on the background thread, create the interface ptr.
1078 context->interface_impl = 1078 context->interface_impl =
1079 base::MakeUnique<IntegerSenderConnectionImpl>( 1079 base::MakeUnique<IntegerSenderConnectionImpl>(
1080 GetProxy(&(context->connection_ptr))); 1080 MakeRequest(&(context->connection_ptr)));
1081 IntegerSenderAssociatedPtr sender; 1081 IntegerSenderAssociatedPtr sender;
1082 context->connection_ptr->GetSender( 1082 context->connection_ptr->GetSender(
1083 GetProxy(&sender, context->connection_ptr.associated_group())); 1083 MakeRequest(&sender, context->connection_ptr.associated_group()));
1084 thread_safe_ptr->Bind(std::move(sender)); 1084 thread_safe_ptr->Bind(std::move(sender));
1085 main_task_runner->PostTask(FROM_HERE, quit_closure); 1085 main_task_runner->PostTask(FROM_HERE, quit_closure);
1086 }, 1086 },
1087 base::SequencedTaskRunnerHandle::Get(), run_loop.QuitClosure(), 1087 base::SequencedTaskRunnerHandle::Get(), run_loop.QuitClosure(),
1088 thread_safe_ptr, context); 1088 thread_safe_ptr, context);
1089 1089
1090 other_thread_task_runner->PostTask(FROM_HERE, run_method); 1090 other_thread_task_runner->PostTask(FROM_HERE, run_method);
1091 // Block until the associated pointer is bound. 1091 // Block until the associated pointer is bound.
1092 run_loop.Run(); 1092 run_loop.Run();
1093 } 1093 }
(...skipping 15 matching lines...) Expand all
1109 other_thread_task_runner->DeleteSoon(FROM_HERE, context); 1109 other_thread_task_runner->DeleteSoon(FROM_HERE, context);
1110 1110
1111 // Reset the pointer now so the InterfacePtr associated resources can be 1111 // Reset the pointer now so the InterfacePtr associated resources can be
1112 // deleted before the background thread's message loop is invalidated. 1112 // deleted before the background thread's message loop is invalidated.
1113 thread_safe_ptr = nullptr; 1113 thread_safe_ptr = nullptr;
1114 } 1114 }
1115 1115
1116 } // namespace 1116 } // namespace
1117 } // namespace test 1117 } // namespace test
1118 } // namespace mojo 1118 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/interface_request.h ('k') | mojo/public/cpp/bindings/tests/bind_task_runner_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698