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

Side by Side Diff: chrome/browser/safe_browsing/malware_details_cache.cc

Issue 8375039: Create a content::UrlFetcher interface that lives in content/public/common and convert users to i... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: review comments Created 9 years, 2 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
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 // Implementation of the MalwareDetails class. 5 // Implementation of the MalwareDetails class.
6 6
7 #include "chrome/browser/safe_browsing/malware_details.h" 7 #include "chrome/browser/safe_browsing/malware_details.h"
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 if (!request_context_getter_) { 78 if (!request_context_getter_) {
79 DVLOG(1) << "Missing request context getter"; 79 DVLOG(1) << "Missing request context getter";
80 AllDone(false); 80 AllDone(false);
81 return; 81 return;
82 } 82 }
83 83
84 current_fetch_.reset(new URLFetcher( 84 current_fetch_.reset(new URLFetcher(
85 GURL(resources_it_->first), 85 GURL(resources_it_->first),
86 URLFetcher::GET, 86 URLFetcher::GET,
87 this)); 87 this));
88 current_fetch_->set_request_context(request_context_getter_); 88 current_fetch_->SetRequestContext(request_context_getter_);
89 // Only from cache, and don't save cookies. 89 // Only from cache, and don't save cookies.
90 current_fetch_->set_load_flags(net::LOAD_ONLY_FROM_CACHE | 90 current_fetch_->SetLoadFlags(net::LOAD_ONLY_FROM_CACHE |
91 net::LOAD_DO_NOT_SAVE_COOKIES); 91 net::LOAD_DO_NOT_SAVE_COOKIES);
92 current_fetch_->set_automatically_retry_on_5xx(false); // No retries. 92 current_fetch_->SetAutomaticallyRetryOn5xx(false); // No retries.
93 current_fetch_->Start(); // OnURLFetchComplete will be called when done. 93 current_fetch_->Start(); // OnURLFetchComplete will be called when done.
94 } 94 }
95 95
96 ClientMalwareReportRequest::Resource* MalwareDetailsCacheCollector::GetResource( 96 ClientMalwareReportRequest::Resource* MalwareDetailsCacheCollector::GetResource(
97 const GURL& url) { 97 const GURL& url) {
98 safe_browsing::ResourceMap::iterator it = resources_->find(url.spec()); 98 safe_browsing::ResourceMap::iterator it = resources_->find(url.spec());
99 if (it != resources_->end()) { 99 if (it != resources_->end()) {
100 return it->second.get(); 100 return it->second.get();
101 } 101 }
102 return NULL; 102 return NULL;
103 } 103 }
104 104
105 void MalwareDetailsCacheCollector::OnURLFetchComplete( 105 void MalwareDetailsCacheCollector::OnURLFetchComplete(
106 const URLFetcher* source) { 106 const content::URLFetcher* source) {
107 DVLOG(1) << "OnUrlFetchComplete"; 107 DVLOG(1) << "OnUrlFetchComplete";
108 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 108 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
109 DCHECK(current_fetch_.get()); 109 DCHECK(current_fetch_.get());
110 if (source->status().status() != net::URLRequestStatus::SUCCESS && 110 if (source->GetStatus().status() != net::URLRequestStatus::SUCCESS &&
111 source->status().error() == net::ERR_CACHE_MISS) { 111 source->GetStatus().error() == net::ERR_CACHE_MISS) {
112 // Cache miss, skip this resource. 112 // Cache miss, skip this resource.
113 DVLOG(1) << "Cache miss for url: " << source->url(); 113 DVLOG(1) << "Cache miss for url: " << source->GetUrl();
114 AdvanceEntry(); 114 AdvanceEntry();
115 return; 115 return;
116 } 116 }
117 117
118 if (source->status().status() != net::URLRequestStatus::SUCCESS) { 118 if (source->GetStatus().status() != net::URLRequestStatus::SUCCESS) {
119 // Some other error occurred, e.g. the request could have been cancelled. 119 // Some other error occurred, e.g. the request could have been cancelled.
120 DVLOG(1) << "Unsuccessful fetch: " << source->url(); 120 DVLOG(1) << "Unsuccessful fetch: " << source->GetUrl();
121 AdvanceEntry(); 121 AdvanceEntry();
122 return; 122 return;
123 } 123 }
124 124
125 // Set the response headers and body to the right resource, which 125 // Set the response headers and body to the right resource, which
126 // might not be the same as the one we asked for. 126 // might not be the same as the one we asked for.
127 // For redirects, resources_it_->first != url.spec(). 127 // For redirects, resources_it_->first != url.spec().
128 ClientMalwareReportRequest::Resource* resource = GetResource(source->url()); 128 ClientMalwareReportRequest::Resource* resource =
129 GetResource(source->GetUrl());
129 if (!resource) { 130 if (!resource) {
130 DVLOG(1) << "Cannot find resource for url:" << source->url(); 131 DVLOG(1) << "Cannot find resource for url:" << source->GetUrl();
131 AdvanceEntry(); 132 AdvanceEntry();
132 return; 133 return;
133 } 134 }
134 135
135 ReadResponse(resource, source); 136 ReadResponse(resource, source);
136 std::string data; 137 std::string data;
137 source->GetResponseAsString(&data); 138 source->GetResponseAsString(&data);
138 ReadData(resource, data); 139 ReadData(resource, data);
139 AdvanceEntry(); 140 AdvanceEntry();
140 } 141 }
141 142
142 void MalwareDetailsCacheCollector::ReadResponse( 143 void MalwareDetailsCacheCollector::ReadResponse(
143 ClientMalwareReportRequest::Resource* pb_resource, 144 ClientMalwareReportRequest::Resource* pb_resource,
144 const URLFetcher* source) { 145 const content::URLFetcher* source) {
145 DVLOG(1) << "ReadResponse"; 146 DVLOG(1) << "ReadResponse";
146 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 147 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
147 net::HttpResponseHeaders* headers = source->response_headers(); 148 net::HttpResponseHeaders* headers = source->GetResponseHeaders();
148 if (!headers) { 149 if (!headers) {
149 DVLOG(1) << "Missing response headers."; 150 DVLOG(1) << "Missing response headers.";
150 return; 151 return;
151 } 152 }
152 153
153 ClientMalwareReportRequest::HTTPResponse* pb_response = 154 ClientMalwareReportRequest::HTTPResponse* pb_response =
154 pb_resource->mutable_response(); 155 pb_resource->mutable_response();
155 pb_response->mutable_firstline()->set_code(headers->response_code()); 156 pb_response->mutable_firstline()->set_code(headers->response_code());
156 void* iter = NULL; 157 void* iter = NULL;
157 std::string name, value; 158 std::string name, value;
158 while (headers->EnumerateHeaderLines(&iter, &name, &value)) { 159 while (headers->EnumerateHeaderLines(&iter, &name, &value)) {
159 ClientMalwareReportRequest::HTTPHeader* pb_header = 160 ClientMalwareReportRequest::HTTPHeader* pb_header =
160 pb_response->add_headers(); 161 pb_response->add_headers();
161 pb_header->set_name(name); 162 pb_header->set_name(name);
162 // Strip any Set-Cookie headers. 163 // Strip any Set-Cookie headers.
163 if (LowerCaseEqualsASCII(name, "set-cookie")) { 164 if (LowerCaseEqualsASCII(name, "set-cookie")) {
164 pb_header->set_value(""); 165 pb_header->set_value("");
165 } else { 166 } else {
166 pb_header->set_value(value); 167 pb_header->set_value(value);
167 } 168 }
168 } 169 }
169 170
170 if (!source->was_fetched_via_proxy()) { 171 if (!source->WasFetchedViaProxy()) {
171 pb_response->set_remote_ip(source->socket_address().ToString()); 172 pb_response->set_remote_ip(source->GetSocketAddress().ToString());
172 } 173 }
173 } 174 }
174 175
175 void MalwareDetailsCacheCollector::ReadData( 176 void MalwareDetailsCacheCollector::ReadData(
176 ClientMalwareReportRequest::Resource* pb_resource, 177 ClientMalwareReportRequest::Resource* pb_resource,
177 const std::string& data) { 178 const std::string& data) {
178 DVLOG(1) << "ReadData"; 179 DVLOG(1) << "ReadData";
179 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 180 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
180 ClientMalwareReportRequest::HTTPResponse* pb_response = 181 ClientMalwareReportRequest::HTTPResponse* pb_response =
181 pb_resource->mutable_response(); 182 pb_resource->mutable_response();
(...skipping 19 matching lines...) Expand all
201 base::Bind(&MalwareDetailsCacheCollector::OpenEntry, this)); 202 base::Bind(&MalwareDetailsCacheCollector::OpenEntry, this));
202 } 203 }
203 204
204 void MalwareDetailsCacheCollector::AllDone(bool success) { 205 void MalwareDetailsCacheCollector::AllDone(bool success) {
205 DVLOG(1) << "AllDone"; 206 DVLOG(1) << "AllDone";
206 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 207 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
207 *result_ = success; 208 *result_ = success;
208 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, callback_); 209 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, callback_);
209 callback_.Reset(); 210 callback_.Reset();
210 } 211 }
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/malware_details_cache.h ('k') | chrome/browser/safe_browsing/protocol_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698