| OLD | NEW |
| 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/renderer_host/safe_browsing_resource_throttle.h" | 5 #include "chrome/browser/renderer_host/safe_browsing_resource_throttle.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_contents.h" | 9 #include "chrome/browser/prerender/prerender_contents.h" |
| 10 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 10 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
| 11 #include "content/public/browser/browser_thread.h" | 11 #include "content/public/browser/browser_thread.h" |
| 12 #include "content/public/browser/render_view_host.h" | 12 #include "content/public/browser/render_view_host.h" |
| 13 #include "content/public/browser/resource_controller.h" | 13 #include "content/public/browser/resource_controller.h" |
| 14 #include "content/public/browser/resource_request_info.h" | 14 #include "content/public/browser/resource_request_info.h" |
| 15 #include "content/public/browser/web_contents.h" | 15 #include "content/public/browser/web_contents.h" |
| 16 #include "net/base/load_flags.h" | 16 #include "net/base/load_flags.h" |
| 17 #include "net/url_request/redirect_info.h" |
| 17 #include "net/url_request/url_request.h" | 18 #include "net/url_request/url_request.h" |
| 18 | 19 |
| 19 // Maximum time in milliseconds to wait for the safe browsing service to | 20 // Maximum time in milliseconds to wait for the safe browsing service to |
| 20 // verify a URL. After this amount of time the outstanding check will be | 21 // verify a URL. After this amount of time the outstanding check will be |
| 21 // aborted, and the URL will be treated as if it were safe. | 22 // aborted, and the URL will be treated as if it were safe. |
| 22 static const int kCheckUrlTimeoutMs = 5000; | 23 static const int kCheckUrlTimeoutMs = 5000; |
| 23 | 24 |
| 24 // TODO(eroman): Downgrade these CHECK()s to DCHECKs once there is more | 25 // TODO(eroman): Downgrade these CHECK()s to DCHECKs once there is more |
| 25 // unit test coverage. | 26 // unit test coverage. |
| 26 | 27 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 47 // We need to check the new URL before starting the request. | 48 // We need to check the new URL before starting the request. |
| 48 if (CheckUrl(request_->url())) | 49 if (CheckUrl(request_->url())) |
| 49 return; | 50 return; |
| 50 | 51 |
| 51 // If the URL couldn't be verified synchronously, defer starting the | 52 // If the URL couldn't be verified synchronously, defer starting the |
| 52 // request until the check has completed. | 53 // request until the check has completed. |
| 53 defer_state_ = DEFERRED_START; | 54 defer_state_ = DEFERRED_START; |
| 54 *defer = true; | 55 *defer = true; |
| 55 } | 56 } |
| 56 | 57 |
| 57 void SafeBrowsingResourceThrottle::WillRedirectRequest(const GURL& new_url, | 58 void SafeBrowsingResourceThrottle::WillRedirectRequest( |
| 58 bool* defer) { | 59 const net::RedirectInfo& redirect_info, |
| 60 bool* defer) { |
| 59 CHECK(state_ == STATE_NONE); | 61 CHECK(state_ == STATE_NONE); |
| 60 CHECK(defer_state_ == DEFERRED_NONE); | 62 CHECK(defer_state_ == DEFERRED_NONE); |
| 61 | 63 |
| 62 // Save the redirect urls for possible malware detail reporting later. | 64 // Save the redirect urls for possible malware detail reporting later. |
| 63 redirect_urls_.push_back(new_url); | 65 redirect_urls_.push_back(redirect_info.new_url); |
| 64 | 66 |
| 65 // We need to check the new URL before following the redirect. | 67 // We need to check the new URL before following the redirect. |
| 66 if (CheckUrl(new_url)) | 68 if (CheckUrl(redirect_info.new_url)) |
| 67 return; | 69 return; |
| 68 | 70 |
| 69 // If the URL couldn't be verified synchronously, defer following the | 71 // If the URL couldn't be verified synchronously, defer following the |
| 70 // redirect until the SafeBrowsing check is complete. Store the redirect | 72 // redirect until the SafeBrowsing check is complete. Store the redirect |
| 71 // context so we can pass it on to other handlers once we have completed | 73 // context so we can pass it on to other handlers once we have completed |
| 72 // our check. | 74 // our check. |
| 73 defer_state_ = DEFERRED_REDIRECT; | 75 defer_state_ = DEFERRED_REDIRECT; |
| 74 *defer = true; | 76 *defer = true; |
| 75 } | 77 } |
| 76 | 78 |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 url_being_checked_, SB_THREAT_TYPE_SAFE, std::string()); | 224 url_being_checked_, SB_THREAT_TYPE_SAFE, std::string()); |
| 223 } | 225 } |
| 224 | 226 |
| 225 void SafeBrowsingResourceThrottle::ResumeRequest() { | 227 void SafeBrowsingResourceThrottle::ResumeRequest() { |
| 226 CHECK(state_ == STATE_NONE); | 228 CHECK(state_ == STATE_NONE); |
| 227 CHECK(defer_state_ != DEFERRED_NONE); | 229 CHECK(defer_state_ != DEFERRED_NONE); |
| 228 | 230 |
| 229 defer_state_ = DEFERRED_NONE; | 231 defer_state_ = DEFERRED_NONE; |
| 230 controller()->Resume(); | 232 controller()->Resume(); |
| 231 } | 233 } |
| OLD | NEW |