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

Side by Side Diff: chrome/browser/renderer_host/safe_browsing_resource_handler.cc

Issue 8680036: Move ResourceResponse struct into the Content API, since it's used in Chrome. While at it, I also... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: add gypi changes Created 9 years 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/renderer_host/safe_browsing_resource_handler.h" 5 #include "chrome/browser/renderer_host/safe_browsing_resource_handler.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/prerender/prerender_final_status.h" 9 #include "chrome/browser/prerender/prerender_final_status.h"
10 #include "chrome/browser/prerender/prerender_tracker.h" 10 #include "chrome/browser/prerender/prerender_tracker.h"
11 #include "chrome/browser/renderer_host/chrome_url_request_user_data.h" 11 #include "chrome/browser/renderer_host/chrome_url_request_user_data.h"
12 #include "content/browser/renderer_host/global_request_id.h" 12 #include "content/browser/renderer_host/global_request_id.h"
13 #include "content/browser/renderer_host/resource_dispatcher_host.h" 13 #include "content/browser/renderer_host/resource_dispatcher_host.h"
14 #include "content/browser/renderer_host/resource_message_filter.h" 14 #include "content/browser/renderer_host/resource_message_filter.h"
15 #include "content/common/resource_response.h" 15 #include "content/public/common/resource_response.h"
16 #include "net/base/io_buffer.h" 16 #include "net/base/io_buffer.h"
17 #include "net/base/load_flags.h" 17 #include "net/base/load_flags.h"
18 #include "net/base/net_errors.h" 18 #include "net/base/net_errors.h"
19 #include "net/url_request/url_request.h" 19 #include "net/url_request/url_request.h"
20 20
21 // Maximum time in milliseconds to wait for the safe browsing service to 21 // Maximum time in milliseconds to wait for the safe browsing service to
22 // verify a URL. After this amount of time the outstanding check will be 22 // verify a URL. After this amount of time the outstanding check will be
23 // aborted, and the URL will be treated as if it were safe. 23 // aborted, and the URL will be treated as if it were safe.
24 static const int kCheckUrlTimeoutMs = 5000; 24 static const int kCheckUrlTimeoutMs = 5000;
25 25
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 bool SafeBrowsingResourceHandler::OnUploadProgress(int request_id, 64 bool SafeBrowsingResourceHandler::OnUploadProgress(int request_id,
65 uint64 position, 65 uint64 position,
66 uint64 size) { 66 uint64 size) {
67 return next_handler_->OnUploadProgress(request_id, position, size); 67 return next_handler_->OnUploadProgress(request_id, position, size);
68 } 68 }
69 69
70 bool SafeBrowsingResourceHandler::OnRequestRedirected( 70 bool SafeBrowsingResourceHandler::OnRequestRedirected(
71 int request_id, 71 int request_id,
72 const GURL& new_url, 72 const GURL& new_url,
73 ResourceResponse* response, 73 content::ResourceResponse* response,
74 bool* defer) { 74 bool* defer) {
75 CHECK(state_ == STATE_NONE); 75 CHECK(state_ == STATE_NONE);
76 CHECK(defer_state_ == DEFERRED_NONE); 76 CHECK(defer_state_ == DEFERRED_NONE);
77 77
78 // Save the redirect urls for possible malware detail reporting later. 78 // Save the redirect urls for possible malware detail reporting later.
79 redirect_urls_.push_back(new_url); 79 redirect_urls_.push_back(new_url);
80 80
81 // We need to check the new URL before following the redirect. 81 // We need to check the new URL before following the redirect.
82 if (CheckUrl(new_url)) { 82 if (CheckUrl(new_url)) {
83 return next_handler_->OnRequestRedirected( 83 return next_handler_->OnRequestRedirected(
84 request_id, new_url, response, defer); 84 request_id, new_url, response, defer);
85 } 85 }
86 86
87 // If the URL couldn't be verified synchronously, defer following the 87 // If the URL couldn't be verified synchronously, defer following the
88 // redirect until the SafeBrowsing check is complete. Store the redirect 88 // redirect until the SafeBrowsing check is complete. Store the redirect
89 // context so we can pass it on to other handlers once we have completed 89 // context so we can pass it on to other handlers once we have completed
90 // our check. 90 // our check.
91 defer_state_ = DEFERRED_REDIRECT; 91 defer_state_ = DEFERRED_REDIRECT;
92 deferred_request_id_ = request_id; 92 deferred_request_id_ = request_id;
93 deferred_url_ = new_url; 93 deferred_url_ = new_url;
94 deferred_redirect_response_ = response; 94 deferred_redirect_response_ = response;
95 *defer = true; 95 *defer = true;
96 96
97 return true; 97 return true;
98 } 98 }
99 99
100 bool SafeBrowsingResourceHandler::OnResponseStarted( 100 bool SafeBrowsingResourceHandler::OnResponseStarted(
101 int request_id, ResourceResponse* response) { 101 int request_id, content::ResourceResponse* response) {
102 CHECK(state_ == STATE_NONE); 102 CHECK(state_ == STATE_NONE);
103 CHECK(defer_state_ == DEFERRED_NONE); 103 CHECK(defer_state_ == DEFERRED_NONE);
104 return next_handler_->OnResponseStarted(request_id, response); 104 return next_handler_->OnResponseStarted(request_id, response);
105 } 105 }
106 106
107 void SafeBrowsingResourceHandler::OnCheckUrlTimeout() { 107 void SafeBrowsingResourceHandler::OnCheckUrlTimeout() {
108 CHECK(state_ == STATE_CHECKING_URL); 108 CHECK(state_ == STATE_CHECKING_URL);
109 CHECK(defer_state_ != DEFERRED_NONE); 109 CHECK(defer_state_ != DEFERRED_NONE);
110 safe_browsing_->CancelCheck(this); 110 safe_browsing_->CancelCheck(this);
111 OnBrowseUrlCheckResult(deferred_url_, SafeBrowsingService::SAFE); 111 OnBrowseUrlCheckResult(deferred_url_, SafeBrowsingService::SAFE);
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 rdh_->StartDeferredRequest(render_process_host_id_, request_id); 327 rdh_->StartDeferredRequest(render_process_host_id_, request_id);
328 } 328 }
329 329
330 void SafeBrowsingResourceHandler::ResumeRedirect() { 330 void SafeBrowsingResourceHandler::ResumeRedirect() {
331 CHECK(defer_state_ == DEFERRED_REDIRECT); 331 CHECK(defer_state_ == DEFERRED_REDIRECT);
332 defer_state_ = DEFERRED_NONE; 332 defer_state_ = DEFERRED_NONE;
333 333
334 // Retrieve the details for the paused OnReceivedRedirect(). 334 // Retrieve the details for the paused OnReceivedRedirect().
335 int request_id = deferred_request_id_; 335 int request_id = deferred_request_id_;
336 GURL redirect_url = deferred_url_; 336 GURL redirect_url = deferred_url_;
337 scoped_refptr<ResourceResponse> redirect_response = 337 scoped_refptr<content::ResourceResponse> redirect_response =
338 deferred_redirect_response_; 338 deferred_redirect_response_;
339 339
340 ClearDeferredRequestInfo(); 340 ClearDeferredRequestInfo();
341 341
342 // Give the other resource handlers a chance to handle the redirect. 342 // Give the other resource handlers a chance to handle the redirect.
343 bool defer = false; 343 bool defer = false;
344 // TODO(eroman): the return value is being lost here. Should 344 // TODO(eroman): the return value is being lost here. Should
345 // use it to cancel the request. 345 // use it to cancel the request.
346 next_handler_->OnRequestRedirected(request_id, redirect_url, 346 next_handler_->OnRequestRedirected(request_id, redirect_url,
347 redirect_response, &defer); 347 redirect_response, &defer);
348 if (!defer) { 348 if (!defer) {
349 rdh_->FollowDeferredRedirect(render_process_host_id_, request_id, 349 rdh_->FollowDeferredRedirect(render_process_host_id_, request_id,
350 false, GURL()); 350 false, GURL());
351 } 351 }
352 } 352 }
353 353
354 void SafeBrowsingResourceHandler::ClearDeferredRequestInfo() { 354 void SafeBrowsingResourceHandler::ClearDeferredRequestInfo() {
355 deferred_request_id_ = -1; 355 deferred_request_id_ = -1;
356 deferred_url_ = GURL(); 356 deferred_url_ = GURL();
357 deferred_redirect_response_ = NULL; 357 deferred_redirect_response_ = NULL;
358 } 358 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/safe_browsing_resource_handler.h ('k') | content/browser/debugger/devtools_netlog_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698