| 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 |