| 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 "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 | 310 |
| 311 void SafeBrowsingDatabaseManager::GetChunks(GetChunksCallback callback) { | 311 void SafeBrowsingDatabaseManager::GetChunks(GetChunksCallback callback) { |
| 312 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 312 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 313 DCHECK(enabled_); | 313 DCHECK(enabled_); |
| 314 DCHECK(!callback.is_null()); | 314 DCHECK(!callback.is_null()); |
| 315 safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( | 315 safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( |
| 316 &SafeBrowsingDatabaseManager::GetAllChunksFromDatabase, this, callback)); | 316 &SafeBrowsingDatabaseManager::GetAllChunksFromDatabase, this, callback)); |
| 317 } | 317 } |
| 318 | 318 |
| 319 void SafeBrowsingDatabaseManager::AddChunks(const std::string& list, | 319 void SafeBrowsingDatabaseManager::AddChunks(const std::string& list, |
| 320 SBChunkList* chunks) { | 320 SBChunkList* chunks, |
| 321 AddChunksCallback callback) { |
| 321 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 322 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 322 DCHECK(enabled_); | 323 DCHECK(enabled_); |
| 324 DCHECK(!callback.is_null()); |
| 323 safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( | 325 safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( |
| 324 &SafeBrowsingDatabaseManager::HandleChunkForDatabase, this, list, | 326 &SafeBrowsingDatabaseManager::AddDatabaseChunks, this, list, |
| 325 chunks)); | 327 chunks, callback)); |
| 326 } | 328 } |
| 327 | 329 |
| 328 void SafeBrowsingDatabaseManager::DeleteChunks( | 330 void SafeBrowsingDatabaseManager::DeleteChunks( |
| 329 std::vector<SBChunkDelete>* chunk_deletes) { | 331 std::vector<SBChunkDelete>* chunk_deletes) { |
| 330 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 332 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 331 DCHECK(enabled_); | 333 DCHECK(enabled_); |
| 332 safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( | 334 safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( |
| 333 &SafeBrowsingDatabaseManager::DeleteDatabaseChunks, this, chunk_deletes)); | 335 &SafeBrowsingDatabaseManager::DeleteDatabaseChunks, this, chunk_deletes)); |
| 334 } | 336 } |
| 335 | 337 |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 594 } | 596 } |
| 595 | 597 |
| 596 void SafeBrowsingDatabaseManager::OnGetAllChunksFromDatabase( | 598 void SafeBrowsingDatabaseManager::OnGetAllChunksFromDatabase( |
| 597 const std::vector<SBListChunkRanges>& lists, bool database_error, | 599 const std::vector<SBListChunkRanges>& lists, bool database_error, |
| 598 GetChunksCallback callback) { | 600 GetChunksCallback callback) { |
| 599 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 601 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 600 if (enabled_) | 602 if (enabled_) |
| 601 callback.Run(lists, database_error); | 603 callback.Run(lists, database_error); |
| 602 } | 604 } |
| 603 | 605 |
| 604 void SafeBrowsingDatabaseManager::OnChunkInserted() { | 606 void SafeBrowsingDatabaseManager::OnAddChunksComplete( |
| 607 AddChunksCallback callback) { |
| 605 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 608 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 606 if (enabled_) | 609 if (enabled_) |
| 607 sb_service_->protocol_manager()->OnChunkInserted(); | 610 callback.Run(); |
| 608 } | 611 } |
| 609 | 612 |
| 610 void SafeBrowsingDatabaseManager::DatabaseLoadComplete() { | 613 void SafeBrowsingDatabaseManager::DatabaseLoadComplete() { |
| 611 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 614 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 612 if (!enabled_) | 615 if (!enabled_) |
| 613 return; | 616 return; |
| 614 | 617 |
| 615 HISTOGRAM_COUNTS("SB.QueueDepth", queued_checks_.size()); | 618 HISTOGRAM_COUNTS("SB.QueueDepth", queued_checks_.size()); |
| 616 if (queued_checks_.empty()) | 619 if (queued_checks_.empty()) |
| 617 return; | 620 return; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 630 SafeBrowsingCheck sb_check; | 633 SafeBrowsingCheck sb_check; |
| 631 sb_check.urls.push_back(check.url); | 634 sb_check.urls.push_back(check.url); |
| 632 sb_check.client = check.client; | 635 sb_check.client = check.client; |
| 633 sb_check.threat_type = SB_THREAT_TYPE_SAFE; | 636 sb_check.threat_type = SB_THREAT_TYPE_SAFE; |
| 634 check.client->OnSafeBrowsingResult(sb_check); | 637 check.client->OnSafeBrowsingResult(sb_check); |
| 635 } | 638 } |
| 636 queued_checks_.pop_front(); | 639 queued_checks_.pop_front(); |
| 637 } | 640 } |
| 638 } | 641 } |
| 639 | 642 |
| 640 void SafeBrowsingDatabaseManager::HandleChunkForDatabase( | 643 void SafeBrowsingDatabaseManager::AddDatabaseChunks( |
| 641 const std::string& list_name, SBChunkList* chunks) { | 644 const std::string& list_name, SBChunkList* chunks, |
| 645 AddChunksCallback callback) { |
| 642 DCHECK_EQ(MessageLoop::current(), safe_browsing_thread_->message_loop()); | 646 DCHECK_EQ(MessageLoop::current(), safe_browsing_thread_->message_loop()); |
| 643 if (chunks) { | 647 if (chunks) { |
| 644 GetDatabase()->InsertChunks(list_name, *chunks); | 648 GetDatabase()->InsertChunks(list_name, *chunks); |
| 645 delete chunks; | 649 delete chunks; |
| 646 } | 650 } |
| 647 BrowserThread::PostTask( | 651 BrowserThread::PostTask( |
| 648 BrowserThread::IO, FROM_HERE, | 652 BrowserThread::IO, FROM_HERE, |
| 649 base::Bind(&SafeBrowsingDatabaseManager::OnChunkInserted, this)); | 653 base::Bind(&SafeBrowsingDatabaseManager::OnAddChunksComplete, this, |
| 654 callback)); |
| 650 } | 655 } |
| 651 | 656 |
| 652 void SafeBrowsingDatabaseManager::DeleteDatabaseChunks( | 657 void SafeBrowsingDatabaseManager::DeleteDatabaseChunks( |
| 653 std::vector<SBChunkDelete>* chunk_deletes) { | 658 std::vector<SBChunkDelete>* chunk_deletes) { |
| 654 DCHECK_EQ(MessageLoop::current(), safe_browsing_thread_->message_loop()); | 659 DCHECK_EQ(MessageLoop::current(), safe_browsing_thread_->message_loop()); |
| 655 if (chunk_deletes) { | 660 if (chunk_deletes) { |
| 656 GetDatabase()->DeleteChunks(*chunk_deletes); | 661 GetDatabase()->DeleteChunks(*chunk_deletes); |
| 657 delete chunk_deletes; | 662 delete chunk_deletes; |
| 658 } | 663 } |
| 659 } | 664 } |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 888 new base::WeakPtrFactory<SafeBrowsingDatabaseManager>(this)); | 893 new base::WeakPtrFactory<SafeBrowsingDatabaseManager>(this)); |
| 889 checks_.insert(check); | 894 checks_.insert(check); |
| 890 | 895 |
| 891 safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, task); | 896 safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, task); |
| 892 | 897 |
| 893 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 898 MessageLoop::current()->PostDelayedTask(FROM_HERE, |
| 894 base::Bind(&SafeBrowsingDatabaseManager::TimeoutCallback, | 899 base::Bind(&SafeBrowsingDatabaseManager::TimeoutCallback, |
| 895 check->timeout_factory_->GetWeakPtr(), check), | 900 check->timeout_factory_->GetWeakPtr(), check), |
| 896 base::TimeDelta::FromMilliseconds(timeout_ms)); | 901 base::TimeDelta::FromMilliseconds(timeout_ms)); |
| 897 } | 902 } |
| OLD | NEW |