| 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 |