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/safe_browsing_service.h" | 5 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 | 213 |
214 database_manager_ = CreateDatabaseManager(); | 214 database_manager_ = CreateDatabaseManager(); |
215 | 215 |
216 BrowserThread::PostTask( | 216 BrowserThread::PostTask( |
217 BrowserThread::IO, FROM_HERE, | 217 BrowserThread::IO, FROM_HERE, |
218 base::Bind( | 218 base::Bind( |
219 &SafeBrowsingService::InitURLRequestContextOnIOThread, this, | 219 &SafeBrowsingService::InitURLRequestContextOnIOThread, this, |
220 make_scoped_refptr(g_browser_process->system_request_context()))); | 220 make_scoped_refptr(g_browser_process->system_request_context()))); |
221 | 221 |
222 #if defined(FULL_SAFE_BROWSING) | 222 #if defined(FULL_SAFE_BROWSING) |
223 #if !defined(OS_ANDROID) | 223 #if !defined(SAFE_BROWSING_CSD) |
224 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 224 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
225 switches::kDisableClientSidePhishingDetection)) { | 225 switches::kDisableClientSidePhishingDetection)) { |
226 csd_service_.reset(safe_browsing::ClientSideDetectionService::Create( | 226 csd_service_.reset(safe_browsing::ClientSideDetectionService::Create( |
227 url_request_context_getter_.get())); | 227 url_request_context_getter_.get())); |
228 } | 228 } |
| 229 #endif // !defined(SAFE_BROWSING_CSD) |
| 230 |
| 231 // TODO(nparker): Adding SAFE_BROWSING_SERVICE_DOWNLOAD to control this might |
| 232 // allow removing FULL_SAFE_BROWSING above. |
| 233 #if !defined(OS_ANDROID) |
229 download_service_.reset(new safe_browsing::DownloadProtectionService( | 234 download_service_.reset(new safe_browsing::DownloadProtectionService( |
230 this, url_request_context_getter_.get())); | 235 this, url_request_context_getter_.get())); |
231 #endif | 236 #endif |
232 | 237 |
233 if (IsIncidentReportingServiceEnabled()) { | 238 if (IsIncidentReportingServiceEnabled()) { |
234 incident_service_.reset(new safe_browsing::IncidentReportingService( | 239 incident_service_.reset(new safe_browsing::IncidentReportingService( |
235 this, url_request_context_getter_)); | 240 this, url_request_context_getter_)); |
236 resource_request_detector_.reset(new safe_browsing::ResourceRequestDetector( | 241 resource_request_detector_.reset(new safe_browsing::ResourceRequestDetector( |
237 incident_service_->GetIncidentReceiver())); | 242 incident_service_->GetIncidentReceiver())); |
238 } | 243 } |
239 | 244 |
240 off_domain_inclusion_detector_.reset( | 245 off_domain_inclusion_detector_.reset( |
241 new safe_browsing::OffDomainInclusionDetector(database_manager_)); | 246 new safe_browsing::OffDomainInclusionDetector(database_manager_)); |
242 #endif | 247 #endif // !defined(OS_ANDROID) |
243 | 248 |
244 // Track the safe browsing preference of existing profiles. | 249 // Track the safe browsing preference of existing profiles. |
245 // The SafeBrowsingService will be started if any existing profile has the | 250 // The SafeBrowsingService will be started if any existing profile has the |
246 // preference enabled. It will also listen for updates to the preferences. | 251 // preference enabled. It will also listen for updates to the preferences. |
247 ProfileManager* profile_manager = g_browser_process->profile_manager(); | 252 ProfileManager* profile_manager = g_browser_process->profile_manager(); |
248 if (profile_manager) { | 253 if (profile_manager) { |
249 std::vector<Profile*> profiles = profile_manager->GetLoadedProfiles(); | 254 std::vector<Profile*> profiles = profile_manager->GetLoadedProfiles(); |
250 for (size_t i = 0; i < profiles.size(); ++i) { | 255 for (size_t i = 0; i < profiles.size(); ++i) { |
251 if (profiles[i]->IsOffTheRecord()) | 256 if (profiles[i]->IsOffTheRecord()) |
252 continue; | 257 continue; |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 if (resource_request_detector_) | 372 if (resource_request_detector_) |
368 resource_request_detector_->OnResourceRequest(request); | 373 resource_request_detector_->OnResourceRequest(request); |
369 #endif | 374 #endif |
370 } | 375 } |
371 | 376 |
372 SafeBrowsingUIManager* SafeBrowsingService::CreateUIManager() { | 377 SafeBrowsingUIManager* SafeBrowsingService::CreateUIManager() { |
373 return new SafeBrowsingUIManager(this); | 378 return new SafeBrowsingUIManager(this); |
374 } | 379 } |
375 | 380 |
376 SafeBrowsingDatabaseManager* SafeBrowsingService::CreateDatabaseManager() { | 381 SafeBrowsingDatabaseManager* SafeBrowsingService::CreateDatabaseManager() { |
377 #if defined(FULL_SAFE_BROWSING) | 382 #if defined(SAFE_BROWSING_DB_LOCAL) |
378 return new SafeBrowsingDatabaseManager(this); | 383 return new SafeBrowsingDatabaseManager(this); |
379 #else | 384 #else |
380 return NULL; | 385 return NULL; |
381 #endif | 386 #endif |
382 } | 387 } |
383 | 388 |
384 void SafeBrowsingService::RegisterAllDelayedAnalysis() { | 389 void SafeBrowsingService::RegisterAllDelayedAnalysis() { |
385 #if defined(FULL_SAFE_BROWSING) | 390 #if defined(FULL_SAFE_BROWSING) |
386 safe_browsing::RegisterBinaryIntegrityAnalysis(); | 391 safe_browsing::RegisterBinaryIntegrityAnalysis(); |
387 safe_browsing::RegisterBlacklistLoadAnalysis(); | 392 safe_browsing::RegisterBlacklistLoadAnalysis(); |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
476 tracked_objects::ScopedTracker tracking_profile1( | 481 tracked_objects::ScopedTracker tracking_profile1( |
477 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 482 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
478 "455469 SafeBrowsingService::StartOnIOThread 1")); | 483 "455469 SafeBrowsingService::StartOnIOThread 1")); |
479 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 484 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
480 if (enabled_) | 485 if (enabled_) |
481 return; | 486 return; |
482 enabled_ = true; | 487 enabled_ = true; |
483 | 488 |
484 SafeBrowsingProtocolConfig config = GetProtocolConfig(); | 489 SafeBrowsingProtocolConfig config = GetProtocolConfig(); |
485 | 490 |
486 #if defined(FULL_SAFE_BROWSING) | 491 #if defined(SAFE_BROWSING_DB_LOCAL) |
487 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. | 492 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. |
488 tracked_objects::ScopedTracker tracking_profile2( | 493 tracked_objects::ScopedTracker tracking_profile2( |
489 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 494 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
490 "455469 SafeBrowsingService::StartOnIOThread 2")); | 495 "455469 SafeBrowsingService::StartOnIOThread 2")); |
| 496 |
491 DCHECK(database_manager_.get()); | 497 DCHECK(database_manager_.get()); |
492 database_manager_->StartOnIOThread(); | 498 database_manager_->StartOnIOThread(); |
493 | 499 |
494 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. | 500 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. |
495 tracked_objects::ScopedTracker tracking_profile3( | 501 tracked_objects::ScopedTracker tracking_profile3( |
496 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 502 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
497 "455469 SafeBrowsingService::StartOnIOThread 3")); | 503 "455469 SafeBrowsingService::StartOnIOThread 3")); |
498 DCHECK(!protocol_manager_); | 504 DCHECK(!protocol_manager_); |
499 protocol_manager_ = SafeBrowsingProtocolManager::Create( | 505 protocol_manager_ = SafeBrowsingProtocolManager::Create( |
500 database_manager_.get(), url_request_context_getter, config); | 506 database_manager_.get(), url_request_context_getter, config); |
501 protocol_manager_->Initialize(); | 507 protocol_manager_->Initialize(); |
502 #endif | 508 #endif |
503 | 509 |
504 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. | 510 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. |
505 tracked_objects::ScopedTracker tracking_profile4( | 511 tracked_objects::ScopedTracker tracking_profile4( |
506 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 512 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
507 "455469 SafeBrowsingService::StartOnIOThread 4")); | 513 "455469 SafeBrowsingService::StartOnIOThread 4")); |
508 DCHECK(!ping_manager_); | 514 DCHECK(!ping_manager_); |
509 ping_manager_ = SafeBrowsingPingManager::Create( | 515 ping_manager_ = SafeBrowsingPingManager::Create( |
510 url_request_context_getter, config); | 516 url_request_context_getter, config); |
511 } | 517 } |
512 | 518 |
513 void SafeBrowsingService::StopOnIOThread(bool shutdown) { | 519 void SafeBrowsingService::StopOnIOThread(bool shutdown) { |
514 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 520 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
515 | 521 |
516 #if defined(FULL_SAFE_BROWSING) | 522 #if defined(SAFE_BROWSING_DB_LOCAL) |
517 database_manager_->StopOnIOThread(shutdown); | 523 database_manager_->StopOnIOThread(shutdown); |
518 #endif | 524 #endif |
519 ui_manager_->StopOnIOThread(shutdown); | 525 ui_manager_->StopOnIOThread(shutdown); |
520 | 526 |
521 if (enabled_) { | 527 if (enabled_) { |
522 enabled_ = false; | 528 enabled_ = false; |
523 | 529 |
524 #if defined(FULL_SAFE_BROWSING) | 530 #if defined(SAFE_BROWSING_DB_LOCAL) |
525 // This cancels all in-flight GetHash requests. Note that database_manager_ | 531 // This cancels all in-flight GetHash requests. Note that database_manager_ |
526 // relies on the protocol_manager_ so if the latter is destroyed, the | 532 // relies on the protocol_manager_ so if the latter is destroyed, the |
527 // former must be stopped. | 533 // former must be stopped. |
528 delete protocol_manager_; | 534 delete protocol_manager_; |
529 protocol_manager_ = NULL; | 535 protocol_manager_ = NULL; |
530 #endif | 536 #endif |
531 delete ping_manager_; | 537 delete ping_manager_; |
532 ping_manager_ = NULL; | 538 ping_manager_ = NULL; |
533 } | 539 } |
534 } | 540 } |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
613 else | 619 else |
614 Stop(false); | 620 Stop(false); |
615 | 621 |
616 #if defined(FULL_SAFE_BROWSING) | 622 #if defined(FULL_SAFE_BROWSING) |
617 if (csd_service_) | 623 if (csd_service_) |
618 csd_service_->SetEnabledAndRefreshState(enable); | 624 csd_service_->SetEnabledAndRefreshState(enable); |
619 if (download_service_) | 625 if (download_service_) |
620 download_service_->SetEnabled(enable); | 626 download_service_->SetEnabled(enable); |
621 #endif | 627 #endif |
622 } | 628 } |
OLD | NEW |