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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 } | 100 } |
101 | 101 |
102 void DerefDownloadId( | 102 void DerefDownloadId( |
103 const HistoryService::DownloadNextIdCallback& callback, | 103 const HistoryService::DownloadNextIdCallback& callback, |
104 int* id) { | 104 int* id) { |
105 callback.Run(*id); | 105 callback.Run(*id); |
106 } | 106 } |
107 | 107 |
108 void RunWithFaviconResults( | 108 void RunWithFaviconResults( |
109 const FaviconService::FaviconResultsCallback& callback, | 109 const FaviconService::FaviconResultsCallback& callback, |
110 const HistoryBackend::FaviconResults* results) { | 110 std::vector<history::FaviconBitmapResult>* bitmap_results) { |
111 callback.Run(results->bitmap_results, results->size_map); | 111 callback.Run(*bitmap_results); |
112 } | 112 } |
113 | 113 |
114 // Extract history::URLRows into GURLs for VisitedLinkMaster. | 114 // Extract history::URLRows into GURLs for VisitedLinkMaster. |
115 class URLIteratorFromURLRows : public VisitedLinkMaster::URLIterator { | 115 class URLIteratorFromURLRows : public VisitedLinkMaster::URLIterator { |
116 public: | 116 public: |
117 explicit URLIteratorFromURLRows(const history::URLRows& url_rows) | 117 explicit URLIteratorFromURLRows(const history::URLRows& url_rows) |
118 : itr_(url_rows.begin()), | 118 : itr_(url_rows.begin()), |
119 end_(url_rows.end()) { | 119 end_(url_rows.end()) { |
120 } | 120 } |
121 | 121 |
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
610 CancelableTaskTracker::TaskId HistoryService::GetFavicons( | 610 CancelableTaskTracker::TaskId HistoryService::GetFavicons( |
611 const std::vector<GURL>& icon_urls, | 611 const std::vector<GURL>& icon_urls, |
612 int icon_types, | 612 int icon_types, |
613 int desired_size_in_dip, | 613 int desired_size_in_dip, |
614 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 614 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
615 const FaviconService::FaviconResultsCallback& callback, | 615 const FaviconService::FaviconResultsCallback& callback, |
616 CancelableTaskTracker* tracker) { | 616 CancelableTaskTracker* tracker) { |
617 DCHECK(thread_checker_.CalledOnValidThread()); | 617 DCHECK(thread_checker_.CalledOnValidThread()); |
618 LoadBackendIfNecessary(); | 618 LoadBackendIfNecessary(); |
619 | 619 |
620 HistoryBackend::FaviconResults* results = | 620 std::vector<history::FaviconBitmapResult>* results = |
621 new HistoryBackend::FaviconResults(); | 621 new std::vector<history::FaviconBitmapResult>(); |
622 return tracker->PostTaskAndReply( | 622 return tracker->PostTaskAndReply( |
623 thread_->message_loop_proxy(), | 623 thread_->message_loop_proxy(), |
624 FROM_HERE, | 624 FROM_HERE, |
625 base::Bind(&HistoryBackend::GetFavicons, | 625 base::Bind(&HistoryBackend::GetFavicons, |
626 history_backend_.get(), icon_urls, icon_types, | 626 history_backend_.get(), icon_urls, icon_types, |
627 desired_size_in_dip, desired_scale_factors, results), | 627 desired_size_in_dip, desired_scale_factors, results), |
628 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 628 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
629 } | 629 } |
630 | 630 |
631 CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( | 631 CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( |
632 const GURL& page_url, | 632 const GURL& page_url, |
633 int icon_types, | 633 int icon_types, |
634 int desired_size_in_dip, | 634 int desired_size_in_dip, |
635 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 635 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
636 const FaviconService::FaviconResultsCallback& callback, | 636 const FaviconService::FaviconResultsCallback& callback, |
637 CancelableTaskTracker* tracker) { | 637 CancelableTaskTracker* tracker) { |
638 DCHECK(thread_checker_.CalledOnValidThread()); | 638 DCHECK(thread_checker_.CalledOnValidThread()); |
639 LoadBackendIfNecessary(); | 639 LoadBackendIfNecessary(); |
640 | 640 |
641 HistoryBackend::FaviconResults* results = | 641 std::vector<history::FaviconBitmapResult>* results = |
642 new HistoryBackend::FaviconResults(); | 642 new std::vector<history::FaviconBitmapResult>(); |
643 return tracker->PostTaskAndReply( | 643 return tracker->PostTaskAndReply( |
644 thread_->message_loop_proxy(), | 644 thread_->message_loop_proxy(), |
645 FROM_HERE, | 645 FROM_HERE, |
646 base::Bind(&HistoryBackend::GetFaviconsForURL, | 646 base::Bind(&HistoryBackend::GetFaviconsForURL, |
647 history_backend_.get(), page_url, icon_types, | 647 history_backend_.get(), page_url, icon_types, |
648 desired_size_in_dip, desired_scale_factors, results), | 648 desired_size_in_dip, desired_scale_factors, results), |
649 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 649 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
650 } | 650 } |
651 | 651 |
652 CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( | 652 CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( |
653 history::FaviconID favicon_id, | 653 history::FaviconID favicon_id, |
654 int desired_size_in_dip, | 654 int desired_size_in_dip, |
655 ui::ScaleFactor desired_scale_factor, | 655 ui::ScaleFactor desired_scale_factor, |
656 const FaviconService::FaviconResultsCallback& callback, | 656 const FaviconService::FaviconResultsCallback& callback, |
657 CancelableTaskTracker* tracker) { | 657 CancelableTaskTracker* tracker) { |
658 DCHECK(thread_checker_.CalledOnValidThread()); | 658 DCHECK(thread_checker_.CalledOnValidThread()); |
659 LoadBackendIfNecessary(); | 659 LoadBackendIfNecessary(); |
660 | 660 |
661 HistoryBackend::FaviconResults* results = | 661 std::vector<history::FaviconBitmapResult>* results = |
662 new HistoryBackend::FaviconResults(); | 662 new std::vector<history::FaviconBitmapResult>(); |
663 return tracker->PostTaskAndReply( | 663 return tracker->PostTaskAndReply( |
664 thread_->message_loop_proxy(), | 664 thread_->message_loop_proxy(), |
665 FROM_HERE, | 665 FROM_HERE, |
666 base::Bind(&HistoryBackend::GetFaviconForID, | 666 base::Bind(&HistoryBackend::GetFaviconForID, |
667 history_backend_.get(), favicon_id, | 667 history_backend_.get(), favicon_id, |
668 desired_size_in_dip, desired_scale_factor, results), | 668 desired_size_in_dip, desired_scale_factor, results), |
669 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 669 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
670 } | 670 } |
671 | 671 |
672 CancelableTaskTracker::TaskId HistoryService::UpdateFaviconMappingsAndFetch( | 672 CancelableTaskTracker::TaskId HistoryService::UpdateFaviconMappingsAndFetch( |
673 const GURL& page_url, | 673 const GURL& page_url, |
674 const std::vector<GURL>& icon_urls, | 674 const std::vector<GURL>& icon_urls, |
675 int icon_types, | 675 int icon_types, |
676 int desired_size_in_dip, | 676 int desired_size_in_dip, |
677 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 677 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
678 const FaviconService::FaviconResultsCallback& callback, | 678 const FaviconService::FaviconResultsCallback& callback, |
679 CancelableTaskTracker* tracker) { | 679 CancelableTaskTracker* tracker) { |
680 DCHECK(thread_checker_.CalledOnValidThread()); | 680 DCHECK(thread_checker_.CalledOnValidThread()); |
681 LoadBackendIfNecessary(); | 681 LoadBackendIfNecessary(); |
682 | 682 |
683 HistoryBackend::FaviconResults* results = | 683 std::vector<history::FaviconBitmapResult>* results = |
684 new HistoryBackend::FaviconResults(); | 684 new std::vector<history::FaviconBitmapResult>(); |
685 return tracker->PostTaskAndReply( | 685 return tracker->PostTaskAndReply( |
686 thread_->message_loop_proxy(), | 686 thread_->message_loop_proxy(), |
687 FROM_HERE, | 687 FROM_HERE, |
688 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, | 688 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, |
689 history_backend_.get(), page_url, icon_urls, icon_types, | 689 history_backend_.get(), page_url, icon_urls, icon_types, |
690 desired_size_in_dip, desired_scale_factors, results), | 690 desired_size_in_dip, desired_scale_factors, results), |
691 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 691 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
692 } | 692 } |
693 | 693 |
694 void HistoryService::MergeFavicon( | 694 void HistoryService::MergeFavicon( |
695 const GURL& page_url, | 695 const GURL& page_url, |
696 const GURL& icon_url, | 696 const GURL& icon_url, |
697 history::IconType icon_type, | 697 history::IconType icon_type, |
698 scoped_refptr<base::RefCountedMemory> bitmap_data, | 698 scoped_refptr<base::RefCountedMemory> bitmap_data, |
699 const gfx::Size& pixel_size) { | 699 const gfx::Size& pixel_size) { |
700 DCHECK(thread_checker_.CalledOnValidThread()); | 700 DCHECK(thread_checker_.CalledOnValidThread()); |
701 if (!CanAddURL(page_url)) | 701 if (!CanAddURL(page_url)) |
702 return; | 702 return; |
703 | 703 |
704 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::MergeFavicon, page_url, | 704 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::MergeFavicon, page_url, |
705 icon_url, icon_type, bitmap_data, pixel_size); | 705 icon_url, icon_type, bitmap_data, pixel_size); |
706 } | 706 } |
707 | 707 |
708 void HistoryService::SetFavicons( | 708 void HistoryService::SetFavicons( |
709 const GURL& page_url, | 709 const GURL& page_url, |
710 history::IconType icon_type, | 710 history::IconType icon_type, |
711 const std::vector<history::FaviconBitmapData>& favicon_bitmap_data, | 711 const std::vector<history::FaviconBitmapData>& favicon_bitmap_data) { |
712 const history::IconURLSizesMap& icon_url_sizes) { | |
713 DCHECK(thread_checker_.CalledOnValidThread()); | 712 DCHECK(thread_checker_.CalledOnValidThread()); |
714 if (!CanAddURL(page_url)) | 713 if (!CanAddURL(page_url)) |
715 return; | 714 return; |
716 | 715 |
717 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::SetFavicons, page_url, | 716 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::SetFavicons, page_url, |
718 icon_type, favicon_bitmap_data, icon_url_sizes); | 717 icon_type, favicon_bitmap_data); |
719 } | 718 } |
720 | 719 |
721 void HistoryService::SetFaviconsOutOfDateForPage(const GURL& page_url) { | 720 void HistoryService::SetFaviconsOutOfDateForPage(const GURL& page_url) { |
722 DCHECK(thread_checker_.CalledOnValidThread()); | 721 DCHECK(thread_checker_.CalledOnValidThread()); |
723 ScheduleAndForget(PRIORITY_NORMAL, | 722 ScheduleAndForget(PRIORITY_NORMAL, |
724 &HistoryBackend::SetFaviconsOutOfDateForPage, page_url); | 723 &HistoryBackend::SetFaviconsOutOfDateForPage, page_url); |
725 } | 724 } |
726 | 725 |
727 void HistoryService::CloneFavicons(const GURL& old_page_url, | 726 void HistoryService::CloneFavicons(const GURL& old_page_url, |
728 const GURL& new_page_url) { | 727 const GURL& new_page_url) { |
(...skipping 637 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1366 } | 1365 } |
1367 } | 1366 } |
1368 | 1367 |
1369 void HistoryService::OnDeleteDirectiveProcessed( | 1368 void HistoryService::OnDeleteDirectiveProcessed( |
1370 const sync_pb::HistoryDeleteDirectiveSpecifics& delete_directive) { | 1369 const sync_pb::HistoryDeleteDirectiveSpecifics& delete_directive) { |
1371 DVLOG(1) << "Processed delete directive: " | 1370 DVLOG(1) << "Processed delete directive: " |
1372 << DeleteDirectiveToString(delete_directive); | 1371 << DeleteDirectiveToString(delete_directive); |
1373 // TODO(akalin): Keep track of which delete directives we've already | 1372 // TODO(akalin): Keep track of which delete directives we've already |
1374 // processed. | 1373 // processed. |
1375 } | 1374 } |
OLD | NEW |