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 |