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

Side by Side Diff: content/browser/loader/resource_hints_impl.cc

Issue 2043753002: Declarative resource hints go through mojo IPC to //content Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove gmocking + add another browser test Created 4 years, 6 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/memory/ptr_util.h" 5 #include "base/memory/ptr_util.h"
6 #include "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "content/public/browser/browser_thread.h" 7 #include "content/public/browser/browser_thread.h"
8 #include "content/public/browser/resource_context.h" 8 #include "content/public/browser/resource_context.h"
9 #include "content/public/browser/resource_hints.h" 9 #include "content/public/browser/resource_hints.h"
10 #include "net/base/address_list.h" 10 #include "net/base/address_list.h"
(...skipping 11 matching lines...) Expand all
22 22
23 namespace { 23 namespace {
24 24
25 // Note that the lifetime of |request| and |addresses| is managed by the caller. 25 // Note that the lifetime of |request| and |addresses| is managed by the caller.
26 void OnResolveComplete(net::SingleRequestHostResolver* request, 26 void OnResolveComplete(net::SingleRequestHostResolver* request,
27 net::AddressList* addresses, 27 net::AddressList* addresses,
28 const net::CompletionCallback& callback, 28 const net::CompletionCallback& callback,
29 int result) { 29 int result) {
30 // Plumb the resolution result into the callback if future consumers want 30 // Plumb the resolution result into the callback if future consumers want
31 // that information. 31 // that information.
32 callback.Run(result); 32 if (!callback.is_null())
33 callback.Run(result);
34 }
35
36 bool ValidUrl(const GURL& url) {
37 return url.is_valid() && url.has_host() && url.has_scheme() &&
38 url.SchemeIsHTTPOrHTTPS();
33 } 39 }
34 40
35 } // namespace 41 } // namespace
36 42
37 void PreconnectUrl(content::ResourceContext* resource_context, 43 void PreconnectUrl(content::ResourceContext* resource_context,
38 const GURL& url, 44 const GURL& url,
39 const GURL& first_party_for_cookies, 45 const GURL& first_party_for_cookies,
40 int count, 46 int count,
41 bool allow_credentials, 47 bool allow_credentials,
42 net::HttpRequestInfo::RequestMotivation motivation) { 48 net::HttpRequestInfo::RequestMotivation motivation) {
43 DCHECK_CURRENTLY_ON(BrowserThread::IO); 49 DCHECK_CURRENTLY_ON(BrowserThread::IO);
44 DCHECK(resource_context); 50 DCHECK(resource_context);
45 51
52 if (!ValidUrl(url))
53 return;
54
46 net::URLRequestContext* context = resource_context->GetRequestContext(); 55 net::URLRequestContext* context = resource_context->GetRequestContext();
47 net::HttpTransactionFactory* factory = context->http_transaction_factory(); 56 net::HttpTransactionFactory* factory = context->http_transaction_factory();
48 net::HttpNetworkSession* session = factory->GetSession(); 57 net::HttpNetworkSession* session = factory->GetSession();
49 58
50 std::string user_agent; 59 std::string user_agent;
51 if (context->http_user_agent_settings()) 60 if (context->http_user_agent_settings())
52 user_agent = context->http_user_agent_settings()->GetUserAgent(); 61 user_agent = context->http_user_agent_settings()->GetUserAgent();
53 net::HttpRequestInfo request_info; 62 net::HttpRequestInfo request_info;
54 request_info.url = url; 63 request_info.url = url;
55 request_info.method = "GET"; 64 request_info.method = "GET";
(...skipping 18 matching lines...) Expand all
74 net::HttpStreamFactory* http_stream_factory = session->http_stream_factory(); 83 net::HttpStreamFactory* http_stream_factory = session->http_stream_factory();
75 http_stream_factory->PreconnectStreams(count, request_info); 84 http_stream_factory->PreconnectStreams(count, request_info);
76 } 85 }
77 86
78 int PreresolveUrl(content::ResourceContext* resource_context, 87 int PreresolveUrl(content::ResourceContext* resource_context,
79 const GURL& url, 88 const GURL& url,
80 const net::CompletionCallback& callback) { 89 const net::CompletionCallback& callback) {
81 DCHECK_CURRENTLY_ON(BrowserThread::IO); 90 DCHECK_CURRENTLY_ON(BrowserThread::IO);
82 DCHECK(resource_context); 91 DCHECK(resource_context);
83 92
93 if (!ValidUrl(url))
94 return net::ERR_INVALID_URL;
95
84 net::AddressList* addresses = new net::AddressList; 96 net::AddressList* addresses = new net::AddressList;
85 net::SingleRequestHostResolver* resolver = 97 net::SingleRequestHostResolver* resolver =
86 new net::SingleRequestHostResolver(resource_context->GetHostResolver()); 98 new net::SingleRequestHostResolver(resource_context->GetHostResolver());
87 net::HostResolver::RequestInfo resolve_info(net::HostPortPair::FromURL(url)); 99 net::HostResolver::RequestInfo resolve_info(net::HostPortPair::FromURL(url));
88 return resolver->Resolve(resolve_info, net::IDLE, addresses, 100 return resolver->Resolve(resolve_info, net::IDLE, addresses,
89 base::Bind(&OnResolveComplete, base::Owned(resolver), 101 base::Bind(&OnResolveComplete, base::Owned(resolver),
90 base::Owned(addresses), callback), 102 base::Owned(addresses), callback),
91 net::BoundNetLog()); 103 net::BoundNetLog());
92 } 104 }
93 105
94 } // namespace content 106 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698