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