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_) |
mattm
2012/12/19 03:58:48
Just for weakptr safety, these callback.Run() call
cbentzel
2012/12/19 13:18:34
I am confused about which weakptr you mean.
a) Th
| |
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 |