| 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 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| 11 #include "base/location.h" | 11 #include "base/location.h" |
| 12 #include "base/logging.h" | 12 #include "base/logging.h" |
| 13 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" |
| 14 #include "base/metrics/histogram_macros.h" | 14 #include "base/metrics/histogram_macros.h" |
| 15 #include "base/metrics/sparse_histogram.h" | 15 #include "base/metrics/sparse_histogram.h" |
| 16 #include "base/single_thread_task_runner.h" | 16 #include "base/single_thread_task_runner.h" |
| 17 #include "base/stl_util.h" | 17 #include "base/stl_util.h" |
| 18 #include "base/threading/thread_task_runner_handle.h" | 18 #include "base/threading/thread_task_runner_handle.h" |
| 19 #include "base/time/time.h" | 19 #include "base/time/time.h" |
| 20 #include "chrome/browser/browser_process.h" | 20 #include "chrome/browser/browser_process.h" |
| 21 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
| 22 #include "chrome/common/pref_names.h" | 22 #include "chrome/common/pref_names.h" |
| 23 #include "chrome/common/safe_browsing/client_model.pb.h" | 23 #include "chrome/common/safe_browsing/client_model.pb.h" |
| 24 #include "chrome/common/safe_browsing/csd.pb.h" | 24 #include "chrome/common/safe_browsing/csd.pb.h" |
| 25 #include "chrome/common/safe_browsing/safebrowsing_messages.h" | 25 #include "chrome/common/safe_browsing/safebrowsing_messages.h" |
| 26 #include "components/data_use_measurement/core/data_use_user_data.h" |
| 26 #include "components/prefs/pref_service.h" | 27 #include "components/prefs/pref_service.h" |
| 27 #include "content/public/browser/browser_thread.h" | 28 #include "content/public/browser/browser_thread.h" |
| 28 #include "content/public/browser/notification_service.h" | 29 #include "content/public/browser/notification_service.h" |
| 29 #include "content/public/browser/notification_types.h" | 30 #include "content/public/browser/notification_types.h" |
| 30 #include "content/public/browser/render_process_host.h" | 31 #include "content/public/browser/render_process_host.h" |
| 31 #include "crypto/sha2.h" | 32 #include "crypto/sha2.h" |
| 32 #include "google_apis/google_api_keys.h" | 33 #include "google_apis/google_api_keys.h" |
| 33 #include "net/base/escape.h" | 34 #include "net/base/escape.h" |
| 34 #include "net/base/ip_address.h" | 35 #include "net/base/ip_address.h" |
| 35 #include "net/base/load_flags.h" | 36 #include "net/base/load_flags.h" |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 if (!callback.is_null()) | 284 if (!callback.is_null()) |
| 284 callback.Run(GURL(request->url()), false); | 285 callback.Run(GURL(request->url()), false); |
| 285 return; | 286 return; |
| 286 } | 287 } |
| 287 | 288 |
| 288 std::unique_ptr<net::URLFetcher> fetcher( | 289 std::unique_ptr<net::URLFetcher> fetcher( |
| 289 net::URLFetcher::Create(0 /* ID used for testing */, | 290 net::URLFetcher::Create(0 /* ID used for testing */, |
| 290 GetClientReportUrl(kClientReportPhishingUrl), | 291 GetClientReportUrl(kClientReportPhishingUrl), |
| 291 net::URLFetcher::POST, this)); | 292 net::URLFetcher::POST, this)); |
| 292 net::URLFetcher* fetcher_ptr = fetcher.get(); | 293 net::URLFetcher* fetcher_ptr = fetcher.get(); |
| 294 data_use_measurement::DataUseUserData::AttachToFetcher( |
| 295 fetcher_ptr, data_use_measurement::DataUseUserData::SAFE_BROWSING); |
| 293 | 296 |
| 294 // Remember which callback and URL correspond to the current fetcher object. | 297 // Remember which callback and URL correspond to the current fetcher object. |
| 295 std::unique_ptr<ClientPhishingReportInfo> info(new ClientPhishingReportInfo); | 298 std::unique_ptr<ClientPhishingReportInfo> info(new ClientPhishingReportInfo); |
| 296 info->fetcher = std::move(fetcher); | 299 info->fetcher = std::move(fetcher); |
| 297 info->callback = callback; | 300 info->callback = callback; |
| 298 info->phishing_url = GURL(request->url()); | 301 info->phishing_url = GURL(request->url()); |
| 299 client_phishing_reports_[fetcher_ptr] = std::move(info); | 302 client_phishing_reports_[fetcher_ptr] = std::move(info); |
| 300 | 303 |
| 301 fetcher_ptr->SetLoadFlags(net::LOAD_DISABLE_CACHE); | 304 fetcher_ptr->SetLoadFlags(net::LOAD_DISABLE_CACHE); |
| 302 fetcher_ptr->SetRequestContext(request_context_getter_.get()); | 305 fetcher_ptr->SetRequestContext(request_context_getter_.get()); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 326 if (!callback.is_null()) | 329 if (!callback.is_null()) |
| 327 callback.Run(GURL(request->url()), GURL(request->url()), false); | 330 callback.Run(GURL(request->url()), GURL(request->url()), false); |
| 328 return; | 331 return; |
| 329 } | 332 } |
| 330 | 333 |
| 331 std::unique_ptr<net::URLFetcher> fetcher( | 334 std::unique_ptr<net::URLFetcher> fetcher( |
| 332 net::URLFetcher::Create(0 /* ID used for testing */, | 335 net::URLFetcher::Create(0 /* ID used for testing */, |
| 333 GetClientReportUrl(kClientReportMalwareUrl), | 336 GetClientReportUrl(kClientReportMalwareUrl), |
| 334 net::URLFetcher::POST, this)); | 337 net::URLFetcher::POST, this)); |
| 335 net::URLFetcher* fetcher_ptr = fetcher.get(); | 338 net::URLFetcher* fetcher_ptr = fetcher.get(); |
| 339 data_use_measurement::DataUseUserData::AttachToFetcher( |
| 340 fetcher_ptr, data_use_measurement::DataUseUserData::SAFE_BROWSING); |
| 336 | 341 |
| 337 // Remember which callback and URL correspond to the current fetcher object. | 342 // Remember which callback and URL correspond to the current fetcher object. |
| 338 std::unique_ptr<ClientMalwareReportInfo> info(new ClientMalwareReportInfo); | 343 std::unique_ptr<ClientMalwareReportInfo> info(new ClientMalwareReportInfo); |
| 339 info->fetcher = std::move(fetcher); | 344 info->fetcher = std::move(fetcher); |
| 340 info->callback = callback; | 345 info->callback = callback; |
| 341 info->original_url = GURL(request->url()); | 346 info->original_url = GURL(request->url()); |
| 342 client_malware_reports_[fetcher_ptr] = std::move(info); | 347 client_malware_reports_[fetcher_ptr] = std::move(info); |
| 343 | 348 |
| 344 fetcher_ptr->SetLoadFlags(net::LOAD_DISABLE_CACHE); | 349 fetcher_ptr->SetLoadFlags(net::LOAD_DISABLE_CACHE); |
| 345 fetcher_ptr->SetRequestContext(request_context_getter_.get()); | 350 fetcher_ptr->SetRequestContext(request_context_getter_.get()); |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 const std::string& report_url) { | 517 const std::string& report_url) { |
| 513 GURL url(report_url); | 518 GURL url(report_url); |
| 514 std::string api_key = google_apis::GetAPIKey(); | 519 std::string api_key = google_apis::GetAPIKey(); |
| 515 if (!api_key.empty()) | 520 if (!api_key.empty()) |
| 516 url = url.Resolve("?key=" + net::EscapeQueryParamValue(api_key, true)); | 521 url = url.Resolve("?key=" + net::EscapeQueryParamValue(api_key, true)); |
| 517 | 522 |
| 518 return url; | 523 return url; |
| 519 } | 524 } |
| 520 | 525 |
| 521 } // namespace safe_browsing | 526 } // namespace safe_browsing |
| OLD | NEW |