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