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

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

Issue 2326913003: Privatize StrongBinding lifetime management (Closed)
Patch Set: rebase Created 4 years, 3 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 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 871 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 impl.binding()->set_connection_error_handler(base::Bind(&SetBool, &called)); 882 impl.binding()->set_connection_error_handler(base::Bind(&SetBool, &called));
883 ptr.reset(); 883 ptr.reset();
884 EXPECT_FALSE(called); 884 EXPECT_FALSE(called);
885 impl.binding()->FlushForTesting(); 885 impl.binding()->FlushForTesting();
886 EXPECT_TRUE(called); 886 EXPECT_TRUE(called);
887 impl.binding()->FlushForTesting(); 887 impl.binding()->FlushForTesting();
888 } 888 }
889 889
890 TEST_F(AssociatedInterfaceTest, StrongBindingFlushForTesting) { 890 TEST_F(AssociatedInterfaceTest, StrongBindingFlushForTesting) {
891 IntegerSenderConnectionPtr ptr; 891 IntegerSenderConnectionPtr ptr;
892 IntegerSenderConnectionImpl impl(IntegerSenderConnectionRequest{}); 892 auto binding =
893 mojo::StrongBinding<IntegerSenderConnection> binding(&impl, GetProxy(&ptr)); 893 MakeStrongBinding(base::MakeUnique<IntegerSenderConnectionImpl>(
894 binding.set_connection_error_handler(base::Bind(&Fail)); 894 IntegerSenderConnectionRequest{}),
895 GetProxy(&ptr));
895 bool called = false; 896 bool called = false;
896 IntegerSenderAssociatedPtr sender_ptr; 897 IntegerSenderAssociatedPtr sender_ptr;
897 ptr->GetSender(GetProxy(&sender_ptr, ptr.associated_group())); 898 ptr->GetSender(GetProxy(&sender_ptr, ptr.associated_group()));
898 sender_ptr->Echo(1, base::Bind(&SetBoolWithUnusedParameter<int>, &called)); 899 sender_ptr->Echo(1, base::Bind(&SetBoolWithUnusedParameter<int>, &called));
899 EXPECT_FALSE(called); 900 EXPECT_FALSE(called);
900 // Because the flush is sent from the binding, it only guarantees that the 901 // Because the flush is sent from the binding, it only guarantees that the
901 // request has been received, not the response. The second flush waits for the 902 // request has been received, not the response. The second flush waits for the
902 // response to be received. 903 // response to be received.
903 binding.FlushForTesting(); 904 ASSERT_TRUE(binding);
904 binding.FlushForTesting(); 905 binding->FlushForTesting();
906 ASSERT_TRUE(binding);
907 binding->FlushForTesting();
905 EXPECT_TRUE(called); 908 EXPECT_TRUE(called);
906 } 909 }
907 910
908 TEST_F(AssociatedInterfaceTest, StrongBindingFlushForTestingWithClosedPeer) { 911 TEST_F(AssociatedInterfaceTest, StrongBindingFlushForTestingWithClosedPeer) {
909 IntegerSenderConnectionPtr ptr; 912 IntegerSenderConnectionPtr ptr;
910 mojo::StrongBinding<IntegerSenderConnection> binding(
911 new IntegerSenderConnectionImpl(IntegerSenderConnectionRequest{}),
912 GetProxy(&ptr));
913 bool called = false; 913 bool called = false;
914 binding.set_connection_error_handler(base::Bind(&SetBool, &called)); 914 auto binding =
915 MakeStrongBinding(base::MakeUnique<IntegerSenderConnectionImpl>(
916 IntegerSenderConnectionRequest{}),
917 GetProxy(&ptr));
918 binding->set_connection_error_handler(base::Bind(&SetBool, &called));
915 ptr.reset(); 919 ptr.reset();
916 EXPECT_FALSE(called); 920 EXPECT_FALSE(called);
917 binding.FlushForTesting(); 921 ASSERT_TRUE(binding);
922 binding->FlushForTesting();
918 EXPECT_TRUE(called); 923 EXPECT_TRUE(called);
919 binding.FlushForTesting(); 924 ASSERT_FALSE(binding);
920 } 925 }
921 926
922 TEST_F(AssociatedInterfaceTest, PtrFlushForTesting) { 927 TEST_F(AssociatedInterfaceTest, PtrFlushForTesting) {
923 IntegerSenderConnectionPtr ptr; 928 IntegerSenderConnectionPtr ptr;
924 IntegerSenderConnectionImpl impl(GetProxy(&ptr)); 929 IntegerSenderConnectionImpl impl(GetProxy(&ptr));
925 bool called = false; 930 bool called = false;
926 ptr.set_connection_error_handler(base::Bind(&Fail)); 931 ptr.set_connection_error_handler(base::Bind(&Fail));
927 ptr->AsyncGetSender(base::Bind( 932 ptr->AsyncGetSender(base::Bind(
928 &SetBoolWithUnusedParameter<IntegerSenderAssociatedPtrInfo>, &called)); 933 &SetBoolWithUnusedParameter<IntegerSenderAssociatedPtrInfo>, &called));
929 EXPECT_FALSE(called); 934 EXPECT_FALSE(called);
930 ptr.FlushForTesting(); 935 ptr.FlushForTesting();
931 EXPECT_TRUE(called); 936 EXPECT_TRUE(called);
932 } 937 }
933 938
934 TEST_F(AssociatedInterfaceTest, PtrFlushForTestingWithClosedPeer) { 939 TEST_F(AssociatedInterfaceTest, PtrFlushForTestingWithClosedPeer) {
935 IntegerSenderConnectionPtr ptr; 940 IntegerSenderConnectionPtr ptr;
936 GetProxy(&ptr); 941 GetProxy(&ptr);
937 bool called = false; 942 bool called = false;
938 ptr.set_connection_error_handler(base::Bind(&SetBool, &called)); 943 ptr.set_connection_error_handler(base::Bind(&SetBool, &called));
939 EXPECT_FALSE(called); 944 EXPECT_FALSE(called);
940 ptr.FlushForTesting(); 945 ptr.FlushForTesting();
941 EXPECT_TRUE(called); 946 EXPECT_TRUE(called);
942 ptr.FlushForTesting(); 947 ptr.FlushForTesting();
943 } 948 }
944 949
945 } // namespace 950 } // namespace
946 } // namespace test 951 } // namespace test
947 } // namespace mojo 952 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/public/cpp/bindings/strong_binding.h ('k') | mojo/public/cpp/bindings/tests/binding_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698