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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 | 64 |
65 using base::Time; | 65 using base::Time; |
66 using history::HistoryBackend; | 66 using history::HistoryBackend; |
67 | 67 |
68 namespace { | 68 namespace { |
69 | 69 |
70 static const char* kHistoryThreadName = "Chrome_HistoryThread"; | 70 static const char* kHistoryThreadName = "Chrome_HistoryThread"; |
71 | 71 |
72 void RunWithFaviconResults( | 72 void RunWithFaviconResults( |
73 const favicon_base::FaviconResultsCallback& callback, | 73 const favicon_base::FaviconResultsCallback& callback, |
74 std::vector<favicon_base::FaviconBitmapResult>* bitmap_results) { | 74 std::vector<favicon_base::FaviconRawBitmapResult>* bitmap_results) { |
75 callback.Run(*bitmap_results); | 75 callback.Run(*bitmap_results); |
76 } | 76 } |
77 | 77 |
78 void RunWithFaviconResult(const favicon_base::FaviconRawCallback& callback, | 78 void RunWithFaviconResult( |
79 favicon_base::FaviconBitmapResult* bitmap_result) { | 79 const favicon_base::FaviconRawBitmapCallback& callback, |
| 80 favicon_base::FaviconRawBitmapResult* bitmap_result) { |
80 callback.Run(*bitmap_result); | 81 callback.Run(*bitmap_result); |
81 } | 82 } |
82 | 83 |
83 // Extract history::URLRows into GURLs for VisitedLinkMaster. | 84 // Extract history::URLRows into GURLs for VisitedLinkMaster. |
84 class URLIteratorFromURLRows | 85 class URLIteratorFromURLRows |
85 : public visitedlink::VisitedLinkMaster::URLIterator { | 86 : public visitedlink::VisitedLinkMaster::URLIterator { |
86 public: | 87 public: |
87 explicit URLIteratorFromURLRows(const history::URLRows& url_rows) | 88 explicit URLIteratorFromURLRows(const history::URLRows& url_rows) |
88 : itr_(url_rows.begin()), | 89 : itr_(url_rows.begin()), |
89 end_(url_rows.end()) { | 90 end_(url_rows.end()) { |
(...skipping 450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
540 | 541 |
541 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( | 542 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( |
542 const std::vector<GURL>& icon_urls, | 543 const std::vector<GURL>& icon_urls, |
543 int icon_types, | 544 int icon_types, |
544 int desired_size_in_dip, | 545 int desired_size_in_dip, |
545 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 546 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
546 const favicon_base::FaviconResultsCallback& callback, | 547 const favicon_base::FaviconResultsCallback& callback, |
547 base::CancelableTaskTracker* tracker) { | 548 base::CancelableTaskTracker* tracker) { |
548 DCHECK(thread_checker_.CalledOnValidThread()); | 549 DCHECK(thread_checker_.CalledOnValidThread()); |
549 | 550 |
550 std::vector<favicon_base::FaviconBitmapResult>* results = | 551 std::vector<favicon_base::FaviconRawBitmapResult>* results = |
551 new std::vector<favicon_base::FaviconBitmapResult>(); | 552 new std::vector<favicon_base::FaviconRawBitmapResult>(); |
552 return tracker->PostTaskAndReply( | 553 return tracker->PostTaskAndReply( |
553 thread_->message_loop_proxy().get(), | 554 thread_->message_loop_proxy().get(), |
554 FROM_HERE, | 555 FROM_HERE, |
555 base::Bind(&HistoryBackend::GetFavicons, | 556 base::Bind(&HistoryBackend::GetFavicons, |
556 history_backend_.get(), | 557 history_backend_.get(), |
557 icon_urls, | 558 icon_urls, |
558 icon_types, | 559 icon_types, |
559 desired_size_in_dip, | 560 desired_size_in_dip, |
560 desired_scale_factors, | 561 desired_scale_factors, |
561 results), | 562 results), |
562 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 563 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
563 } | 564 } |
564 | 565 |
565 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( | 566 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( |
566 const GURL& page_url, | 567 const GURL& page_url, |
567 int icon_types, | 568 int icon_types, |
568 int desired_size_in_dip, | 569 int desired_size_in_dip, |
569 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 570 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
570 const favicon_base::FaviconResultsCallback& callback, | 571 const favicon_base::FaviconResultsCallback& callback, |
571 base::CancelableTaskTracker* tracker) { | 572 base::CancelableTaskTracker* tracker) { |
572 DCHECK(thread_checker_.CalledOnValidThread()); | 573 DCHECK(thread_checker_.CalledOnValidThread()); |
573 | 574 |
574 std::vector<favicon_base::FaviconBitmapResult>* results = | 575 std::vector<favicon_base::FaviconRawBitmapResult>* results = |
575 new std::vector<favicon_base::FaviconBitmapResult>(); | 576 new std::vector<favicon_base::FaviconRawBitmapResult>(); |
576 return tracker->PostTaskAndReply( | 577 return tracker->PostTaskAndReply( |
577 thread_->message_loop_proxy().get(), | 578 thread_->message_loop_proxy().get(), |
578 FROM_HERE, | 579 FROM_HERE, |
579 base::Bind(&HistoryBackend::GetFaviconsForURL, | 580 base::Bind(&HistoryBackend::GetFaviconsForURL, |
580 history_backend_.get(), | 581 history_backend_.get(), |
581 page_url, | 582 page_url, |
582 icon_types, | 583 icon_types, |
583 desired_size_in_dip, | 584 desired_size_in_dip, |
584 desired_scale_factors, | 585 desired_scale_factors, |
585 results), | 586 results), |
586 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 587 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
587 } | 588 } |
588 | 589 |
589 base::CancelableTaskTracker::TaskId HistoryService::GetLargestFaviconForURL( | 590 base::CancelableTaskTracker::TaskId HistoryService::GetLargestFaviconForURL( |
590 const GURL& page_url, | 591 const GURL& page_url, |
591 const std::vector<int>& icon_types, | 592 const std::vector<int>& icon_types, |
592 int minimum_size_in_pixels, | 593 int minimum_size_in_pixels, |
593 const favicon_base::FaviconRawCallback& callback, | 594 const favicon_base::FaviconRawBitmapCallback& callback, |
594 base::CancelableTaskTracker* tracker) { | 595 base::CancelableTaskTracker* tracker) { |
595 DCHECK(thread_checker_.CalledOnValidThread()); | 596 DCHECK(thread_checker_.CalledOnValidThread()); |
596 | 597 |
597 favicon_base::FaviconBitmapResult* result = | 598 favicon_base::FaviconRawBitmapResult* result = |
598 new favicon_base::FaviconBitmapResult(); | 599 new favicon_base::FaviconRawBitmapResult(); |
599 return tracker->PostTaskAndReply( | 600 return tracker->PostTaskAndReply( |
600 thread_->message_loop_proxy().get(), | 601 thread_->message_loop_proxy().get(), |
601 FROM_HERE, | 602 FROM_HERE, |
602 base::Bind(&HistoryBackend::GetLargestFaviconForURL, | 603 base::Bind(&HistoryBackend::GetLargestFaviconForURL, |
603 history_backend_.get(), | 604 history_backend_.get(), |
604 page_url, | 605 page_url, |
605 icon_types, | 606 icon_types, |
606 minimum_size_in_pixels, | 607 minimum_size_in_pixels, |
607 result), | 608 result), |
608 base::Bind(&RunWithFaviconResult, callback, base::Owned(result))); | 609 base::Bind(&RunWithFaviconResult, callback, base::Owned(result))); |
609 } | 610 } |
610 | 611 |
611 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( | 612 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( |
612 favicon_base::FaviconID favicon_id, | 613 favicon_base::FaviconID favicon_id, |
613 int desired_size_in_dip, | 614 int desired_size_in_dip, |
614 ui::ScaleFactor desired_scale_factor, | 615 ui::ScaleFactor desired_scale_factor, |
615 const favicon_base::FaviconResultsCallback& callback, | 616 const favicon_base::FaviconResultsCallback& callback, |
616 base::CancelableTaskTracker* tracker) { | 617 base::CancelableTaskTracker* tracker) { |
617 DCHECK(thread_checker_.CalledOnValidThread()); | 618 DCHECK(thread_checker_.CalledOnValidThread()); |
618 | 619 |
619 std::vector<favicon_base::FaviconBitmapResult>* results = | 620 std::vector<favicon_base::FaviconRawBitmapResult>* results = |
620 new std::vector<favicon_base::FaviconBitmapResult>(); | 621 new std::vector<favicon_base::FaviconRawBitmapResult>(); |
621 return tracker->PostTaskAndReply( | 622 return tracker->PostTaskAndReply( |
622 thread_->message_loop_proxy().get(), | 623 thread_->message_loop_proxy().get(), |
623 FROM_HERE, | 624 FROM_HERE, |
624 base::Bind(&HistoryBackend::GetFaviconForID, | 625 base::Bind(&HistoryBackend::GetFaviconForID, |
625 history_backend_.get(), | 626 history_backend_.get(), |
626 favicon_id, | 627 favicon_id, |
627 desired_size_in_dip, | 628 desired_size_in_dip, |
628 desired_scale_factor, | 629 desired_scale_factor, |
629 results), | 630 results), |
630 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 631 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
631 } | 632 } |
632 | 633 |
633 base::CancelableTaskTracker::TaskId | 634 base::CancelableTaskTracker::TaskId |
634 HistoryService::UpdateFaviconMappingsAndFetch( | 635 HistoryService::UpdateFaviconMappingsAndFetch( |
635 const GURL& page_url, | 636 const GURL& page_url, |
636 const std::vector<GURL>& icon_urls, | 637 const std::vector<GURL>& icon_urls, |
637 int icon_types, | 638 int icon_types, |
638 int desired_size_in_dip, | 639 int desired_size_in_dip, |
639 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 640 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
640 const favicon_base::FaviconResultsCallback& callback, | 641 const favicon_base::FaviconResultsCallback& callback, |
641 base::CancelableTaskTracker* tracker) { | 642 base::CancelableTaskTracker* tracker) { |
642 DCHECK(thread_checker_.CalledOnValidThread()); | 643 DCHECK(thread_checker_.CalledOnValidThread()); |
643 | 644 |
644 std::vector<favicon_base::FaviconBitmapResult>* results = | 645 std::vector<favicon_base::FaviconRawBitmapResult>* results = |
645 new std::vector<favicon_base::FaviconBitmapResult>(); | 646 new std::vector<favicon_base::FaviconRawBitmapResult>(); |
646 return tracker->PostTaskAndReply( | 647 return tracker->PostTaskAndReply( |
647 thread_->message_loop_proxy().get(), | 648 thread_->message_loop_proxy().get(), |
648 FROM_HERE, | 649 FROM_HERE, |
649 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, | 650 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, |
650 history_backend_.get(), | 651 history_backend_.get(), |
651 page_url, | 652 page_url, |
652 icon_urls, | 653 icon_urls, |
653 icon_types, | 654 icon_types, |
654 desired_size_in_dip, | 655 desired_size_in_dip, |
655 desired_scale_factors, | 656 desired_scale_factors, |
(...skipping 11 matching lines...) Expand all Loading... |
667 if (!CanAddURL(page_url)) | 668 if (!CanAddURL(page_url)) |
668 return; | 669 return; |
669 | 670 |
670 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::MergeFavicon, page_url, | 671 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::MergeFavicon, page_url, |
671 icon_url, icon_type, bitmap_data, pixel_size); | 672 icon_url, icon_type, bitmap_data, pixel_size); |
672 } | 673 } |
673 | 674 |
674 void HistoryService::SetFavicons( | 675 void HistoryService::SetFavicons( |
675 const GURL& page_url, | 676 const GURL& page_url, |
676 favicon_base::IconType icon_type, | 677 favicon_base::IconType icon_type, |
677 const std::vector<favicon_base::FaviconBitmapData>& favicon_bitmap_data) { | 678 const std::vector<favicon_base::FaviconRawBitmapData>& |
| 679 favicon_bitmap_data) { |
678 DCHECK(thread_checker_.CalledOnValidThread()); | 680 DCHECK(thread_checker_.CalledOnValidThread()); |
679 if (!CanAddURL(page_url)) | 681 if (!CanAddURL(page_url)) |
680 return; | 682 return; |
681 | 683 |
682 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::SetFavicons, page_url, | 684 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::SetFavicons, page_url, |
683 icon_type, favicon_bitmap_data); | 685 icon_type, favicon_bitmap_data); |
684 } | 686 } |
685 | 687 |
686 void HistoryService::SetFaviconsOutOfDateForPage(const GURL& page_url) { | 688 void HistoryService::SetFaviconsOutOfDateForPage(const GURL& page_url) { |
687 DCHECK(thread_checker_.CalledOnValidThread()); | 689 DCHECK(thread_checker_.CalledOnValidThread()); |
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1165 DCHECK(thread_checker_.CalledOnValidThread()); | 1167 DCHECK(thread_checker_.CalledOnValidThread()); |
1166 visit_database_observers_.RemoveObserver(observer); | 1168 visit_database_observers_.RemoveObserver(observer); |
1167 } | 1169 } |
1168 | 1170 |
1169 void HistoryService::NotifyVisitDBObserversOnAddVisit( | 1171 void HistoryService::NotifyVisitDBObserversOnAddVisit( |
1170 const history::BriefVisitInfo& info) { | 1172 const history::BriefVisitInfo& info) { |
1171 DCHECK(thread_checker_.CalledOnValidThread()); | 1173 DCHECK(thread_checker_.CalledOnValidThread()); |
1172 FOR_EACH_OBSERVER(history::VisitDatabaseObserver, visit_database_observers_, | 1174 FOR_EACH_OBSERVER(history::VisitDatabaseObserver, visit_database_observers_, |
1173 OnAddVisit(info)); | 1175 OnAddVisit(info)); |
1174 } | 1176 } |
OLD | NEW |