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

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

Issue 2299963002: Reland "Change ProxyResolver::GetProxyForURL() to take a unique_ptr<Request>* " (Closed)
Patch Set: remove fields proposed by eroman Created 4 years, 2 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/proxy_resolver_factory_mojo.cc ('k') | net/proxy/proxy_resolver_mac.cc » ('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/proxy_resolver_factory_mojo.h" 5 #include "net/proxy/proxy_resolver_factory_mojo.h"
6 6
7 #include <list> 7 #include <list>
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 #include <queue> 10 #include <queue>
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 292
293 class Request { 293 class Request {
294 public: 294 public:
295 Request(ProxyResolver* resolver, const GURL& url); 295 Request(ProxyResolver* resolver, const GURL& url);
296 296
297 int Resolve(); 297 int Resolve();
298 void Cancel(); 298 void Cancel();
299 int WaitForResult(); 299 int WaitForResult();
300 300
301 const ProxyInfo& results() const { return results_; } 301 const ProxyInfo& results() const { return results_; }
302 LoadState load_state() { return resolver_->GetLoadState(handle_); } 302 LoadState load_state() { return request_->GetLoadState(); }
303 BoundTestNetLog& net_log() { return net_log_; } 303 BoundTestNetLog& net_log() { return net_log_; }
304 const TestCompletionCallback& callback() const { return callback_; }
304 305
305 private: 306 private:
306 ProxyResolver* resolver_; 307 ProxyResolver* resolver_;
307 const GURL url_; 308 const GURL url_;
308 ProxyInfo results_; 309 ProxyInfo results_;
309 ProxyResolver::RequestHandle handle_; 310 std::unique_ptr<ProxyResolver::Request> request_;
310 int error_; 311 int error_;
311 TestCompletionCallback callback_; 312 TestCompletionCallback callback_;
312 BoundTestNetLog net_log_; 313 BoundTestNetLog net_log_;
313 }; 314 };
314 315
315 Request::Request(ProxyResolver* resolver, const GURL& url) 316 Request::Request(ProxyResolver* resolver, const GURL& url)
316 : resolver_(resolver), url_(url), error_(0) { 317 : resolver_(resolver), url_(url), error_(0) {
317 } 318 }
318 319
319 int Request::Resolve() { 320 int Request::Resolve() {
320 error_ = resolver_->GetProxyForURL(url_, &results_, callback_.callback(), 321 error_ = resolver_->GetProxyForURL(url_, &results_, callback_.callback(),
321 &handle_, net_log_.bound()); 322 &request_, net_log_.bound());
322 return error_; 323 return error_;
323 } 324 }
324 325
325 void Request::Cancel() { 326 void Request::Cancel() {
326 resolver_->CancelRequest(handle_); 327 request_.reset();
327 } 328 }
328 329
329 int Request::WaitForResult() { 330 int Request::WaitForResult() {
330 error_ = callback_.WaitForResult(); 331 error_ = callback_.WaitForResult();
331 return error_; 332 return error_;
332 } 333 }
333 334
334 class MockMojoProxyResolverFactory : public interfaces::ProxyResolverFactory { 335 class MockMojoProxyResolverFactory : public interfaces::ProxyResolverFactory {
335 public: 336 public:
336 MockMojoProxyResolverFactory( 337 MockMojoProxyResolverFactory(
(...skipping 444 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 } 782 }
782 783
783 TEST_F(ProxyResolverFactoryMojoTest, GetProxyForURL_Cancel) { 784 TEST_F(ProxyResolverFactoryMojoTest, GetProxyForURL_Cancel) {
784 mock_proxy_resolver_.AddGetProxyAction( 785 mock_proxy_resolver_.AddGetProxyAction(
785 GetProxyForUrlAction::WaitForClientDisconnect(GURL(kExampleUrl))); 786 GetProxyForUrlAction::WaitForClientDisconnect(GURL(kExampleUrl)));
786 CreateProxyResolver(); 787 CreateProxyResolver();
787 788
788 std::unique_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); 789 std::unique_ptr<Request> request(MakeRequest(GURL(kExampleUrl)));
789 EXPECT_THAT(request->Resolve(), IsError(ERR_IO_PENDING)); 790 EXPECT_THAT(request->Resolve(), IsError(ERR_IO_PENDING));
790 request->Cancel(); 791 request->Cancel();
792 EXPECT_FALSE(request->callback().have_result());
791 793
792 // The Mojo request is still made. 794 // The Mojo request is still made.
793 mock_proxy_resolver_.WaitForNextRequest(); 795 mock_proxy_resolver_.WaitForNextRequest();
794 } 796 }
795 797
796 TEST_F(ProxyResolverFactoryMojoTest, GetProxyForURL_MultipleRequests) { 798 TEST_F(ProxyResolverFactoryMojoTest, GetProxyForURL_MultipleRequests) {
797 mock_proxy_resolver_.AddGetProxyAction(GetProxyForUrlAction::ReturnServers( 799 mock_proxy_resolver_.AddGetProxyAction(GetProxyForUrlAction::ReturnServers(
798 GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); 800 GURL(kExampleUrl), ProxyServersFromPacString("DIRECT")));
799 mock_proxy_resolver_.AddGetProxyAction(GetProxyForUrlAction::ReturnServers( 801 mock_proxy_resolver_.AddGetProxyAction(GetProxyForUrlAction::ReturnServers(
800 GURL("https://www.chromium.org"), 802 GURL("https://www.chromium.org"),
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 EXPECT_THAT(request1->WaitForResult(), IsError(ERR_PAC_SCRIPT_TERMINATED)); 845 EXPECT_THAT(request1->WaitForResult(), IsError(ERR_PAC_SCRIPT_TERMINATED));
844 } 846 }
845 847
846 TEST_F(ProxyResolverFactoryMojoTest, GetProxyForURL_DeleteInCallback) { 848 TEST_F(ProxyResolverFactoryMojoTest, GetProxyForURL_DeleteInCallback) {
847 mock_proxy_resolver_.AddGetProxyAction(GetProxyForUrlAction::ReturnServers( 849 mock_proxy_resolver_.AddGetProxyAction(GetProxyForUrlAction::ReturnServers(
848 GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); 850 GURL(kExampleUrl), ProxyServersFromPacString("DIRECT")));
849 CreateProxyResolver(); 851 CreateProxyResolver();
850 852
851 ProxyInfo results; 853 ProxyInfo results;
852 TestCompletionCallback callback; 854 TestCompletionCallback callback;
853 ProxyResolver::RequestHandle handle; 855 std::unique_ptr<ProxyResolver::Request> request;
854 NetLogWithSource net_log; 856 NetLogWithSource net_log;
855 EXPECT_EQ( 857 EXPECT_EQ(
856 OK, 858 OK,
857 callback.GetResult(proxy_resolver_mojo_->GetProxyForURL( 859 callback.GetResult(proxy_resolver_mojo_->GetProxyForURL(
858 GURL(kExampleUrl), &results, 860 GURL(kExampleUrl), &results,
859 base::Bind(&ProxyResolverFactoryMojoTest::DeleteProxyResolverCallback, 861 base::Bind(&ProxyResolverFactoryMojoTest::DeleteProxyResolverCallback,
860 base::Unretained(this), callback.callback()), 862 base::Unretained(this), callback.callback()),
861 &handle, net_log))); 863 &request, net_log)));
862 on_delete_callback_.WaitForResult(); 864 on_delete_callback_.WaitForResult();
863 } 865 }
864 866
865 TEST_F(ProxyResolverFactoryMojoTest, 867 TEST_F(ProxyResolverFactoryMojoTest,
866 GetProxyForURL_DeleteInCallbackFromDisconnect) { 868 GetProxyForURL_DeleteInCallbackFromDisconnect) {
867 mock_proxy_resolver_.AddGetProxyAction( 869 mock_proxy_resolver_.AddGetProxyAction(
868 GetProxyForUrlAction::Disconnect(GURL(kExampleUrl))); 870 GetProxyForUrlAction::Disconnect(GURL(kExampleUrl)));
869 CreateProxyResolver(); 871 CreateProxyResolver();
870 872
871 ProxyInfo results; 873 ProxyInfo results;
872 TestCompletionCallback callback; 874 TestCompletionCallback callback;
873 ProxyResolver::RequestHandle handle; 875 std::unique_ptr<ProxyResolver::Request> request;
874 NetLogWithSource net_log; 876 NetLogWithSource net_log;
875 EXPECT_EQ( 877 EXPECT_EQ(
876 ERR_PAC_SCRIPT_TERMINATED, 878 ERR_PAC_SCRIPT_TERMINATED,
877 callback.GetResult(proxy_resolver_mojo_->GetProxyForURL( 879 callback.GetResult(proxy_resolver_mojo_->GetProxyForURL(
878 GURL(kExampleUrl), &results, 880 GURL(kExampleUrl), &results,
879 base::Bind(&ProxyResolverFactoryMojoTest::DeleteProxyResolverCallback, 881 base::Bind(&ProxyResolverFactoryMojoTest::DeleteProxyResolverCallback,
880 base::Unretained(this), callback.callback()), 882 base::Unretained(this), callback.callback()),
881 &handle, net_log))); 883 &request, net_log)));
882 on_delete_callback_.WaitForResult(); 884 on_delete_callback_.WaitForResult();
883 } 885 }
884 886
885 TEST_F(ProxyResolverFactoryMojoTest, GetProxyForURL_DnsRequest) { 887 TEST_F(ProxyResolverFactoryMojoTest, GetProxyForURL_DnsRequest) {
886 mock_proxy_resolver_.AddGetProxyAction( 888 mock_proxy_resolver_.AddGetProxyAction(
887 GetProxyForUrlAction::MakeDnsRequest(GURL(kExampleUrl))); 889 GetProxyForUrlAction::MakeDnsRequest(GURL(kExampleUrl)));
888 CreateProxyResolver(); 890 CreateProxyResolver();
889 891
890 std::unique_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); 892 std::unique_ptr<Request> request(MakeRequest(GURL(kExampleUrl)));
891 EXPECT_THAT(request->Resolve(), IsError(ERR_IO_PENDING)); 893 EXPECT_THAT(request->Resolve(), IsError(ERR_IO_PENDING));
892 EXPECT_EQ(LOAD_STATE_RESOLVING_PROXY_FOR_URL, request->load_state()); 894 EXPECT_EQ(LOAD_STATE_RESOLVING_PROXY_FOR_URL, request->load_state());
893 895
894 host_resolver_.waiter().WaitForEvent(MockHostResolver::DNS_REQUEST); 896 host_resolver_.waiter().WaitForEvent(MockHostResolver::DNS_REQUEST);
895 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT, request->load_state()); 897 EXPECT_EQ(LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT, request->load_state());
896 mock_proxy_resolver_.ClearBlockedClients(); 898 mock_proxy_resolver_.ClearBlockedClients();
897 request->WaitForResult(); 899 request->WaitForResult();
898 } 900 }
899 901
900 TEST_F(ProxyResolverFactoryMojoTest, DeleteResolver) { 902 TEST_F(ProxyResolverFactoryMojoTest, DeleteResolver) {
901 CreateProxyResolver(); 903 CreateProxyResolver();
902 proxy_resolver_mojo_.reset(); 904 proxy_resolver_mojo_.reset();
903 on_delete_callback_.WaitForResult(); 905 on_delete_callback_.WaitForResult();
904 } 906 }
905 } // namespace net 907 } // namespace net
OLDNEW
« no previous file with comments | « net/proxy/proxy_resolver_factory_mojo.cc ('k') | net/proxy/proxy_resolver_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698