| 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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 #include "third_party/skia/include/core/SkBitmap.h" | 67 #include "third_party/skia/include/core/SkBitmap.h" |
| 68 | 68 |
| 69 using base::Time; | 69 using base::Time; |
| 70 using history::HistoryBackend; | 70 using history::HistoryBackend; |
| 71 | 71 |
| 72 namespace { | 72 namespace { |
| 73 | 73 |
| 74 static const char* kHistoryThreadName = "Chrome_HistoryThread"; | 74 static const char* kHistoryThreadName = "Chrome_HistoryThread"; |
| 75 | 75 |
| 76 void RunWithFaviconResults( | 76 void RunWithFaviconResults( |
| 77 const FaviconService::FaviconResultsCallback& callback, | 77 const favicon_base::FaviconResultsCallback& callback, |
| 78 std::vector<favicon_base::FaviconBitmapResult>* bitmap_results) { | 78 std::vector<favicon_base::FaviconBitmapResult>* bitmap_results) { |
| 79 callback.Run(*bitmap_results); | 79 callback.Run(*bitmap_results); |
| 80 } | 80 } |
| 81 | 81 |
| 82 void RunWithFaviconResult(const FaviconService::FaviconRawCallback& callback, | 82 void RunWithFaviconResult(const favicon_base::FaviconRawCallback& callback, |
| 83 favicon_base::FaviconBitmapResult* bitmap_result) { | 83 favicon_base::FaviconBitmapResult* bitmap_result) { |
| 84 callback.Run(*bitmap_result); | 84 callback.Run(*bitmap_result); |
| 85 } | 85 } |
| 86 | 86 |
| 87 // Extract history::URLRows into GURLs for VisitedLinkMaster. | 87 // Extract history::URLRows into GURLs for VisitedLinkMaster. |
| 88 class URLIteratorFromURLRows | 88 class URLIteratorFromURLRows |
| 89 : public visitedlink::VisitedLinkMaster::URLIterator { | 89 : public visitedlink::VisitedLinkMaster::URLIterator { |
| 90 public: | 90 public: |
| 91 explicit URLIteratorFromURLRows(const history::URLRows& url_rows) | 91 explicit URLIteratorFromURLRows(const history::URLRows& url_rows) |
| 92 : itr_(url_rows.begin()), | 92 : itr_(url_rows.begin()), |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 | 552 |
| 553 ScheduleAndForget(PRIORITY_NORMAL, | 553 ScheduleAndForget(PRIORITY_NORMAL, |
| 554 &HistoryBackend::AddPagesWithDetails, info, visit_source); | 554 &HistoryBackend::AddPagesWithDetails, info, visit_source); |
| 555 } | 555 } |
| 556 | 556 |
| 557 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( | 557 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( |
| 558 const std::vector<GURL>& icon_urls, | 558 const std::vector<GURL>& icon_urls, |
| 559 int icon_types, | 559 int icon_types, |
| 560 int desired_size_in_dip, | 560 int desired_size_in_dip, |
| 561 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 561 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
| 562 const FaviconService::FaviconResultsCallback& callback, | 562 const favicon_base::FaviconResultsCallback& callback, |
| 563 base::CancelableTaskTracker* tracker) { | 563 base::CancelableTaskTracker* tracker) { |
| 564 DCHECK(thread_checker_.CalledOnValidThread()); | 564 DCHECK(thread_checker_.CalledOnValidThread()); |
| 565 | 565 |
| 566 std::vector<favicon_base::FaviconBitmapResult>* results = | 566 std::vector<favicon_base::FaviconBitmapResult>* results = |
| 567 new std::vector<favicon_base::FaviconBitmapResult>(); | 567 new std::vector<favicon_base::FaviconBitmapResult>(); |
| 568 return tracker->PostTaskAndReply( | 568 return tracker->PostTaskAndReply( |
| 569 thread_->message_loop_proxy().get(), | 569 thread_->message_loop_proxy().get(), |
| 570 FROM_HERE, | 570 FROM_HERE, |
| 571 base::Bind(&HistoryBackend::GetFavicons, | 571 base::Bind(&HistoryBackend::GetFavicons, |
| 572 history_backend_.get(), | 572 history_backend_.get(), |
| 573 icon_urls, | 573 icon_urls, |
| 574 icon_types, | 574 icon_types, |
| 575 desired_size_in_dip, | 575 desired_size_in_dip, |
| 576 desired_scale_factors, | 576 desired_scale_factors, |
| 577 results), | 577 results), |
| 578 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 578 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
| 579 } | 579 } |
| 580 | 580 |
| 581 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( | 581 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( |
| 582 const GURL& page_url, | 582 const GURL& page_url, |
| 583 int icon_types, | 583 int icon_types, |
| 584 int desired_size_in_dip, | 584 int desired_size_in_dip, |
| 585 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 585 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
| 586 const FaviconService::FaviconResultsCallback& callback, | 586 const favicon_base::FaviconResultsCallback& callback, |
| 587 base::CancelableTaskTracker* tracker) { | 587 base::CancelableTaskTracker* tracker) { |
| 588 DCHECK(thread_checker_.CalledOnValidThread()); | 588 DCHECK(thread_checker_.CalledOnValidThread()); |
| 589 | 589 |
| 590 std::vector<favicon_base::FaviconBitmapResult>* results = | 590 std::vector<favicon_base::FaviconBitmapResult>* results = |
| 591 new std::vector<favicon_base::FaviconBitmapResult>(); | 591 new std::vector<favicon_base::FaviconBitmapResult>(); |
| 592 return tracker->PostTaskAndReply( | 592 return tracker->PostTaskAndReply( |
| 593 thread_->message_loop_proxy().get(), | 593 thread_->message_loop_proxy().get(), |
| 594 FROM_HERE, | 594 FROM_HERE, |
| 595 base::Bind(&HistoryBackend::GetFaviconsForURL, | 595 base::Bind(&HistoryBackend::GetFaviconsForURL, |
| 596 history_backend_.get(), | 596 history_backend_.get(), |
| 597 page_url, | 597 page_url, |
| 598 icon_types, | 598 icon_types, |
| 599 desired_size_in_dip, | 599 desired_size_in_dip, |
| 600 desired_scale_factors, | 600 desired_scale_factors, |
| 601 results), | 601 results), |
| 602 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 602 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
| 603 } | 603 } |
| 604 | 604 |
| 605 base::CancelableTaskTracker::TaskId HistoryService::GetLargestFaviconForURL( | 605 base::CancelableTaskTracker::TaskId HistoryService::GetLargestFaviconForURL( |
| 606 const GURL& page_url, | 606 const GURL& page_url, |
| 607 const std::vector<int>& icon_types, | 607 const std::vector<int>& icon_types, |
| 608 int minimum_size_in_pixels, | 608 int minimum_size_in_pixels, |
| 609 const FaviconService::FaviconRawCallback& callback, | 609 const favicon_base::FaviconRawCallback& callback, |
| 610 base::CancelableTaskTracker* tracker) { | 610 base::CancelableTaskTracker* tracker) { |
| 611 DCHECK(thread_checker_.CalledOnValidThread()); | 611 DCHECK(thread_checker_.CalledOnValidThread()); |
| 612 | 612 |
| 613 favicon_base::FaviconBitmapResult* result = | 613 favicon_base::FaviconBitmapResult* result = |
| 614 new favicon_base::FaviconBitmapResult(); | 614 new favicon_base::FaviconBitmapResult(); |
| 615 return tracker->PostTaskAndReply( | 615 return tracker->PostTaskAndReply( |
| 616 thread_->message_loop_proxy().get(), | 616 thread_->message_loop_proxy().get(), |
| 617 FROM_HERE, | 617 FROM_HERE, |
| 618 base::Bind(&HistoryBackend::GetLargestFaviconForURL, | 618 base::Bind(&HistoryBackend::GetLargestFaviconForURL, |
| 619 history_backend_.get(), | 619 history_backend_.get(), |
| 620 page_url, | 620 page_url, |
| 621 icon_types, | 621 icon_types, |
| 622 minimum_size_in_pixels, | 622 minimum_size_in_pixels, |
| 623 result), | 623 result), |
| 624 base::Bind(&RunWithFaviconResult, callback, base::Owned(result))); | 624 base::Bind(&RunWithFaviconResult, callback, base::Owned(result))); |
| 625 } | 625 } |
| 626 | 626 |
| 627 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( | 627 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( |
| 628 favicon_base::FaviconID favicon_id, | 628 favicon_base::FaviconID favicon_id, |
| 629 int desired_size_in_dip, | 629 int desired_size_in_dip, |
| 630 ui::ScaleFactor desired_scale_factor, | 630 ui::ScaleFactor desired_scale_factor, |
| 631 const FaviconService::FaviconResultsCallback& callback, | 631 const favicon_base::FaviconResultsCallback& callback, |
| 632 base::CancelableTaskTracker* tracker) { | 632 base::CancelableTaskTracker* tracker) { |
| 633 DCHECK(thread_checker_.CalledOnValidThread()); | 633 DCHECK(thread_checker_.CalledOnValidThread()); |
| 634 | 634 |
| 635 std::vector<favicon_base::FaviconBitmapResult>* results = | 635 std::vector<favicon_base::FaviconBitmapResult>* results = |
| 636 new std::vector<favicon_base::FaviconBitmapResult>(); | 636 new std::vector<favicon_base::FaviconBitmapResult>(); |
| 637 return tracker->PostTaskAndReply( | 637 return tracker->PostTaskAndReply( |
| 638 thread_->message_loop_proxy().get(), | 638 thread_->message_loop_proxy().get(), |
| 639 FROM_HERE, | 639 FROM_HERE, |
| 640 base::Bind(&HistoryBackend::GetFaviconForID, | 640 base::Bind(&HistoryBackend::GetFaviconForID, |
| 641 history_backend_.get(), | 641 history_backend_.get(), |
| 642 favicon_id, | 642 favicon_id, |
| 643 desired_size_in_dip, | 643 desired_size_in_dip, |
| 644 desired_scale_factor, | 644 desired_scale_factor, |
| 645 results), | 645 results), |
| 646 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 646 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
| 647 } | 647 } |
| 648 | 648 |
| 649 base::CancelableTaskTracker::TaskId | 649 base::CancelableTaskTracker::TaskId |
| 650 HistoryService::UpdateFaviconMappingsAndFetch( | 650 HistoryService::UpdateFaviconMappingsAndFetch( |
| 651 const GURL& page_url, | 651 const GURL& page_url, |
| 652 const std::vector<GURL>& icon_urls, | 652 const std::vector<GURL>& icon_urls, |
| 653 int icon_types, | 653 int icon_types, |
| 654 int desired_size_in_dip, | 654 int desired_size_in_dip, |
| 655 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 655 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
| 656 const FaviconService::FaviconResultsCallback& callback, | 656 const favicon_base::FaviconResultsCallback& callback, |
| 657 base::CancelableTaskTracker* tracker) { | 657 base::CancelableTaskTracker* tracker) { |
| 658 DCHECK(thread_checker_.CalledOnValidThread()); | 658 DCHECK(thread_checker_.CalledOnValidThread()); |
| 659 | 659 |
| 660 std::vector<favicon_base::FaviconBitmapResult>* results = | 660 std::vector<favicon_base::FaviconBitmapResult>* results = |
| 661 new std::vector<favicon_base::FaviconBitmapResult>(); | 661 new std::vector<favicon_base::FaviconBitmapResult>(); |
| 662 return tracker->PostTaskAndReply( | 662 return tracker->PostTaskAndReply( |
| 663 thread_->message_loop_proxy().get(), | 663 thread_->message_loop_proxy().get(), |
| 664 FROM_HERE, | 664 FROM_HERE, |
| 665 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, | 665 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, |
| 666 history_backend_.get(), | 666 history_backend_.get(), |
| (...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1186 DCHECK(thread_checker_.CalledOnValidThread()); | 1186 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1187 visit_database_observers_.RemoveObserver(observer); | 1187 visit_database_observers_.RemoveObserver(observer); |
| 1188 } | 1188 } |
| 1189 | 1189 |
| 1190 void HistoryService::NotifyVisitDBObserversOnAddVisit( | 1190 void HistoryService::NotifyVisitDBObserversOnAddVisit( |
| 1191 const history::BriefVisitInfo& info) { | 1191 const history::BriefVisitInfo& info) { |
| 1192 DCHECK(thread_checker_.CalledOnValidThread()); | 1192 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1193 FOR_EACH_OBSERVER(history::VisitDatabaseObserver, visit_database_observers_, | 1193 FOR_EACH_OBSERVER(history::VisitDatabaseObserver, visit_database_observers_, |
| 1194 OnAddVisit(info)); | 1194 OnAddVisit(info)); |
| 1195 } | 1195 } |
| OLD | NEW |