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

Side by Side Diff: net/proxy/mojo_proxy_resolver_impl_unittest.cc

Issue 1145153004: Split ProxyResolverV8Tracing into an implementation and a wrapper. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 5 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
« no previous file with comments | « net/proxy/mojo_proxy_resolver_impl.cc ('k') | net/proxy/proxy_resolver.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "net/proxy/mojo_proxy_resolver_impl.h" 5 #include "net/proxy/mojo_proxy_resolver_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
11 #include "net/base/net_errors.h" 11 #include "net/base/net_errors.h"
12 #include "net/proxy/mock_proxy_resolver.h" 12 #include "net/proxy/mock_proxy_resolver.h"
13 #include "net/proxy/mojo_proxy_type_converters.h" 13 #include "net/proxy/mojo_proxy_type_converters.h"
14 #include "net/proxy/proxy_info.h" 14 #include "net/proxy/proxy_info.h"
15 #include "net/proxy/proxy_server.h" 15 #include "net/proxy/proxy_server.h"
16 #include "net/test/event_waiter.h" 16 #include "net/test/event_waiter.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" 18 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
19 #include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h" 19 #include "third_party/mojo/src/mojo/public/cpp/bindings/error_handler.h"
20 20
21 namespace net { 21 namespace net {
22 namespace { 22 namespace {
23 23
24 class TestRequestClient : public interfaces::ProxyResolverRequestClient, 24 class TestRequestClient : public interfaces::ProxyResolverRequestClient,
25 public mojo::ErrorHandler { 25 public mojo::ErrorHandler {
26 public: 26 public:
27 enum Event { 27 enum Event {
28 RESULT_RECEIVED, 28 RESULT_RECEIVED,
29 LOAD_STATE_CHANGED,
30 CONNECTION_ERROR, 29 CONNECTION_ERROR,
31 }; 30 };
32 31
33 explicit TestRequestClient( 32 explicit TestRequestClient(
34 mojo::InterfaceRequest<interfaces::ProxyResolverRequestClient> request); 33 mojo::InterfaceRequest<interfaces::ProxyResolverRequestClient> request);
35 34
36 void WaitForResult(); 35 void WaitForResult();
37 36
38 Error error() { return error_; } 37 Error error() { return error_; }
39 const mojo::Array<interfaces::ProxyServerPtr>& results() { return results_; } 38 const mojo::Array<interfaces::ProxyServerPtr>& results() { return results_; }
40 LoadState load_state() { return load_state_; }
41 EventWaiter<Event>& event_waiter() { return event_waiter_; } 39 EventWaiter<Event>& event_waiter() { return event_waiter_; }
42 40
43 private: 41 private:
44 // interfaces::ProxyResolverRequestClient override. 42 // interfaces::ProxyResolverRequestClient override.
45 void ReportResult(int32_t error, 43 void ReportResult(int32_t error,
46 mojo::Array<interfaces::ProxyServerPtr> results) override; 44 mojo::Array<interfaces::ProxyServerPtr> results) override;
47 void LoadStateChanged(int32_t load_state) override;
48 45
49 // mojo::ErrorHandler override. 46 // mojo::ErrorHandler override.
50 void OnConnectionError() override; 47 void OnConnectionError() override;
51 48
52 bool done_ = false; 49 bool done_ = false;
53 Error error_ = ERR_FAILED; 50 Error error_ = ERR_FAILED;
54 LoadState load_state_ = LOAD_STATE_IDLE;
55 mojo::Array<interfaces::ProxyServerPtr> results_; 51 mojo::Array<interfaces::ProxyServerPtr> results_;
56 52
57 mojo::Binding<interfaces::ProxyResolverRequestClient> binding_; 53 mojo::Binding<interfaces::ProxyResolverRequestClient> binding_;
58 54
59 EventWaiter<Event> event_waiter_; 55 EventWaiter<Event> event_waiter_;
60 }; 56 };
61 57
62 TestRequestClient::TestRequestClient( 58 TestRequestClient::TestRequestClient(
63 mojo::InterfaceRequest<interfaces::ProxyResolverRequestClient> request) 59 mojo::InterfaceRequest<interfaces::ProxyResolverRequestClient> request)
64 : binding_(this, request.Pass()) { 60 : binding_(this, request.Pass()) {
(...skipping 11 matching lines...) Expand all
76 void TestRequestClient::ReportResult( 72 void TestRequestClient::ReportResult(
77 int32_t error, 73 int32_t error,
78 mojo::Array<interfaces::ProxyServerPtr> results) { 74 mojo::Array<interfaces::ProxyServerPtr> results) {
79 event_waiter_.NotifyEvent(RESULT_RECEIVED); 75 event_waiter_.NotifyEvent(RESULT_RECEIVED);
80 ASSERT_FALSE(done_); 76 ASSERT_FALSE(done_);
81 error_ = static_cast<Error>(error); 77 error_ = static_cast<Error>(error);
82 results_ = results.Pass(); 78 results_ = results.Pass();
83 done_ = true; 79 done_ = true;
84 } 80 }
85 81
86 void TestRequestClient::LoadStateChanged(int32_t load_state) {
87 event_waiter_.NotifyEvent(LOAD_STATE_CHANGED);
88 load_state_ = static_cast<LoadState>(load_state);
89 }
90
91 void TestRequestClient::OnConnectionError() { 82 void TestRequestClient::OnConnectionError() {
92 event_waiter_.NotifyEvent(CONNECTION_ERROR); 83 event_waiter_.NotifyEvent(CONNECTION_ERROR);
93 } 84 }
94 85
95 class CallbackMockProxyResolver : public MockAsyncProxyResolver { 86 class CallbackMockProxyResolver : public MockAsyncProxyResolver {
96 public: 87 public:
97 CallbackMockProxyResolver() {} 88 CallbackMockProxyResolver() {}
98 ~CallbackMockProxyResolver() override; 89 ~CallbackMockProxyResolver() override;
99 90
100 // MockAsyncProxyResolver overrides. 91 // MockAsyncProxyResolver overrides.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 } 148 }
158 149
159 } // namespace 150 } // namespace
160 151
161 class MojoProxyResolverImplTest : public testing::Test { 152 class MojoProxyResolverImplTest : public testing::Test {
162 protected: 153 protected:
163 void SetUp() override { 154 void SetUp() override {
164 scoped_ptr<CallbackMockProxyResolver> mock_resolver( 155 scoped_ptr<CallbackMockProxyResolver> mock_resolver(
165 new CallbackMockProxyResolver); 156 new CallbackMockProxyResolver);
166 mock_proxy_resolver_ = mock_resolver.get(); 157 mock_proxy_resolver_ = mock_resolver.get();
167 resolver_impl_.reset(new MojoProxyResolverImpl( 158 resolver_impl_.reset(new MojoProxyResolverImpl(mock_resolver.Pass()));
168 mock_resolver.Pass(),
169 base::Bind(&MojoProxyResolverImplTest::set_load_state_changed_callback,
170 base::Unretained(this))));
171 resolver_ = resolver_impl_.get(); 159 resolver_ = resolver_impl_.get();
172 } 160 }
173 161
174 void set_load_state_changed_callback(
175 const ProxyResolver::LoadStateChangedCallback& callback) {
176 EXPECT_TRUE(load_state_changed_callback_.is_null());
177 EXPECT_FALSE(callback.is_null());
178 load_state_changed_callback_ = callback;
179 }
180
181 CallbackMockProxyResolver* mock_proxy_resolver_; 162 CallbackMockProxyResolver* mock_proxy_resolver_;
182 163
183 scoped_ptr<MojoProxyResolverImpl> resolver_impl_; 164 scoped_ptr<MojoProxyResolverImpl> resolver_impl_;
184 interfaces::ProxyResolver* resolver_; 165 interfaces::ProxyResolver* resolver_;
185 ProxyResolver::LoadStateChangedCallback load_state_changed_callback_;
186 }; 166 };
187 167
188 TEST_F(MojoProxyResolverImplTest, GetProxyForUrl) { 168 TEST_F(MojoProxyResolverImplTest, GetProxyForUrl) {
189 interfaces::ProxyResolverRequestClientPtr client_ptr; 169 interfaces::ProxyResolverRequestClientPtr client_ptr;
190 TestRequestClient client(mojo::GetProxy(&client_ptr)); 170 TestRequestClient client(mojo::GetProxy(&client_ptr));
191 171
192 resolver_->GetProxyForUrl("http://example.com", client_ptr.Pass()); 172 resolver_->GetProxyForUrl("http://example.com", client_ptr.Pass());
193 ASSERT_EQ(1u, mock_proxy_resolver_->pending_requests().size()); 173 ASSERT_EQ(1u, mock_proxy_resolver_->pending_requests().size());
194 scoped_refptr<MockAsyncProxyResolver::Request> request = 174 scoped_refptr<MockAsyncProxyResolver::Request> request =
195 mock_proxy_resolver_->pending_requests()[0]; 175 mock_proxy_resolver_->pending_requests()[0];
196 EXPECT_EQ(GURL("http://example.com"), request->url()); 176 EXPECT_EQ(GURL("http://example.com"), request->url());
197 177
198 ASSERT_FALSE(load_state_changed_callback_.is_null());
199 load_state_changed_callback_.Run(request.get(),
200 LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT);
201 client.event_waiter().WaitForEvent(TestRequestClient::LOAD_STATE_CHANGED);
202 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT, client.load_state());
203
204 request->results()->UsePacString( 178 request->results()->UsePacString(
205 "PROXY proxy.example.com:1; " 179 "PROXY proxy.example.com:1; "
206 "SOCKS4 socks4.example.com:2; " 180 "SOCKS4 socks4.example.com:2; "
207 "SOCKS5 socks5.example.com:3; " 181 "SOCKS5 socks5.example.com:3; "
208 "HTTPS https.example.com:4; " 182 "HTTPS https.example.com:4; "
209 "QUIC quic.example.com:65000; " 183 "QUIC quic.example.com:65000; "
210 "DIRECT"); 184 "DIRECT");
211 request->CompleteNow(OK); 185 request->CompleteNow(OK);
212 client.WaitForResult(); 186 client.WaitForResult();
213 187
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 311
338 resolver_->GetProxyForUrl("http://example.com", client_ptr.Pass()); 312 resolver_->GetProxyForUrl("http://example.com", client_ptr.Pass());
339 ASSERT_EQ(1u, mock_proxy_resolver_->pending_requests().size()); 313 ASSERT_EQ(1u, mock_proxy_resolver_->pending_requests().size());
340 scoped_refptr<MockAsyncProxyResolver::Request> request = 314 scoped_refptr<MockAsyncProxyResolver::Request> request =
341 mock_proxy_resolver_->pending_requests()[0]; 315 mock_proxy_resolver_->pending_requests()[0];
342 resolver_impl_.reset(); 316 resolver_impl_.reset();
343 client.event_waiter().WaitForEvent(TestRequestClient::CONNECTION_ERROR); 317 client.event_waiter().WaitForEvent(TestRequestClient::CONNECTION_ERROR);
344 } 318 }
345 319
346 } // namespace net 320 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/mojo_proxy_resolver_impl.cc ('k') | net/proxy/proxy_resolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698