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

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

Issue 7408001: If we show a SafeBrowsing warning we always send the client-side detection (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Merge Created 9 years, 5 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 #include "chrome/browser/safe_browsing/client_side_detection_service.h" 5 #include "chrome/browser/safe_browsing/client_side_detection_service.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_util_proxy.h" 8 #include "base/file_util_proxy.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/time.h" 10 #include "base/time.h"
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 ClientPhishingRequest* verdict, 257 ClientPhishingRequest* verdict,
258 ClientReportPhishingRequestCallback* callback) { 258 ClientReportPhishingRequestCallback* callback) {
259 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 259 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
260 scoped_ptr<ClientPhishingRequest> request(verdict); 260 scoped_ptr<ClientPhishingRequest> request(verdict);
261 scoped_ptr<ClientReportPhishingRequestCallback> cb(callback); 261 scoped_ptr<ClientReportPhishingRequestCallback> cb(callback);
262 262
263 std::string request_data; 263 std::string request_data;
264 if (!request->SerializeToString(&request_data)) { 264 if (!request->SerializeToString(&request_data)) {
265 UMA_HISTOGRAM_COUNTS("SBClientPhishing.RequestNotSerialized", 1); 265 UMA_HISTOGRAM_COUNTS("SBClientPhishing.RequestNotSerialized", 1);
266 VLOG(1) << "Unable to serialize the CSD request. Proto file changed?"; 266 VLOG(1) << "Unable to serialize the CSD request. Proto file changed?";
267 cb->Run(GURL(request->url()), false); 267 if (cb.get()) {
268 cb->Run(GURL(request->url()), false);
269 }
268 return; 270 return;
269 } 271 }
270 272
271 URLFetcher* fetcher = URLFetcher::Create(0 /* ID is not used */, 273 URLFetcher* fetcher = URLFetcher::Create(0 /* ID is not used */,
272 GURL(kClientReportPhishingUrl), 274 GURL(kClientReportPhishingUrl),
273 URLFetcher::POST, 275 URLFetcher::POST,
274 this); 276 this);
275 277
276 // Remember which callback and URL correspond to the current fetcher object. 278 // Remember which callback and URL correspond to the current fetcher object.
277 ClientReportInfo* info = new ClientReportInfo; 279 ClientReportInfo* info = new ClientReportInfo;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 331
330 void ClientSideDetectionService::HandlePhishingVerdict( 332 void ClientSideDetectionService::HandlePhishingVerdict(
331 const URLFetcher* source, 333 const URLFetcher* source,
332 const GURL& url, 334 const GURL& url,
333 const net::URLRequestStatus& status, 335 const net::URLRequestStatus& status,
334 int response_code, 336 int response_code,
335 const net::ResponseCookies& cookies, 337 const net::ResponseCookies& cookies,
336 const std::string& data) { 338 const std::string& data) {
337 ClientPhishingResponse response; 339 ClientPhishingResponse response;
338 scoped_ptr<ClientReportInfo> info(client_phishing_reports_[source]); 340 scoped_ptr<ClientReportInfo> info(client_phishing_reports_[source]);
341 bool is_phishing = false;
339 if (status.is_success() && RC_REQUEST_OK == response_code && 342 if (status.is_success() && RC_REQUEST_OK == response_code &&
340 response.ParseFromString(data)) { 343 response.ParseFromString(data)) {
341 // Cache response, possibly flushing an old one. 344 // Cache response, possibly flushing an old one.
342 cache_[info->phishing_url] = 345 cache_[info->phishing_url] =
343 make_linked_ptr(new CacheState(response.phishy(), base::Time::Now())); 346 make_linked_ptr(new CacheState(response.phishy(), base::Time::Now()));
344 info->callback->Run(info->phishing_url, response.phishy()); 347 is_phishing = response.phishy();
345 } else { 348 } else {
346 DLOG(ERROR) << "Unable to get the server verdict for URL: " 349 DLOG(ERROR) << "Unable to get the server verdict for URL: "
347 << info->phishing_url << " status: " << status.status() << " " 350 << info->phishing_url << " status: " << status.status() << " "
348 << "response_code:" << response_code; 351 << "response_code:" << response_code;
349 info->callback->Run(info->phishing_url, false); 352 }
353 if (info->callback.get()) {
354 info->callback->Run(info->phishing_url, is_phishing);
350 } 355 }
351 client_phishing_reports_.erase(source); 356 client_phishing_reports_.erase(source);
352 delete source; 357 delete source;
353 } 358 }
354 359
355 bool ClientSideDetectionService::IsInCache(const GURL& url) { 360 bool ClientSideDetectionService::IsInCache(const GURL& url) {
356 UpdateCache(); 361 UpdateCache();
357 362
358 return cache_.find(url) != cache_.end(); 363 return cache_.find(url) != cache_.end();
359 } 364 }
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
464 // |size| bits sets to one. 469 // |size| bits sets to one.
465 std::string mask(net::kIPv6AddressSize, '\x00'); 470 std::string mask(net::kIPv6AddressSize, '\x00');
466 mask.replace(0, size / 8, size / 8, '\xFF'); 471 mask.replace(0, size / 8, size / 8, '\xFF');
467 if (size % 8) { 472 if (size % 8) {
468 mask[size / 8] = 0xFF << (8 - (size % 8)); 473 mask[size / 8] = 0xFF << (8 - (size % 8));
469 } 474 }
470 (*bad_subnets)[mask].insert(model.bad_subnet(i).prefix()); 475 (*bad_subnets)[mask].insert(model.bad_subnet(i).prefix());
471 } 476 }
472 } 477 }
473 } // namespace safe_browsing 478 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/client_side_detection_service.h ('k') | chrome/browser/safe_browsing/safe_browsing_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698