| 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 // The history system runs on a background thread so that potentially slow | 5 // The history system runs on a background thread so that potentially slow |
| 6 // database operations don't delay the browser. This backend processing is | 6 // database operations don't delay the browser. This backend processing is |
| 7 // represented by HistoryBackend. The HistoryService's job is to dispatch to | 7 // represented by HistoryBackend. The HistoryService's job is to dispatch to |
| 8 // that thread. | 8 // that thread. |
| 9 // | 9 // |
| 10 // Main thread History thread | 10 // Main thread History thread |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 using base::Time; | 58 using base::Time; |
| 59 | 59 |
| 60 namespace history { | 60 namespace history { |
| 61 namespace { | 61 namespace { |
| 62 | 62 |
| 63 static const char* kHistoryThreadName = "Chrome_HistoryThread"; | 63 static const char* kHistoryThreadName = "Chrome_HistoryThread"; |
| 64 | 64 |
| 65 void RunWithFaviconResults( | 65 void RunWithFaviconResults( |
| 66 const favicon_base::FaviconResultsCallback& callback, | 66 const favicon_base::FaviconResultsCallback& callback, |
| 67 std::vector<favicon_base::FaviconRawBitmapResult>* bitmap_results) { | 67 std::vector<favicon_base::FaviconRawBitmapResult>* bitmap_results) { |
| 68 TRACE_EVENT0("browser", "RunWithFaviconResults"); |
| 68 callback.Run(*bitmap_results); | 69 callback.Run(*bitmap_results); |
| 69 } | 70 } |
| 70 | 71 |
| 71 void RunWithFaviconResult( | 72 void RunWithFaviconResult( |
| 72 const favicon_base::FaviconRawBitmapCallback& callback, | 73 const favicon_base::FaviconRawBitmapCallback& callback, |
| 73 favicon_base::FaviconRawBitmapResult* bitmap_result) { | 74 favicon_base::FaviconRawBitmapResult* bitmap_result) { |
| 74 callback.Run(*bitmap_result); | 75 callback.Run(*bitmap_result); |
| 75 } | 76 } |
| 76 | 77 |
| 77 void RunWithQueryURLResult(const HistoryService::QueryURLCallback& callback, | 78 void RunWithQueryURLResult(const HistoryService::QueryURLCallback& callback, |
| (...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 base::Bind(&HistoryBackend::AddPagesWithDetails, | 501 base::Bind(&HistoryBackend::AddPagesWithDetails, |
| 501 history_backend_.get(), info, visit_source)); | 502 history_backend_.get(), info, visit_source)); |
| 502 } | 503 } |
| 503 | 504 |
| 504 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( | 505 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( |
| 505 const std::vector<GURL>& icon_urls, | 506 const std::vector<GURL>& icon_urls, |
| 506 int icon_types, | 507 int icon_types, |
| 507 const std::vector<int>& desired_sizes, | 508 const std::vector<int>& desired_sizes, |
| 508 const favicon_base::FaviconResultsCallback& callback, | 509 const favicon_base::FaviconResultsCallback& callback, |
| 509 base::CancelableTaskTracker* tracker) { | 510 base::CancelableTaskTracker* tracker) { |
| 511 TRACE_EVENT0("browser", "HistoryService::GetFavicons"); |
| 510 DCHECK(thread_) << "History service being called after cleanup"; | 512 DCHECK(thread_) << "History service being called after cleanup"; |
| 511 DCHECK(thread_checker_.CalledOnValidThread()); | 513 DCHECK(thread_checker_.CalledOnValidThread()); |
| 512 std::vector<favicon_base::FaviconRawBitmapResult>* results = | 514 std::vector<favicon_base::FaviconRawBitmapResult>* results = |
| 513 new std::vector<favicon_base::FaviconRawBitmapResult>(); | 515 new std::vector<favicon_base::FaviconRawBitmapResult>(); |
| 514 return tracker->PostTaskAndReply( | 516 return tracker->PostTaskAndReply( |
| 515 thread_->task_runner().get(), FROM_HERE, | 517 thread_->task_runner().get(), FROM_HERE, |
| 516 base::Bind(&HistoryBackend::GetFavicons, history_backend_.get(), | 518 base::Bind(&HistoryBackend::GetFavicons, history_backend_.get(), |
| 517 icon_urls, icon_types, desired_sizes, results), | 519 icon_urls, icon_types, desired_sizes, results), |
| 518 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 520 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
| 519 } | 521 } |
| 520 | 522 |
| 521 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( | 523 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( |
| 522 const GURL& page_url, | 524 const GURL& page_url, |
| 523 int icon_types, | 525 int icon_types, |
| 524 const std::vector<int>& desired_sizes, | 526 const std::vector<int>& desired_sizes, |
| 525 const favicon_base::FaviconResultsCallback& callback, | 527 const favicon_base::FaviconResultsCallback& callback, |
| 526 base::CancelableTaskTracker* tracker) { | 528 base::CancelableTaskTracker* tracker) { |
| 529 TRACE_EVENT0("browser", "HistoryService::GetFaviconsForURL"); |
| 527 DCHECK(thread_) << "History service being called after cleanup"; | 530 DCHECK(thread_) << "History service being called after cleanup"; |
| 528 DCHECK(thread_checker_.CalledOnValidThread()); | 531 DCHECK(thread_checker_.CalledOnValidThread()); |
| 529 std::vector<favicon_base::FaviconRawBitmapResult>* results = | 532 std::vector<favicon_base::FaviconRawBitmapResult>* results = |
| 530 new std::vector<favicon_base::FaviconRawBitmapResult>(); | 533 new std::vector<favicon_base::FaviconRawBitmapResult>(); |
| 531 return tracker->PostTaskAndReply( | 534 return tracker->PostTaskAndReply( |
| 532 thread_->task_runner().get(), FROM_HERE, | 535 thread_->task_runner().get(), FROM_HERE, |
| 533 base::Bind(&HistoryBackend::GetFaviconsForURL, history_backend_.get(), | 536 base::Bind(&HistoryBackend::GetFaviconsForURL, history_backend_.get(), |
| 534 page_url, icon_types, desired_sizes, results), | 537 page_url, icon_types, desired_sizes, results), |
| 535 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 538 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
| 536 } | 539 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 551 history_backend_.get(), page_url, icon_types, | 554 history_backend_.get(), page_url, icon_types, |
| 552 minimum_size_in_pixels, result), | 555 minimum_size_in_pixels, result), |
| 553 base::Bind(&RunWithFaviconResult, callback, base::Owned(result))); | 556 base::Bind(&RunWithFaviconResult, callback, base::Owned(result))); |
| 554 } | 557 } |
| 555 | 558 |
| 556 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( | 559 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( |
| 557 favicon_base::FaviconID favicon_id, | 560 favicon_base::FaviconID favicon_id, |
| 558 int desired_size, | 561 int desired_size, |
| 559 const favicon_base::FaviconResultsCallback& callback, | 562 const favicon_base::FaviconResultsCallback& callback, |
| 560 base::CancelableTaskTracker* tracker) { | 563 base::CancelableTaskTracker* tracker) { |
| 564 TRACE_EVENT0("browser", "HistoryService::GetFaviconForID"); |
| 561 DCHECK(thread_) << "History service being called after cleanup"; | 565 DCHECK(thread_) << "History service being called after cleanup"; |
| 562 DCHECK(thread_checker_.CalledOnValidThread()); | 566 DCHECK(thread_checker_.CalledOnValidThread()); |
| 563 std::vector<favicon_base::FaviconRawBitmapResult>* results = | 567 std::vector<favicon_base::FaviconRawBitmapResult>* results = |
| 564 new std::vector<favicon_base::FaviconRawBitmapResult>(); | 568 new std::vector<favicon_base::FaviconRawBitmapResult>(); |
| 565 return tracker->PostTaskAndReply( | 569 return tracker->PostTaskAndReply( |
| 566 thread_->task_runner().get(), FROM_HERE, | 570 thread_->task_runner().get(), FROM_HERE, |
| 567 base::Bind(&HistoryBackend::GetFaviconForID, history_backend_.get(), | 571 base::Bind(&HistoryBackend::GetFaviconForID, history_backend_.get(), |
| 568 favicon_id, desired_size, results), | 572 favicon_id, desired_size, results), |
| 569 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 573 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
| 570 } | 574 } |
| 571 | 575 |
| 572 base::CancelableTaskTracker::TaskId | 576 base::CancelableTaskTracker::TaskId |
| 573 HistoryService::UpdateFaviconMappingsAndFetch( | 577 HistoryService::UpdateFaviconMappingsAndFetch( |
| 574 const GURL& page_url, | 578 const GURL& page_url, |
| 575 const std::vector<GURL>& icon_urls, | 579 const std::vector<GURL>& icon_urls, |
| 576 int icon_types, | 580 int icon_types, |
| 577 const std::vector<int>& desired_sizes, | 581 const std::vector<int>& desired_sizes, |
| 578 const favicon_base::FaviconResultsCallback& callback, | 582 const favicon_base::FaviconResultsCallback& callback, |
| 579 base::CancelableTaskTracker* tracker) { | 583 base::CancelableTaskTracker* tracker) { |
| 584 TRACE_EVENT0("browser", "HistoryService::UpdateFaviconMappingsAndFetch"); |
| 580 DCHECK(thread_) << "History service being called after cleanup"; | 585 DCHECK(thread_) << "History service being called after cleanup"; |
| 581 DCHECK(thread_checker_.CalledOnValidThread()); | 586 DCHECK(thread_checker_.CalledOnValidThread()); |
| 582 std::vector<favicon_base::FaviconRawBitmapResult>* results = | 587 std::vector<favicon_base::FaviconRawBitmapResult>* results = |
| 583 new std::vector<favicon_base::FaviconRawBitmapResult>(); | 588 new std::vector<favicon_base::FaviconRawBitmapResult>(); |
| 584 return tracker->PostTaskAndReply( | 589 return tracker->PostTaskAndReply( |
| 585 thread_->task_runner().get(), FROM_HERE, | 590 thread_->task_runner().get(), FROM_HERE, |
| 586 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, | 591 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, |
| 587 history_backend_.get(), page_url, icon_urls, icon_types, | 592 history_backend_.get(), page_url, icon_urls, icon_types, |
| 588 desired_sizes, results), | 593 desired_sizes, results), |
| 589 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 594 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
| 590 } | 595 } |
| 591 | 596 |
| 592 void HistoryService::MergeFavicon( | 597 void HistoryService::MergeFavicon( |
| 593 const GURL& page_url, | 598 const GURL& page_url, |
| 594 const GURL& icon_url, | 599 const GURL& icon_url, |
| 595 favicon_base::IconType icon_type, | 600 favicon_base::IconType icon_type, |
| 596 scoped_refptr<base::RefCountedMemory> bitmap_data, | 601 scoped_refptr<base::RefCountedMemory> bitmap_data, |
| 597 const gfx::Size& pixel_size) { | 602 const gfx::Size& pixel_size) { |
| 603 TRACE_EVENT0("browser", "HistoryService::MergeFavicon"); |
| 598 DCHECK(thread_) << "History service being called after cleanup"; | 604 DCHECK(thread_) << "History service being called after cleanup"; |
| 599 DCHECK(thread_checker_.CalledOnValidThread()); | 605 DCHECK(thread_checker_.CalledOnValidThread()); |
| 600 if (history_client_ && !history_client_->CanAddURL(page_url)) | 606 if (history_client_ && !history_client_->CanAddURL(page_url)) |
| 601 return; | 607 return; |
| 602 | 608 |
| 603 ScheduleTask( | 609 ScheduleTask( |
| 604 PRIORITY_NORMAL, | 610 PRIORITY_NORMAL, |
| 605 base::Bind(&HistoryBackend::MergeFavicon, history_backend_.get(), | 611 base::Bind(&HistoryBackend::MergeFavicon, history_backend_.get(), |
| 606 page_url, icon_url, icon_type, bitmap_data, pixel_size)); | 612 page_url, icon_url, icon_type, bitmap_data, pixel_size)); |
| 607 } | 613 } |
| (...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1134 return favicon_changed_callback_list_.Add(callback); | 1140 return favicon_changed_callback_list_.Add(callback); |
| 1135 } | 1141 } |
| 1136 | 1142 |
| 1137 void HistoryService::NotifyFaviconsChanged(const std::set<GURL>& page_urls, | 1143 void HistoryService::NotifyFaviconsChanged(const std::set<GURL>& page_urls, |
| 1138 const GURL& icon_url) { | 1144 const GURL& icon_url) { |
| 1139 DCHECK(thread_checker_.CalledOnValidThread()); | 1145 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1140 favicon_changed_callback_list_.Notify(page_urls, icon_url); | 1146 favicon_changed_callback_list_.Notify(page_urls, icon_url); |
| 1141 } | 1147 } |
| 1142 | 1148 |
| 1143 } // namespace history | 1149 } // namespace history |
| OLD | NEW |