| 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 "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "net/base/test_completion_callback.h" | 8 #include "net/base/test_completion_callback.h" |
| 9 #include "net/proxy/mock_proxy_resolver.h" | 9 #include "net/proxy/mock_proxy_resolver.h" |
| 10 #include "net/proxy/proxy_resolver_error_observer.h" |
| 10 #include "net/test/event_waiter.h" | 11 #include "net/test/event_waiter.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 12 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" | 13 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" |
| 13 #include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h" | 14 #include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h" |
| 14 | 15 |
| 15 namespace net { | 16 namespace net { |
| 16 namespace { | 17 namespace { |
| 17 | 18 |
| 18 const char kScriptData[] = "FooBarBaz"; | 19 const char kScriptData[] = "FooBarBaz"; |
| 19 | 20 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 base::Unretained(this)), | 69 base::Unretained(this)), |
| 69 mojo::GetProxy(&factory_)); | 70 mojo::GetProxy(&factory_)); |
| 70 mock_factory_owner_.reset(new TestProxyResolverFactory(&waiter_)); | 71 mock_factory_owner_.reset(new TestProxyResolverFactory(&waiter_)); |
| 71 mock_factory_ = mock_factory_owner_.get(); | 72 mock_factory_ = mock_factory_owner_.get(); |
| 72 } | 73 } |
| 73 | 74 |
| 74 void OnConnectionError() override { waiter_.NotifyEvent(CONNECTION_ERROR); } | 75 void OnConnectionError() override { waiter_.NotifyEvent(CONNECTION_ERROR); } |
| 75 | 76 |
| 76 scoped_ptr<ProxyResolverFactory> CreateFakeProxyResolverFactory( | 77 scoped_ptr<ProxyResolverFactory> CreateFakeProxyResolverFactory( |
| 77 HostResolver* host_resolver, | 78 HostResolver* host_resolver, |
| 79 scoped_ptr<ProxyResolverErrorObserver> error_observer, |
| 78 const ProxyResolver::LoadStateChangedCallback& callback) { | 80 const ProxyResolver::LoadStateChangedCallback& callback) { |
| 79 EXPECT_TRUE(host_resolver); | 81 EXPECT_TRUE(host_resolver); |
| 80 EXPECT_FALSE(callback.is_null()); | 82 EXPECT_FALSE(callback.is_null()); |
| 81 DCHECK(mock_factory_owner_); | 83 DCHECK(mock_factory_owner_); |
| 82 return mock_factory_owner_.Pass(); | 84 return mock_factory_owner_.Pass(); |
| 83 } | 85 } |
| 84 | 86 |
| 85 void OnFakeProxyInstanceDestroyed() { | 87 void OnFakeProxyInstanceDestroyed() { |
| 86 instances_destroyed_++; | 88 instances_destroyed_++; |
| 87 waiter_.NotifyEvent(RESOLVER_DESTROYED); | 89 waiter_.NotifyEvent(RESOLVER_DESTROYED); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 98 CompletionCallback create_callback_; | 100 CompletionCallback create_callback_; |
| 99 | 101 |
| 100 EventWaiter<Event> waiter_; | 102 EventWaiter<Event> waiter_; |
| 101 }; | 103 }; |
| 102 | 104 |
| 103 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectHostResolver) { | 105 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectHostResolver) { |
| 104 interfaces::ProxyResolverPtr proxy_resolver; | 106 interfaces::ProxyResolverPtr proxy_resolver; |
| 105 interfaces::HostResolverPtr host_resolver; | 107 interfaces::HostResolverPtr host_resolver; |
| 106 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 108 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
| 107 mojo::GetProxy(&host_resolver); | 109 mojo::GetProxy(&host_resolver); |
| 110 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 111 mojo::GetProxy(&error_observer); |
| 108 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 112 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 109 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 113 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 110 this, mojo::GetProxy(&client_ptr)); | 114 this, mojo::GetProxy(&client_ptr)); |
| 111 factory_->CreateResolver(mojo::String::From(kScriptData), | 115 factory_->CreateResolver( |
| 112 mojo::GetProxy(&proxy_resolver), | 116 mojo::String::From(kScriptData), mojo::GetProxy(&proxy_resolver), |
| 113 host_resolver.Pass(), client_ptr.Pass()); | 117 host_resolver.Pass(), error_observer.Pass(), client_ptr.Pass()); |
| 114 proxy_resolver.set_error_handler(this); | 118 proxy_resolver.set_error_handler(this); |
| 115 waiter_.WaitForEvent(RESOLVER_CREATED); | 119 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 116 EXPECT_EQ(0, instances_destroyed_); | 120 EXPECT_EQ(0, instances_destroyed_); |
| 117 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); | 121 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); |
| 118 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), | 122 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), |
| 119 mock_factory_->pending_requests()[0]->script_data()->utf16()); | 123 mock_factory_->pending_requests()[0]->script_data()->utf16()); |
| 120 TestCompletionCallback create_callback; | 124 TestCompletionCallback create_callback; |
| 121 create_callback_ = create_callback.callback(); | 125 create_callback_ = create_callback.callback(); |
| 122 mock_factory_->pending_requests()[0]->CompleteNow( | 126 mock_factory_->pending_requests()[0]->CompleteNow( |
| 123 OK, make_scoped_ptr(new FakeProxyResolver(base::Bind( | 127 OK, make_scoped_ptr(new FakeProxyResolver(base::Bind( |
| 124 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, | 128 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, |
| 125 base::Unretained(this))))); | 129 base::Unretained(this))))); |
| 126 EXPECT_EQ(OK, create_callback.WaitForResult()); | 130 EXPECT_EQ(OK, create_callback.WaitForResult()); |
| 127 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); | 131 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); |
| 128 waiter_.WaitForEvent(CONNECTION_ERROR); | 132 waiter_.WaitForEvent(CONNECTION_ERROR); |
| 129 EXPECT_EQ(1, instances_destroyed_); | 133 EXPECT_EQ(1, instances_destroyed_); |
| 130 } | 134 } |
| 131 | 135 |
| 132 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectProxyResolverClient) { | 136 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectProxyResolverClient) { |
| 133 interfaces::ProxyResolverPtr proxy_resolver; | 137 interfaces::ProxyResolverPtr proxy_resolver; |
| 134 interfaces::HostResolverPtr host_resolver; | 138 interfaces::HostResolverPtr host_resolver; |
| 135 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 139 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
| 136 mojo::GetProxy(&host_resolver); | 140 mojo::GetProxy(&host_resolver); |
| 137 mojo::Binding<interfaces::HostResolver> binding(nullptr, &host_resolver); | 141 mojo::Binding<interfaces::HostResolver> binding(nullptr, &host_resolver); |
| 138 binding.set_error_handler(this); | 142 binding.set_error_handler(this); |
| 143 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 144 mojo::GetProxy(&error_observer); |
| 139 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 145 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 140 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 146 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 141 this, mojo::GetProxy(&client_ptr)); | 147 this, mojo::GetProxy(&client_ptr)); |
| 142 factory_->CreateResolver(mojo::String::From(kScriptData), | 148 factory_->CreateResolver( |
| 143 mojo::GetProxy(&proxy_resolver), | 149 mojo::String::From(kScriptData), mojo::GetProxy(&proxy_resolver), |
| 144 host_resolver.Pass(), client_ptr.Pass()); | 150 host_resolver.Pass(), error_observer.Pass(), client_ptr.Pass()); |
| 145 proxy_resolver.set_error_handler(this); | 151 proxy_resolver.set_error_handler(this); |
| 146 waiter_.WaitForEvent(RESOLVER_CREATED); | 152 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 147 EXPECT_EQ(0, instances_destroyed_); | 153 EXPECT_EQ(0, instances_destroyed_); |
| 148 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); | 154 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); |
| 149 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), | 155 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), |
| 150 mock_factory_->pending_requests()[0]->script_data()->utf16()); | 156 mock_factory_->pending_requests()[0]->script_data()->utf16()); |
| 151 TestCompletionCallback create_callback; | 157 TestCompletionCallback create_callback; |
| 152 create_callback_ = create_callback.callback(); | 158 create_callback_ = create_callback.callback(); |
| 153 mock_factory_->pending_requests()[0]->CompleteNow( | 159 mock_factory_->pending_requests()[0]->CompleteNow( |
| 154 OK, make_scoped_ptr(new FakeProxyResolver(base::Bind( | 160 OK, make_scoped_ptr(new FakeProxyResolver(base::Bind( |
| 155 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, | 161 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, |
| 156 base::Unretained(this))))); | 162 base::Unretained(this))))); |
| 157 EXPECT_EQ(OK, create_callback.WaitForResult()); | 163 EXPECT_EQ(OK, create_callback.WaitForResult()); |
| 158 proxy_resolver.reset(); | 164 proxy_resolver.reset(); |
| 159 waiter_.WaitForEvent(CONNECTION_ERROR); | 165 waiter_.WaitForEvent(CONNECTION_ERROR); |
| 160 EXPECT_EQ(1, instances_destroyed_); | 166 EXPECT_EQ(1, instances_destroyed_); |
| 161 } | 167 } |
| 162 | 168 |
| 163 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectBoth) { | 169 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectBoth) { |
| 164 interfaces::ProxyResolverPtr proxy_resolver; | 170 interfaces::ProxyResolverPtr proxy_resolver; |
| 165 interfaces::HostResolverPtr host_resolver; | 171 interfaces::HostResolverPtr host_resolver; |
| 166 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 172 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
| 167 mojo::GetProxy(&host_resolver); | 173 mojo::GetProxy(&host_resolver); |
| 174 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 175 mojo::GetProxy(&error_observer); |
| 168 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 176 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 169 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 177 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 170 this, mojo::GetProxy(&client_ptr)); | 178 this, mojo::GetProxy(&client_ptr)); |
| 171 factory_->CreateResolver(mojo::String::From(kScriptData), | 179 factory_->CreateResolver( |
| 172 mojo::GetProxy(&proxy_resolver), | 180 mojo::String::From(kScriptData), mojo::GetProxy(&proxy_resolver), |
| 173 host_resolver.Pass(), client_ptr.Pass()); | 181 host_resolver.Pass(), error_observer.Pass(), client_ptr.Pass()); |
| 174 proxy_resolver.set_error_handler(this); | 182 proxy_resolver.set_error_handler(this); |
| 175 waiter_.WaitForEvent(RESOLVER_CREATED); | 183 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 176 EXPECT_EQ(0, instances_destroyed_); | 184 EXPECT_EQ(0, instances_destroyed_); |
| 177 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); | 185 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); |
| 178 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), | 186 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), |
| 179 mock_factory_->pending_requests()[0]->script_data()->utf16()); | 187 mock_factory_->pending_requests()[0]->script_data()->utf16()); |
| 180 TestCompletionCallback create_callback; | 188 TestCompletionCallback create_callback; |
| 181 create_callback_ = create_callback.callback(); | 189 create_callback_ = create_callback.callback(); |
| 182 mock_factory_->pending_requests()[0]->CompleteNow( | 190 mock_factory_->pending_requests()[0]->CompleteNow( |
| 183 OK, make_scoped_ptr(new FakeProxyResolver(base::Bind( | 191 OK, make_scoped_ptr(new FakeProxyResolver(base::Bind( |
| 184 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, | 192 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, |
| 185 base::Unretained(this))))); | 193 base::Unretained(this))))); |
| 186 EXPECT_EQ(OK, create_callback.WaitForResult()); | 194 EXPECT_EQ(OK, create_callback.WaitForResult()); |
| 187 proxy_resolver.reset(); | 195 proxy_resolver.reset(); |
| 188 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); | 196 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); |
| 189 waiter_.WaitForEvent(RESOLVER_DESTROYED); | 197 waiter_.WaitForEvent(RESOLVER_DESTROYED); |
| 190 EXPECT_EQ(1, instances_destroyed_); | 198 EXPECT_EQ(1, instances_destroyed_); |
| 191 } | 199 } |
| 192 | 200 |
| 193 TEST_F(MojoProxyResolverFactoryImplTest, Error) { | 201 TEST_F(MojoProxyResolverFactoryImplTest, Error) { |
| 194 interfaces::ProxyResolverPtr proxy_resolver; | 202 interfaces::ProxyResolverPtr proxy_resolver; |
| 195 interfaces::HostResolverPtr host_resolver; | 203 interfaces::HostResolverPtr host_resolver; |
| 196 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 204 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
| 197 mojo::GetProxy(&host_resolver); | 205 mojo::GetProxy(&host_resolver); |
| 206 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 207 mojo::GetProxy(&error_observer); |
| 198 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 208 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 199 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 209 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 200 this, mojo::GetProxy(&client_ptr)); | 210 this, mojo::GetProxy(&client_ptr)); |
| 201 factory_->CreateResolver(mojo::String::From(kScriptData), | 211 factory_->CreateResolver( |
| 202 mojo::GetProxy(&proxy_resolver), | 212 mojo::String::From(kScriptData), mojo::GetProxy(&proxy_resolver), |
| 203 host_resolver.Pass(), client_ptr.Pass()); | 213 host_resolver.Pass(), error_observer.Pass(), client_ptr.Pass()); |
| 204 proxy_resolver.set_error_handler(this); | 214 proxy_resolver.set_error_handler(this); |
| 205 waiter_.WaitForEvent(RESOLVER_CREATED); | 215 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 206 EXPECT_EQ(0, instances_destroyed_); | 216 EXPECT_EQ(0, instances_destroyed_); |
| 207 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); | 217 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); |
| 208 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), | 218 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), |
| 209 mock_factory_->pending_requests()[0]->script_data()->utf16()); | 219 mock_factory_->pending_requests()[0]->script_data()->utf16()); |
| 210 TestCompletionCallback create_callback; | 220 TestCompletionCallback create_callback; |
| 211 create_callback_ = create_callback.callback(); | 221 create_callback_ = create_callback.callback(); |
| 212 mock_factory_->pending_requests()[0]->CompleteNow(ERR_PAC_SCRIPT_FAILED, | 222 mock_factory_->pending_requests()[0]->CompleteNow(ERR_PAC_SCRIPT_FAILED, |
| 213 nullptr); | 223 nullptr); |
| 214 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, create_callback.WaitForResult()); | 224 EXPECT_EQ(ERR_PAC_SCRIPT_FAILED, create_callback.WaitForResult()); |
| 215 } | 225 } |
| 216 | 226 |
| 217 TEST_F(MojoProxyResolverFactoryImplTest, | 227 TEST_F(MojoProxyResolverFactoryImplTest, |
| 218 DisconnectHostResolverDuringResolveCreation) { | 228 DisconnectHostResolverDuringResolveCreation) { |
| 219 interfaces::ProxyResolverPtr proxy_resolver; | 229 interfaces::ProxyResolverPtr proxy_resolver; |
| 220 interfaces::HostResolverPtr host_resolver; | 230 interfaces::HostResolverPtr host_resolver; |
| 221 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 231 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
| 222 mojo::GetProxy(&host_resolver); | 232 mojo::GetProxy(&host_resolver); |
| 233 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 234 mojo::GetProxy(&error_observer); |
| 223 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 235 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 224 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 236 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 225 this, mojo::GetProxy(&client_ptr)); | 237 this, mojo::GetProxy(&client_ptr)); |
| 226 factory_->CreateResolver(mojo::String::From(kScriptData), | 238 factory_->CreateResolver( |
| 227 mojo::GetProxy(&proxy_resolver), | 239 mojo::String::From(kScriptData), mojo::GetProxy(&proxy_resolver), |
| 228 host_resolver.Pass(), client_ptr.Pass()); | 240 host_resolver.Pass(), error_observer.Pass(), client_ptr.Pass()); |
| 229 proxy_resolver.set_error_handler(this); | 241 proxy_resolver.set_error_handler(this); |
| 230 waiter_.WaitForEvent(RESOLVER_CREATED); | 242 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 231 EXPECT_EQ(0, instances_destroyed_); | 243 EXPECT_EQ(0, instances_destroyed_); |
| 232 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); | 244 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); |
| 233 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), | 245 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), |
| 234 mock_factory_->pending_requests()[0]->script_data()->utf16()); | 246 mock_factory_->pending_requests()[0]->script_data()->utf16()); |
| 235 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); | 247 host_resolver_request = mojo::InterfaceRequest<interfaces::HostResolver>(); |
| 236 TestCompletionCallback create_callback; | 248 TestCompletionCallback create_callback; |
| 237 create_callback_ = create_callback.callback(); | 249 create_callback_ = create_callback.callback(); |
| 238 waiter_.WaitForEvent(CONNECTION_ERROR); | 250 waiter_.WaitForEvent(CONNECTION_ERROR); |
| 239 EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, create_callback.WaitForResult()); | 251 EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, create_callback.WaitForResult()); |
| 240 } | 252 } |
| 241 | 253 |
| 242 TEST_F(MojoProxyResolverFactoryImplTest, | 254 TEST_F(MojoProxyResolverFactoryImplTest, |
| 243 DisconnectClientDuringResolverCreation) { | 255 DisconnectClientDuringResolverCreation) { |
| 244 interfaces::ProxyResolverPtr proxy_resolver; | 256 interfaces::ProxyResolverPtr proxy_resolver; |
| 245 interfaces::HostResolverPtr host_resolver; | 257 interfaces::HostResolverPtr host_resolver; |
| 246 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 258 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
| 247 mojo::GetProxy(&host_resolver); | 259 mojo::GetProxy(&host_resolver); |
| 248 mojo::Binding<interfaces::HostResolver> binding(nullptr, &host_resolver); | 260 mojo::Binding<interfaces::HostResolver> binding(nullptr, &host_resolver); |
| 249 binding.set_error_handler(this); | 261 binding.set_error_handler(this); |
| 262 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 263 mojo::GetProxy(&error_observer); |
| 250 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 264 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 251 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 265 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 252 this, mojo::GetProxy(&client_ptr)); | 266 this, mojo::GetProxy(&client_ptr)); |
| 253 factory_->CreateResolver(mojo::String::From(kScriptData), | 267 factory_->CreateResolver( |
| 254 mojo::GetProxy(&proxy_resolver), | 268 mojo::String::From(kScriptData), mojo::GetProxy(&proxy_resolver), |
| 255 host_resolver.Pass(), client_ptr.Pass()); | 269 host_resolver.Pass(), error_observer.Pass(), client_ptr.Pass()); |
| 256 proxy_resolver.set_error_handler(this); | 270 proxy_resolver.set_error_handler(this); |
| 257 waiter_.WaitForEvent(RESOLVER_CREATED); | 271 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 258 EXPECT_EQ(0, instances_destroyed_); | 272 EXPECT_EQ(0, instances_destroyed_); |
| 259 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); | 273 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); |
| 260 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), | 274 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), |
| 261 mock_factory_->pending_requests()[0]->script_data()->utf16()); | 275 mock_factory_->pending_requests()[0]->script_data()->utf16()); |
| 262 client_binding.Close(); | 276 client_binding.Close(); |
| 263 waiter_.WaitForEvent(CONNECTION_ERROR); | 277 waiter_.WaitForEvent(CONNECTION_ERROR); |
| 264 } | 278 } |
| 265 | 279 |
| 266 TEST_F(MojoProxyResolverFactoryImplTest, | 280 TEST_F(MojoProxyResolverFactoryImplTest, |
| 267 DisconnectFactoryDuringResolverCreation) { | 281 DisconnectFactoryDuringResolverCreation) { |
| 268 interfaces::ProxyResolverPtr proxy_resolver; | 282 interfaces::ProxyResolverPtr proxy_resolver; |
| 269 interfaces::HostResolverPtr host_resolver; | 283 interfaces::HostResolverPtr host_resolver; |
| 270 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = | 284 mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request = |
| 271 mojo::GetProxy(&host_resolver); | 285 mojo::GetProxy(&host_resolver); |
| 272 mojo::Binding<interfaces::HostResolver> binding(nullptr, &host_resolver); | 286 mojo::Binding<interfaces::HostResolver> binding(nullptr, &host_resolver); |
| 273 binding.set_error_handler(this); | 287 binding.set_error_handler(this); |
| 288 interfaces::ProxyResolverErrorObserverPtr error_observer; |
| 289 mojo::GetProxy(&error_observer); |
| 274 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 290 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 275 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 291 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 276 this, mojo::GetProxy(&client_ptr)); | 292 this, mojo::GetProxy(&client_ptr)); |
| 277 factory_->CreateResolver(mojo::String::From(kScriptData), | 293 factory_->CreateResolver( |
| 278 mojo::GetProxy(&proxy_resolver), | 294 mojo::String::From(kScriptData), mojo::GetProxy(&proxy_resolver), |
| 279 host_resolver.Pass(), client_ptr.Pass()); | 295 host_resolver.Pass(), error_observer.Pass(), client_ptr.Pass()); |
| 280 proxy_resolver.set_error_handler(this); | 296 proxy_resolver.set_error_handler(this); |
| 281 client_binding.set_error_handler(this); | 297 client_binding.set_error_handler(this); |
| 282 waiter_.WaitForEvent(RESOLVER_CREATED); | 298 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 283 EXPECT_EQ(0, instances_destroyed_); | 299 EXPECT_EQ(0, instances_destroyed_); |
| 284 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); | 300 ASSERT_EQ(1u, mock_factory_->pending_requests().size()); |
| 285 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), | 301 EXPECT_EQ(base::ASCIIToUTF16(kScriptData), |
| 286 mock_factory_->pending_requests()[0]->script_data()->utf16()); | 302 mock_factory_->pending_requests()[0]->script_data()->utf16()); |
| 287 factory_.reset(); | 303 factory_.reset(); |
| 288 waiter_.WaitForEvent(CONNECTION_ERROR); | 304 waiter_.WaitForEvent(CONNECTION_ERROR); |
| 289 } | 305 } |
| 290 | 306 |
| 291 } // namespace net | 307 } // namespace net |
| OLD | NEW |