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/safe_browsing/client_side_detection_service.h" | 5 #include "chrome/browser/safe_browsing/client_side_detection_service.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 FROM_HERE, | 266 FROM_HERE, |
267 base::Bind(&ClientSideDetectionService::StartFetchModel, | 267 base::Bind(&ClientSideDetectionService::StartFetchModel, |
268 weak_factory_.GetWeakPtr()), | 268 weak_factory_.GetWeakPtr()), |
269 base::TimeDelta::FromMilliseconds(delay_ms)); | 269 base::TimeDelta::FromMilliseconds(delay_ms)); |
270 } | 270 } |
271 | 271 |
272 void ClientSideDetectionService::StartFetchModel() { | 272 void ClientSideDetectionService::StartFetchModel() { |
273 if (enabled_) { | 273 if (enabled_) { |
274 // Start fetching the model either from the cache or possibly from the | 274 // Start fetching the model either from the cache or possibly from the |
275 // network if the model isn't in the cache. | 275 // network if the model isn't in the cache. |
276 model_fetcher_.reset(net::URLFetcher::Create( | 276 model_fetcher_ = net::URLFetcher::Create(0 /* ID used for testing */, |
277 0 /* ID used for testing */, GURL(kClientModelUrl), | 277 GURL(kClientModelUrl), |
278 net::URLFetcher::GET, this)); | 278 net::URLFetcher::GET, this); |
279 model_fetcher_->SetRequestContext(request_context_getter_.get()); | 279 model_fetcher_->SetRequestContext(request_context_getter_.get()); |
280 model_fetcher_->Start(); | 280 model_fetcher_->Start(); |
281 } | 281 } |
282 } | 282 } |
283 | 283 |
284 void ClientSideDetectionService::EndFetchModel(ClientModelStatus status) { | 284 void ClientSideDetectionService::EndFetchModel(ClientModelStatus status) { |
285 UMA_HISTOGRAM_ENUMERATION("SBClientPhishing.ClientModelStatus", | 285 UMA_HISTOGRAM_ENUMERATION("SBClientPhishing.ClientModelStatus", |
286 status, | 286 status, |
287 MODEL_STATUS_MAX); | 287 MODEL_STATUS_MAX); |
288 if (status == MODEL_SUCCESS) { | 288 if (status == MODEL_SUCCESS) { |
(...skipping 30 matching lines...) Expand all Loading... |
319 | 319 |
320 std::string request_data; | 320 std::string request_data; |
321 if (!request->SerializeToString(&request_data)) { | 321 if (!request->SerializeToString(&request_data)) { |
322 UMA_HISTOGRAM_COUNTS("SBClientPhishing.RequestNotSerialized", 1); | 322 UMA_HISTOGRAM_COUNTS("SBClientPhishing.RequestNotSerialized", 1); |
323 DVLOG(1) << "Unable to serialize the CSD request. Proto file changed?"; | 323 DVLOG(1) << "Unable to serialize the CSD request. Proto file changed?"; |
324 if (!callback.is_null()) | 324 if (!callback.is_null()) |
325 callback.Run(GURL(request->url()), false); | 325 callback.Run(GURL(request->url()), false); |
326 return; | 326 return; |
327 } | 327 } |
328 | 328 |
329 net::URLFetcher* fetcher = net::URLFetcher::Create( | 329 net::URLFetcher* fetcher = |
330 0 /* ID used for testing */, | 330 net::URLFetcher::Create(0 /* ID used for testing */, |
331 GetClientReportUrl(kClientReportPhishingUrl), | 331 GetClientReportUrl(kClientReportPhishingUrl), |
332 net::URLFetcher::POST, this); | 332 net::URLFetcher::POST, this).release(); |
333 | 333 |
334 // Remember which callback and URL correspond to the current fetcher object. | 334 // Remember which callback and URL correspond to the current fetcher object. |
335 ClientReportInfo* info = new ClientReportInfo; | 335 ClientReportInfo* info = new ClientReportInfo; |
336 info->callback = callback; | 336 info->callback = callback; |
337 info->phishing_url = GURL(request->url()); | 337 info->phishing_url = GURL(request->url()); |
338 client_phishing_reports_[fetcher] = info; | 338 client_phishing_reports_[fetcher] = info; |
339 | 339 |
340 fetcher->SetLoadFlags(net::LOAD_DISABLE_CACHE); | 340 fetcher->SetLoadFlags(net::LOAD_DISABLE_CACHE); |
341 fetcher->SetRequestContext(request_context_getter_.get()); | 341 fetcher->SetRequestContext(request_context_getter_.get()); |
342 fetcher->SetUploadData("application/octet-stream", request_data); | 342 fetcher->SetUploadData("application/octet-stream", request_data); |
(...skipping 17 matching lines...) Expand all Loading... |
360 | 360 |
361 std::string request_data; | 361 std::string request_data; |
362 if (!request->SerializeToString(&request_data)) { | 362 if (!request->SerializeToString(&request_data)) { |
363 UpdateEnumUMAHistogram(REPORT_FAILED_SERIALIZATION); | 363 UpdateEnumUMAHistogram(REPORT_FAILED_SERIALIZATION); |
364 DVLOG(1) << "Unable to serialize the CSD request. Proto file changed?"; | 364 DVLOG(1) << "Unable to serialize the CSD request. Proto file changed?"; |
365 if (!callback.is_null()) | 365 if (!callback.is_null()) |
366 callback.Run(GURL(request->url()), GURL(request->url()), false); | 366 callback.Run(GURL(request->url()), GURL(request->url()), false); |
367 return; | 367 return; |
368 } | 368 } |
369 | 369 |
370 net::URLFetcher* fetcher = net::URLFetcher::Create( | 370 net::URLFetcher* fetcher = |
371 0 /* ID used for testing */, | 371 net::URLFetcher::Create(0 /* ID used for testing */, |
372 GetClientReportUrl(kClientReportMalwareUrl), | 372 GetClientReportUrl(kClientReportMalwareUrl), |
373 net::URLFetcher::POST, this); | 373 net::URLFetcher::POST, this).release(); |
374 | 374 |
375 // Remember which callback and URL correspond to the current fetcher object. | 375 // Remember which callback and URL correspond to the current fetcher object. |
376 ClientMalwareReportInfo* info = new ClientMalwareReportInfo; | 376 ClientMalwareReportInfo* info = new ClientMalwareReportInfo; |
377 info->callback = callback; | 377 info->callback = callback; |
378 info->original_url = GURL(request->url()); | 378 info->original_url = GURL(request->url()); |
379 client_malware_reports_[fetcher] = info; | 379 client_malware_reports_[fetcher] = info; |
380 | 380 |
381 fetcher->SetLoadFlags(net::LOAD_DISABLE_CACHE); | 381 fetcher->SetLoadFlags(net::LOAD_DISABLE_CACHE); |
382 fetcher->SetRequestContext(request_context_getter_.get()); | 382 fetcher->SetRequestContext(request_context_getter_.get()); |
383 fetcher->SetUploadData("application/octet-stream", request_data); | 383 fetcher->SetUploadData("application/octet-stream", request_data); |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 GURL ClientSideDetectionService::GetClientReportUrl( | 635 GURL ClientSideDetectionService::GetClientReportUrl( |
636 const std::string& report_url) { | 636 const std::string& report_url) { |
637 GURL url(report_url); | 637 GURL url(report_url); |
638 std::string api_key = google_apis::GetAPIKey(); | 638 std::string api_key = google_apis::GetAPIKey(); |
639 if (!api_key.empty()) | 639 if (!api_key.empty()) |
640 url = url.Resolve("?key=" + net::EscapeQueryParamValue(api_key, true)); | 640 url = url.Resolve("?key=" + net::EscapeQueryParamValue(api_key, true)); |
641 | 641 |
642 return url; | 642 return url; |
643 } | 643 } |
644 } // namespace safe_browsing | 644 } // namespace safe_browsing |
OLD | NEW |