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/database_manager.h" | 5 #include "chrome/browser/safe_browsing/database_manager.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
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 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 | 645 |
646 void SafeBrowsingDatabaseManager::ResetDatabase() { | 646 void SafeBrowsingDatabaseManager::ResetDatabase() { |
647 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 647 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
648 DCHECK(enabled_); | 648 DCHECK(enabled_); |
649 safe_browsing_task_runner_->PostTask( | 649 safe_browsing_task_runner_->PostTask( |
650 FROM_HERE, | 650 FROM_HERE, |
651 base::Bind(&SafeBrowsingDatabaseManager::OnResetDatabase, this)); | 651 base::Bind(&SafeBrowsingDatabaseManager::OnResetDatabase, this)); |
652 } | 652 } |
653 | 653 |
654 void SafeBrowsingDatabaseManager::StartOnIOThread() { | 654 void SafeBrowsingDatabaseManager::StartOnIOThread() { |
| 655 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. |
| 656 tracked_objects::ScopedTracker tracking_profile1( |
| 657 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 658 "455469 SafeBrowsingDatabaseManager::StartOnIOThread1")); |
655 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 659 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
656 if (enabled_) | 660 if (enabled_) |
657 return; | 661 return; |
658 | 662 |
659 DCHECK(!safe_browsing_task_runner_); | 663 DCHECK(!safe_browsing_task_runner_); |
660 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. | |
661 tracked_objects::ScopedTracker tracking_profile2( | |
662 FROM_HERE_WITH_EXPLICIT_FUNCTION( | |
663 "455469 SafeBrowsingDatabaseManager::StartOnIOThread")); | |
664 // Use the blocking pool instead of a dedicated thread for safe browsing work, | 664 // Use the blocking pool instead of a dedicated thread for safe browsing work, |
665 // if specified by an experiment. | 665 // if specified by an experiment. |
666 const bool use_blocking_pool = | 666 const bool use_blocking_pool = |
667 variations::GetVariationParamValue("LightSpeed", "SBThreadingMode") == | 667 variations::GetVariationParamValue("LightSpeed", "SBThreadingMode") == |
668 "BlockingPool"; | 668 "BlockingPool"; |
669 if (use_blocking_pool) { | 669 if (use_blocking_pool) { |
| 670 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is |
| 671 // fixed. |
| 672 tracked_objects::ScopedTracker tracking_profile2( |
| 673 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 674 "455469 SafeBrowsingDatabaseManager::StartOnIOThread2")); |
670 base::SequencedWorkerPool* pool = BrowserThread::GetBlockingPool(); | 675 base::SequencedWorkerPool* pool = BrowserThread::GetBlockingPool(); |
671 safe_browsing_task_runner_ = | 676 safe_browsing_task_runner_ = |
672 pool->GetSequencedTaskRunnerWithShutdownBehavior( | 677 pool->GetSequencedTaskRunnerWithShutdownBehavior( |
673 pool->GetSequenceToken(), | 678 pool->GetSequenceToken(), |
674 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); | 679 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
675 } else { | 680 } else { |
| 681 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is |
| 682 // fixed. |
| 683 tracked_objects::ScopedTracker tracking_profile3( |
| 684 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 685 "455469 SafeBrowsingDatabaseManager::StartOnIOThread3")); |
676 DCHECK(!safe_browsing_thread_.get()); | 686 DCHECK(!safe_browsing_thread_.get()); |
677 | 687 |
678 safe_browsing_thread_.reset(new base::Thread("Chrome_SafeBrowsingThread")); | 688 safe_browsing_thread_.reset(new base::Thread("Chrome_SafeBrowsingThread")); |
679 if (!safe_browsing_thread_->Start()) | 689 if (!safe_browsing_thread_->Start()) |
680 return; | 690 return; |
681 safe_browsing_task_runner_ = safe_browsing_thread_->task_runner(); | 691 safe_browsing_task_runner_ = safe_browsing_thread_->task_runner(); |
682 } | 692 } |
683 | 693 |
684 enabled_ = true; | 694 enabled_ = true; |
685 | 695 |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
786 SafeBrowsingCheck* check = *it; | 796 SafeBrowsingCheck* check = *it; |
787 if (check->client) | 797 if (check->client) |
788 check->client->OnSafeBrowsingResult(*check); | 798 check->client->OnSafeBrowsingResult(*check); |
789 } | 799 } |
790 STLDeleteElements(&checks_); | 800 STLDeleteElements(&checks_); |
791 | 801 |
792 gethash_requests_.clear(); | 802 gethash_requests_.clear(); |
793 } | 803 } |
794 | 804 |
795 bool SafeBrowsingDatabaseManager::DatabaseAvailable() const { | 805 bool SafeBrowsingDatabaseManager::DatabaseAvailable() const { |
796 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. | |
797 tracked_objects::ScopedTracker tracking_profile2( | |
798 FROM_HERE_WITH_EXPLICIT_FUNCTION( | |
799 "455469 SafeBrowsingDatabaseManager::DatabaseAvailable")); | |
800 base::AutoLock lock(database_lock_); | 806 base::AutoLock lock(database_lock_); |
801 return !closing_database_ && (database_ != NULL); | 807 return !closing_database_ && (database_ != NULL); |
802 } | 808 } |
803 | 809 |
804 bool SafeBrowsingDatabaseManager::MakeDatabaseAvailable() { | 810 bool SafeBrowsingDatabaseManager::MakeDatabaseAvailable() { |
805 DCHECK_CURRENTLY_ON(BrowserThread::IO); | 811 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
806 DCHECK(enabled_); | 812 DCHECK(enabled_); |
807 // TODO(pkasting): Remove ScopedTracker below once crbug.com/455469 is fixed. | |
808 tracked_objects::ScopedTracker tracking_profile2( | |
809 FROM_HERE_WITH_EXPLICIT_FUNCTION( | |
810 "455469 SafeBrowsingDatabaseManager::MakeDatabaseAvailable")); | |
811 if (DatabaseAvailable()) | 813 if (DatabaseAvailable()) |
812 return true; | 814 return true; |
813 safe_browsing_task_runner_->PostTask( | 815 safe_browsing_task_runner_->PostTask( |
814 FROM_HERE, | 816 FROM_HERE, |
815 base::Bind(base::IgnoreResult(&SafeBrowsingDatabaseManager::GetDatabase), | 817 base::Bind(base::IgnoreResult(&SafeBrowsingDatabaseManager::GetDatabase), |
816 this)); | 818 this)); |
817 return false; | 819 return false; |
818 } | 820 } |
819 | 821 |
820 SafeBrowsingDatabase* SafeBrowsingDatabaseManager::GetDatabase() { | 822 SafeBrowsingDatabase* SafeBrowsingDatabaseManager::GetDatabase() { |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1196 new base::WeakPtrFactory<SafeBrowsingDatabaseManager>(this)); | 1198 new base::WeakPtrFactory<SafeBrowsingDatabaseManager>(this)); |
1197 checks_.insert(check); | 1199 checks_.insert(check); |
1198 | 1200 |
1199 safe_browsing_task_runner_->PostTask(FROM_HERE, task); | 1201 safe_browsing_task_runner_->PostTask(FROM_HERE, task); |
1200 | 1202 |
1201 base::MessageLoop::current()->PostDelayedTask(FROM_HERE, | 1203 base::MessageLoop::current()->PostDelayedTask(FROM_HERE, |
1202 base::Bind(&SafeBrowsingDatabaseManager::TimeoutCallback, | 1204 base::Bind(&SafeBrowsingDatabaseManager::TimeoutCallback, |
1203 check->timeout_factory_->GetWeakPtr(), check), | 1205 check->timeout_factory_->GetWeakPtr(), check), |
1204 check_timeout_); | 1206 check_timeout_); |
1205 } | 1207 } |
OLD | NEW |