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 "net/proxy/mojo_proxy_resolver_factory_impl.h" | 5 #include "net/proxy/mojo_proxy_resolver_factory_impl.h" |
6 | 6 |
7 #include "net/proxy/mock_proxy_resolver.h" | 7 #include "net/proxy/mock_proxy_resolver.h" |
| 8 #include "net/proxy/proxy_resolver_error_observer.h" |
8 #include "net/test/event_waiter.h" | 9 #include "net/test/event_waiter.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
10 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" | 11 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" |
11 #include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h" | 12 #include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h" |
12 | 13 |
13 namespace net { | 14 namespace net { |
14 namespace { | 15 namespace { |
15 | 16 |
16 class FakeProxyResolver : public MockAsyncProxyResolverExpectsBytes { | 17 class FakeProxyResolver : public MockAsyncProxyResolverExpectsBytes { |
17 public: | 18 public: |
(...skipping 22 matching lines...) Expand all Loading... |
40 new MojoProxyResolverFactoryImpl( | 41 new MojoProxyResolverFactoryImpl( |
41 base::Bind(&MojoProxyResolverFactoryImplTest::CreateFakeProxyResolver, | 42 base::Bind(&MojoProxyResolverFactoryImplTest::CreateFakeProxyResolver, |
42 base::Unretained(this)), | 43 base::Unretained(this)), |
43 mojo::GetProxy(&factory_)); | 44 mojo::GetProxy(&factory_)); |
44 } | 45 } |
45 | 46 |
46 void OnConnectionError() override { waiter_.NotifyEvent(CONNECTION_ERROR); } | 47 void OnConnectionError() override { waiter_.NotifyEvent(CONNECTION_ERROR); } |
47 | 48 |
48 scoped_ptr<ProxyResolver> CreateFakeProxyResolver( | 49 scoped_ptr<ProxyResolver> CreateFakeProxyResolver( |
49 HostResolver* host_resolver, | 50 HostResolver* host_resolver, |
| 51 scoped_ptr<ProxyResolverErrorObserver> error_observer, |
50 const ProxyResolver::LoadStateChangedCallback& callback) { | 52 const ProxyResolver::LoadStateChangedCallback& callback) { |
51 EXPECT_TRUE(host_resolver); | 53 EXPECT_TRUE(host_resolver); |
| 54 EXPECT_TRUE(error_observer); |
52 instances_created_++; | 55 instances_created_++; |
53 waiter_.NotifyEvent(RESOLVER_CREATED); | 56 waiter_.NotifyEvent(RESOLVER_CREATED); |
54 return make_scoped_ptr(new FakeProxyResolver(base::Bind( | 57 return make_scoped_ptr(new FakeProxyResolver(base::Bind( |
55 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, | 58 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, |
56 base::Unretained(this)))); | 59 base::Unretained(this)))); |
57 } | 60 } |
58 | 61 |
59 void OnFakeProxyInstanceDestroyed() { | 62 void OnFakeProxyInstanceDestroyed() { |
60 instances_destroyed_++; | 63 instances_destroyed_++; |
61 waiter_.NotifyEvent(RESOLVER_DESTROYED); | 64 waiter_.NotifyEvent(RESOLVER_DESTROYED); |
62 } | 65 } |
63 | 66 |
64 interfaces::ProxyResolverFactoryPtr factory_; | 67 interfaces::ProxyResolverFactoryPtr factory_; |
65 | 68 |
66 int instances_created_ = 0; | 69 int instances_created_ = 0; |
67 int instances_destroyed_ = 0; | 70 int instances_destroyed_ = 0; |
68 | 71 |
69 EventWaiter<Event> waiter_; | 72 EventWaiter<Event> waiter_; |
70 }; | 73 }; |
71 | 74 |
72 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectHostResolver) { | 75 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectHostResolver) { |
73 interfaces::ProxyResolverPtr proxy_resolver; | 76 interfaces::ProxyResolverPtr proxy_resolver; |
74 interfaces::HostResolverPtr host_resolver; | 77 interfaces::HostResolverPtr host_resolver; |
75 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 78 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
76 mojo::GetProxy(&host_resolver); | 79 mojo::GetProxy(&host_resolver); |
| 80 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 81 mojo::GetProxy(&error_observer); |
77 factory_->CreateResolver(mojo::GetProxy(&proxy_resolver), | 82 factory_->CreateResolver(mojo::GetProxy(&proxy_resolver), |
78 host_resolver.Pass()); | 83 host_resolver.Pass(), error_observer.Pass()); |
79 proxy_resolver.set_error_handler(this); | 84 proxy_resolver.set_error_handler(this); |
80 waiter_.WaitForEvent(RESOLVER_CREATED); | 85 waiter_.WaitForEvent(RESOLVER_CREATED); |
81 EXPECT_EQ(1, instances_created_); | 86 EXPECT_EQ(1, instances_created_); |
82 EXPECT_EQ(0, instances_destroyed_); | 87 EXPECT_EQ(0, instances_destroyed_); |
83 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); | 88 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); |
84 waiter_.WaitForEvent(CONNECTION_ERROR); | 89 waiter_.WaitForEvent(CONNECTION_ERROR); |
85 EXPECT_EQ(1, instances_created_); | 90 EXPECT_EQ(1, instances_created_); |
86 EXPECT_EQ(1, instances_destroyed_); | 91 EXPECT_EQ(1, instances_destroyed_); |
87 } | 92 } |
88 | 93 |
89 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectProxyResolverClient) { | 94 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectProxyResolverClient) { |
90 interfaces::ProxyResolverPtr proxy_resolver; | 95 interfaces::ProxyResolverPtr proxy_resolver; |
91 interfaces::HostResolverPtr host_resolver; | 96 interfaces::HostResolverPtr host_resolver; |
92 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 97 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
93 mojo::GetProxy(&host_resolver); | 98 mojo::GetProxy(&host_resolver); |
94 mojo::Binding<interfaces::HostResolver> binding(nullptr, &host_resolver); | 99 mojo::Binding<interfaces::HostResolver> binding(nullptr, &host_resolver); |
95 binding.set_error_handler(this); | 100 binding.set_error_handler(this); |
| 101 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 102 mojo::GetProxy(&error_observer); |
96 factory_->CreateResolver(mojo::GetProxy(&proxy_resolver), | 103 factory_->CreateResolver(mojo::GetProxy(&proxy_resolver), |
97 host_resolver.Pass()); | 104 host_resolver.Pass(), error_observer.Pass()); |
98 waiter_.WaitForEvent(RESOLVER_CREATED); | 105 waiter_.WaitForEvent(RESOLVER_CREATED); |
99 EXPECT_EQ(1, instances_created_); | 106 EXPECT_EQ(1, instances_created_); |
100 EXPECT_EQ(0, instances_destroyed_); | 107 EXPECT_EQ(0, instances_destroyed_); |
101 proxy_resolver.reset(); | 108 proxy_resolver.reset(); |
102 waiter_.WaitForEvent(CONNECTION_ERROR); | 109 waiter_.WaitForEvent(CONNECTION_ERROR); |
103 EXPECT_EQ(1, instances_created_); | 110 EXPECT_EQ(1, instances_created_); |
104 EXPECT_EQ(1, instances_destroyed_); | 111 EXPECT_EQ(1, instances_destroyed_); |
105 } | 112 } |
106 | 113 |
107 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectBoth) { | 114 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectBoth) { |
108 interfaces::ProxyResolverPtr proxy_resolver; | 115 interfaces::ProxyResolverPtr proxy_resolver; |
109 interfaces::HostResolverPtr host_resolver; | 116 interfaces::HostResolverPtr host_resolver; |
110 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 117 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
111 mojo::GetProxy(&host_resolver); | 118 mojo::GetProxy(&host_resolver); |
| 119 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 120 mojo::GetProxy(&error_observer); |
112 factory_->CreateResolver(mojo::GetProxy(&proxy_resolver), | 121 factory_->CreateResolver(mojo::GetProxy(&proxy_resolver), |
113 host_resolver.Pass()); | 122 host_resolver.Pass(), error_observer.Pass()); |
114 waiter_.WaitForEvent(RESOLVER_CREATED); | 123 waiter_.WaitForEvent(RESOLVER_CREATED); |
115 EXPECT_EQ(1, instances_created_); | 124 EXPECT_EQ(1, instances_created_); |
116 EXPECT_EQ(0, instances_destroyed_); | 125 EXPECT_EQ(0, instances_destroyed_); |
117 proxy_resolver.reset(); | 126 proxy_resolver.reset(); |
118 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); | 127 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); |
119 waiter_.WaitForEvent(RESOLVER_DESTROYED); | 128 waiter_.WaitForEvent(RESOLVER_DESTROYED); |
120 EXPECT_EQ(1, instances_created_); | 129 EXPECT_EQ(1, instances_created_); |
121 EXPECT_EQ(1, instances_destroyed_); | 130 EXPECT_EQ(1, instances_destroyed_); |
122 } | 131 } |
123 | 132 |
124 } // namespace net | 133 } // namespace net |
OLD | NEW |