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

Side by Side Diff: chrome/browser/automation/url_request_automation_job.cc

Issue 9580002: Add ResourceRequestInfo. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/DEPS ('k') | chrome/browser/chromeos/gview_request_interceptor.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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/automation/url_request_automation_job.h" 5 #include "chrome/browser/automation/url_request_automation_job.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/time.h" 10 #include "base/time.h"
11 #include "chrome/browser/automation/automation_resource_message_filter.h" 11 #include "chrome/browser/automation/automation_resource_message_filter.h"
12 #include "chrome/common/automation_messages.h" 12 #include "chrome/common/automation_messages.h"
13 #include "content/browser/renderer_host/resource_dispatcher_host.h"
14 #include "content/browser/renderer_host/resource_dispatcher_host_request_info.h"
15 #include "content/public/browser/browser_thread.h" 13 #include "content/public/browser/browser_thread.h"
16 #include "content/public/browser/render_view_host.h" 14 #include "content/public/browser/render_view_host.h"
15 #include "content/public/browser/resource_request_info.h"
17 #include "net/base/cookie_monster.h" 16 #include "net/base/cookie_monster.h"
18 #include "net/base/host_port_pair.h" 17 #include "net/base/host_port_pair.h"
19 #include "net/base/io_buffer.h" 18 #include "net/base/io_buffer.h"
20 #include "net/base/net_errors.h" 19 #include "net/base/net_errors.h"
21 #include "net/http/http_request_headers.h" 20 #include "net/http/http_request_headers.h"
22 #include "net/http/http_response_headers.h" 21 #include "net/http/http_response_headers.h"
23 #include "net/http/http_util.h" 22 #include "net/http/http_util.h"
24 #include "net/url_request/url_request_context.h" 23 #include "net/url_request/url_request_context.h"
25 24
26 using base::Time; 25 using base::Time;
27 using base::TimeDelta; 26 using base::TimeDelta;
28 using content::BrowserThread; 27 using content::BrowserThread;
28 using content::ResourceRequestInfo;
29 29
30 // The list of filtered headers that are removed from requests sent via 30 // The list of filtered headers that are removed from requests sent via
31 // StartAsync(). These must be lower case. 31 // StartAsync(). These must be lower case.
32 static const char* const kFilteredHeaderStrings[] = { 32 static const char* const kFilteredHeaderStrings[] = {
33 "connection", 33 "connection",
34 "cookie", 34 "cookie",
35 "expect", 35 "expect",
36 "max-forwards", 36 "max-forwards",
37 "proxy-authorization", 37 "proxy-authorization",
38 "referer", 38 "referer",
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 } 93 }
94 94
95 net::URLRequestJob* URLRequestAutomationJob::Factory( 95 net::URLRequestJob* URLRequestAutomationJob::Factory(
96 net::URLRequest* request, 96 net::URLRequest* request,
97 const std::string& scheme) { 97 const std::string& scheme) {
98 bool scheme_is_http = request->url().SchemeIs("http"); 98 bool scheme_is_http = request->url().SchemeIs("http");
99 bool scheme_is_https = request->url().SchemeIs("https"); 99 bool scheme_is_https = request->url().SchemeIs("https");
100 100
101 // Returning null here just means that the built-in handler will be used. 101 // Returning null here just means that the built-in handler will be used.
102 if (scheme_is_http || scheme_is_https) { 102 if (scheme_is_http || scheme_is_https) {
103 ResourceDispatcherHostRequestInfo* request_info = 103 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
104 ResourceDispatcherHost::InfoForRequest(request); 104 if (info) {
105 if (request_info) { 105 int child_id = info->GetChildID();
106 int child_id = request_info->child_id(); 106 int route_id = info->GetRouteID();
107 int route_id = request_info->route_id();
108 AutomationResourceMessageFilter::AutomationDetails details; 107 AutomationResourceMessageFilter::AutomationDetails details;
109 if (AutomationResourceMessageFilter::LookupRegisteredRenderView( 108 if (AutomationResourceMessageFilter::LookupRegisteredRenderView(
110 child_id, route_id, &details)) { 109 child_id, route_id, &details)) {
111 URLRequestAutomationJob* job = new URLRequestAutomationJob(request, 110 URLRequestAutomationJob* job = new URLRequestAutomationJob(request,
112 details.tab_handle, request_info->request_id(), details.filter, 111 details.tab_handle, info->GetRequestID(), details.filter,
113 details.is_pending_render_view); 112 details.is_pending_render_view);
114 return job; 113 return job;
115 } 114 }
116 } 115 }
117 116
118 if (scheme_is_http && old_http_factory_) 117 if (scheme_is_http && old_http_factory_)
119 return old_http_factory_(request, scheme); 118 return old_http_factory_(request, scheme);
120 else if (scheme_is_https && old_https_factory_) 119 else if (scheme_is_https && old_https_factory_)
121 return old_https_factory_(request, scheme); 120 return old_https_factory_(request, scheme);
122 } 121 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 *http_status_code = redirect_status_; 226 *http_status_code = redirect_status_;
228 *location = GURL(redirect_url_); 227 *location = GURL(redirect_url_);
229 return true; 228 return true;
230 } 229 }
231 230
232 uint64 URLRequestAutomationJob::GetUploadProgress() const { 231 uint64 URLRequestAutomationJob::GetUploadProgress() const {
233 if (request_ && request_->status().is_success()) { 232 if (request_ && request_->status().is_success()) {
234 // We don't support incremental progress notifications in ChromeFrame. When 233 // We don't support incremental progress notifications in ChromeFrame. When
235 // we receive a response for the POST request from Chromeframe, it means 234 // we receive a response for the POST request from Chromeframe, it means
236 // that the upload is fully complete. 235 // that the upload is fully complete.
237 ResourceDispatcherHostRequestInfo* request_info = 236 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_);
238 ResourceDispatcherHost::InfoForRequest(request_); 237 if (info) {
239 if (request_info) { 238 return info->GetUploadSize();
240 return request_info->upload_size();
241 } 239 }
242 } 240 }
243 return 0; 241 return 0;
244 } 242 }
245 243
246 net::HostPortPair URLRequestAutomationJob::GetSocketAddress() const { 244 net::HostPortPair URLRequestAutomationJob::GetSocketAddress() const {
247 return socket_address_; 245 return socket_address_;
248 } 246 }
249 247
250 bool URLRequestAutomationJob::MayFilterMessage(const IPC::Message& message, 248 bool URLRequestAutomationJob::MayFilterMessage(const IPC::Message& message,
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 437
440 // The referrer header must be suppressed if the preceding URL was 438 // The referrer header must be suppressed if the preceding URL was
441 // a secure one and the new one is not. 439 // a secure one and the new one is not.
442 if (referrer.SchemeIsSecure() && !request_->url().SchemeIsSecure()) { 440 if (referrer.SchemeIsSecure() && !request_->url().SchemeIsSecure()) {
443 DVLOG(1) << "Suppressing referrer header since going from secure to " 441 DVLOG(1) << "Suppressing referrer header since going from secure to "
444 "non-secure"; 442 "non-secure";
445 referrer = GURL(); 443 referrer = GURL();
446 } 444 }
447 445
448 // Get the resource type (main_frame/script/image/stylesheet etc. 446 // Get the resource type (main_frame/script/image/stylesheet etc.
449 ResourceDispatcherHostRequestInfo* request_info = 447 const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request_);
450 ResourceDispatcherHost::InfoForRequest(request_);
451 ResourceType::Type resource_type = ResourceType::MAIN_FRAME; 448 ResourceType::Type resource_type = ResourceType::MAIN_FRAME;
452 if (request_info) { 449 if (info) {
453 resource_type = request_info->resource_type(); 450 resource_type = info->GetResourceType();
454 } 451 }
455 452
456 // Ask automation to start this request. 453 // Ask automation to start this request.
457 AutomationURLRequest automation_request; 454 AutomationURLRequest automation_request;
458 automation_request.url = request_->url().spec(); 455 automation_request.url = request_->url().spec();
459 automation_request.method = request_->method(); 456 automation_request.method = request_->method();
460 automation_request.referrer = referrer.spec(); 457 automation_request.referrer = referrer.spec();
461 automation_request.extra_request_headers = new_request_headers.ToString(); 458 automation_request.extra_request_headers = new_request_headers.ToString();
462 automation_request.upload_data =request_->get_upload(); 459 automation_request.upload_data =request_->get_upload();
463 automation_request.resource_type = resource_type; 460 automation_request.resource_type = resource_type;
(...skipping 25 matching lines...) Expand all
489 if (!is_done()) { 486 if (!is_done()) {
490 NotifyDone(request_status_); 487 NotifyDone(request_status_);
491 } 488 }
492 // Reset any pending reads. 489 // Reset any pending reads.
493 if (pending_buf_) { 490 if (pending_buf_) {
494 pending_buf_ = NULL; 491 pending_buf_ = NULL;
495 pending_buf_size_ = 0; 492 pending_buf_size_ = 0;
496 NotifyReadComplete(0); 493 NotifyReadComplete(0);
497 } 494 }
498 } 495 }
OLDNEW
« no previous file with comments | « chrome/browser/DEPS ('k') | chrome/browser/chromeos/gview_request_interceptor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698