| Index: chrome/browser/safe_browsing/protocol_manager.cc
|
| ===================================================================
|
| --- chrome/browser/safe_browsing/protocol_manager.cc (revision 106929)
|
| +++ chrome/browser/safe_browsing/protocol_manager.cc (working copy)
|
| @@ -21,6 +21,7 @@
|
| #include "chrome/common/chrome_version_info.h"
|
| #include "chrome/common/env_vars.h"
|
| #include "content/browser/browser_thread.h"
|
| +#include "content/common/net/url_fetcher.h"
|
| #include "net/base/escape.h"
|
| #include "net/base/load_flags.h"
|
| #include "net/url_request/url_request_context_getter.h"
|
| @@ -195,7 +196,7 @@
|
| IssueUpdateRequest();
|
| }
|
|
|
| -// URLFetcher::Delegate implementation -----------------------------------------
|
| +// content::URLFetcherDelegate implementation ----------------------------------
|
|
|
| // All SafeBrowsing request responses are handled here.
|
| // TODO(paulg): Clarify with the SafeBrowsing team whether a failed parse of a
|
| @@ -205,13 +206,7 @@
|
| // drop it. This isn't so bad because the next UPDATE_REQUEST we
|
| // do will report all the chunks we have. If that chunk is still
|
| // required, the SafeBrowsing servers will tell us to get it again.
|
| -void SafeBrowsingProtocolManager::OnURLFetchComplete(
|
| - const URLFetcher* source,
|
| - const GURL& url,
|
| - const net::URLRequestStatus& status,
|
| - int response_code,
|
| - const net::ResponseCookies& cookies,
|
| - const std::string& data) {
|
| +void SafeBrowsingProtocolManager::OnURLFetchComplete(const URLFetcher* source) {
|
| scoped_ptr<const URLFetcher> fetcher;
|
| bool parsed_ok = true;
|
| bool must_back_off = false; // Reduce SafeBrowsing service query frequency.
|
| @@ -234,10 +229,10 @@
|
| SafeBrowsingService::SafeBrowsingCheck* check = it->second;
|
| std::vector<SBFullHashResult> full_hashes;
|
| bool can_cache = false;
|
| - if (response_code == 200 || response_code == 204) {
|
| + if (source->response_code() == 200 || source->response_code() == 204) {
|
| // For tracking our GetHash false positive (204) rate, compared to real
|
| // (200) responses.
|
| - if (response_code == 200)
|
| + if (source->response_code() == 200)
|
| RecordGetHashResult(check->is_download, GET_HASH_STATUS_200);
|
| else
|
| RecordGetHashResult(check->is_download, GET_HASH_STATUS_204);
|
| @@ -246,11 +241,14 @@
|
| gethash_back_off_mult_ = 1;
|
| bool re_key = false;
|
| SafeBrowsingProtocolParser parser;
|
| - parsed_ok = parser.ParseGetHash(data.data(),
|
| - static_cast<int>(data.length()),
|
| - client_key_,
|
| - &re_key,
|
| - &full_hashes);
|
| + std::string data;
|
| + source->GetResponseAsString(&data);
|
| + parsed_ok = parser.ParseGetHash(
|
| + data.data(),
|
| + static_cast<int>(data.length()),
|
| + client_key_,
|
| + &re_key,
|
| + &full_hashes);
|
| if (!parsed_ok) {
|
| // If we fail to parse it, we must still inform the SafeBrowsingService
|
| // so that it doesn't hold up the user's request indefinitely. Not sure
|
| @@ -262,12 +260,12 @@
|
| }
|
| } else {
|
| HandleGetHashError(Time::Now());
|
| - if (status.status() == net::URLRequestStatus::FAILED) {
|
| + if (source->status().status() == net::URLRequestStatus::FAILED) {
|
| VLOG(1) << "SafeBrowsing GetHash request for: " << source->url()
|
| - << " failed with error: " << status.error();
|
| + << " failed with error: " << source->status().error();
|
| } else {
|
| VLOG(1) << "SafeBrowsing GetHash request for: " << source->url()
|
| - << " failed with error: " << response_code;
|
| + << " failed with error: " << source->response_code();
|
| }
|
| }
|
|
|
| @@ -292,11 +290,12 @@
|
| update_timer_.Stop();
|
| }
|
|
|
| - if (response_code == 200) {
|
| + if (source->response_code() == 200) {
|
| // We have data from the SafeBrowsing service.
|
| - parsed_ok = HandleServiceResponse(source->url(),
|
| - data.data(),
|
| - static_cast<int>(data.length()));
|
| + std::string data;
|
| + source->GetResponseAsString(&data);
|
| + parsed_ok = HandleServiceResponse(
|
| + source->url(), data.data(), static_cast<int>(data.length()));
|
| if (!parsed_ok) {
|
| VLOG(1) << "SafeBrowsing request for: " << source->url()
|
| << " failed parse.";
|
| @@ -336,12 +335,12 @@
|
| if (request_type_ == CHUNK_REQUEST)
|
| chunk_request_urls_.clear();
|
| UpdateFinished(false);
|
| - if (status.status() == net::URLRequestStatus::FAILED) {
|
| + if (source->status().status() == net::URLRequestStatus::FAILED) {
|
| VLOG(1) << "SafeBrowsing request for: " << source->url()
|
| - << " failed with error: " << status.error();
|
| + << " failed with error: " << source->status().error();
|
| } else {
|
| VLOG(1) << "SafeBrowsing request for: " << source->url()
|
| - << " failed with error: " << response_code;
|
| + << " failed with error: " << source->response_code();
|
| }
|
| }
|
| }
|
|
|