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 566 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
577 ++i) | 577 ++i) |
578 urls.push_back(i->url()); | 578 urls.push_back(i->url()); |
579 | 579 |
580 visitedlink_master_->AddURLs(urls); | 580 visitedlink_master_->AddURLs(urls); |
581 } | 581 } |
582 | 582 |
583 ScheduleAndForget(PRIORITY_NORMAL, | 583 ScheduleAndForget(PRIORITY_NORMAL, |
584 &HistoryBackend::AddPagesWithDetails, info, visit_source); | 584 &HistoryBackend::AddPagesWithDetails, info, visit_source); |
585 } | 585 } |
586 | 586 |
587 CancelableTaskTracker::TaskId HistoryService::GetFavicons( | 587 base::CancelableTaskTracker::TaskId HistoryService::GetFavicons( |
588 const std::vector<GURL>& icon_urls, | 588 const std::vector<GURL>& icon_urls, |
589 int icon_types, | 589 int icon_types, |
590 int desired_size_in_dip, | 590 int desired_size_in_dip, |
591 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 591 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
592 const FaviconService::FaviconResultsCallback& callback, | 592 const FaviconService::FaviconResultsCallback& callback, |
593 CancelableTaskTracker* tracker) { | 593 base::CancelableTaskTracker* tracker) { |
594 DCHECK(thread_checker_.CalledOnValidThread()); | 594 DCHECK(thread_checker_.CalledOnValidThread()); |
595 LoadBackendIfNecessary(); | 595 LoadBackendIfNecessary(); |
596 | 596 |
597 std::vector<chrome::FaviconBitmapResult>* results = | 597 std::vector<chrome::FaviconBitmapResult>* results = |
598 new std::vector<chrome::FaviconBitmapResult>(); | 598 new std::vector<chrome::FaviconBitmapResult>(); |
599 return tracker->PostTaskAndReply( | 599 return tracker->PostTaskAndReply( |
600 thread_->message_loop_proxy().get(), | 600 thread_->message_loop_proxy().get(), |
601 FROM_HERE, | 601 FROM_HERE, |
602 base::Bind(&HistoryBackend::GetFavicons, | 602 base::Bind(&HistoryBackend::GetFavicons, |
603 history_backend_.get(), | 603 history_backend_.get(), |
604 icon_urls, | 604 icon_urls, |
605 icon_types, | 605 icon_types, |
606 desired_size_in_dip, | 606 desired_size_in_dip, |
607 desired_scale_factors, | 607 desired_scale_factors, |
608 results), | 608 results), |
609 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 609 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
610 } | 610 } |
611 | 611 |
612 CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( | 612 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconsForURL( |
613 const GURL& page_url, | 613 const GURL& page_url, |
614 int icon_types, | 614 int icon_types, |
615 int desired_size_in_dip, | 615 int desired_size_in_dip, |
616 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 616 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
617 const FaviconService::FaviconResultsCallback& callback, | 617 const FaviconService::FaviconResultsCallback& callback, |
618 CancelableTaskTracker* tracker) { | 618 base::CancelableTaskTracker* tracker) { |
619 DCHECK(thread_checker_.CalledOnValidThread()); | 619 DCHECK(thread_checker_.CalledOnValidThread()); |
620 LoadBackendIfNecessary(); | 620 LoadBackendIfNecessary(); |
621 | 621 |
622 std::vector<chrome::FaviconBitmapResult>* results = | 622 std::vector<chrome::FaviconBitmapResult>* results = |
623 new std::vector<chrome::FaviconBitmapResult>(); | 623 new std::vector<chrome::FaviconBitmapResult>(); |
624 return tracker->PostTaskAndReply( | 624 return tracker->PostTaskAndReply( |
625 thread_->message_loop_proxy().get(), | 625 thread_->message_loop_proxy().get(), |
626 FROM_HERE, | 626 FROM_HERE, |
627 base::Bind(&HistoryBackend::GetFaviconsForURL, | 627 base::Bind(&HistoryBackend::GetFaviconsForURL, |
628 history_backend_.get(), | 628 history_backend_.get(), |
629 page_url, | 629 page_url, |
630 icon_types, | 630 icon_types, |
631 desired_size_in_dip, | 631 desired_size_in_dip, |
632 desired_scale_factors, | 632 desired_scale_factors, |
633 results), | 633 results), |
634 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 634 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
635 } | 635 } |
636 | 636 |
637 CancelableTaskTracker::TaskId HistoryService::GetLargestFaviconForURL( | 637 base::CancelableTaskTracker::TaskId HistoryService::GetLargestFaviconForURL( |
638 const GURL& page_url, | 638 const GURL& page_url, |
639 const std::vector<int>& icon_types, | 639 const std::vector<int>& icon_types, |
640 int minimum_size_in_pixels, | 640 int minimum_size_in_pixels, |
641 const FaviconService::FaviconRawCallback& callback, | 641 const FaviconService::FaviconRawCallback& callback, |
642 CancelableTaskTracker* tracker) { | 642 base::CancelableTaskTracker* tracker) { |
643 DCHECK(thread_checker_.CalledOnValidThread()); | 643 DCHECK(thread_checker_.CalledOnValidThread()); |
644 LoadBackendIfNecessary(); | 644 LoadBackendIfNecessary(); |
645 | 645 |
646 chrome::FaviconBitmapResult* result = new chrome::FaviconBitmapResult(); | 646 chrome::FaviconBitmapResult* result = new chrome::FaviconBitmapResult(); |
647 return tracker->PostTaskAndReply( | 647 return tracker->PostTaskAndReply( |
648 thread_->message_loop_proxy().get(), | 648 thread_->message_loop_proxy().get(), |
649 FROM_HERE, | 649 FROM_HERE, |
650 base::Bind(&HistoryBackend::GetLargestFaviconForURL, | 650 base::Bind(&HistoryBackend::GetLargestFaviconForURL, |
651 history_backend_.get(), | 651 history_backend_.get(), |
652 page_url, | 652 page_url, |
653 icon_types, | 653 icon_types, |
654 minimum_size_in_pixels, | 654 minimum_size_in_pixels, |
655 result), | 655 result), |
656 base::Bind(&RunWithFaviconResult, callback, base::Owned(result))); | 656 base::Bind(&RunWithFaviconResult, callback, base::Owned(result))); |
657 } | 657 } |
658 | 658 |
659 CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( | 659 base::CancelableTaskTracker::TaskId HistoryService::GetFaviconForID( |
660 chrome::FaviconID favicon_id, | 660 chrome::FaviconID favicon_id, |
661 int desired_size_in_dip, | 661 int desired_size_in_dip, |
662 ui::ScaleFactor desired_scale_factor, | 662 ui::ScaleFactor desired_scale_factor, |
663 const FaviconService::FaviconResultsCallback& callback, | 663 const FaviconService::FaviconResultsCallback& callback, |
664 CancelableTaskTracker* tracker) { | 664 base::CancelableTaskTracker* tracker) { |
665 DCHECK(thread_checker_.CalledOnValidThread()); | 665 DCHECK(thread_checker_.CalledOnValidThread()); |
666 LoadBackendIfNecessary(); | 666 LoadBackendIfNecessary(); |
667 | 667 |
668 std::vector<chrome::FaviconBitmapResult>* results = | 668 std::vector<chrome::FaviconBitmapResult>* results = |
669 new std::vector<chrome::FaviconBitmapResult>(); | 669 new std::vector<chrome::FaviconBitmapResult>(); |
670 return tracker->PostTaskAndReply( | 670 return tracker->PostTaskAndReply( |
671 thread_->message_loop_proxy().get(), | 671 thread_->message_loop_proxy().get(), |
672 FROM_HERE, | 672 FROM_HERE, |
673 base::Bind(&HistoryBackend::GetFaviconForID, | 673 base::Bind(&HistoryBackend::GetFaviconForID, |
674 history_backend_.get(), | 674 history_backend_.get(), |
675 favicon_id, | 675 favicon_id, |
676 desired_size_in_dip, | 676 desired_size_in_dip, |
677 desired_scale_factor, | 677 desired_scale_factor, |
678 results), | 678 results), |
679 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); | 679 base::Bind(&RunWithFaviconResults, callback, base::Owned(results))); |
680 } | 680 } |
681 | 681 |
682 CancelableTaskTracker::TaskId HistoryService::UpdateFaviconMappingsAndFetch( | 682 base::CancelableTaskTracker::TaskId |
| 683 HistoryService::UpdateFaviconMappingsAndFetch( |
683 const GURL& page_url, | 684 const GURL& page_url, |
684 const std::vector<GURL>& icon_urls, | 685 const std::vector<GURL>& icon_urls, |
685 int icon_types, | 686 int icon_types, |
686 int desired_size_in_dip, | 687 int desired_size_in_dip, |
687 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 688 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
688 const FaviconService::FaviconResultsCallback& callback, | 689 const FaviconService::FaviconResultsCallback& callback, |
689 CancelableTaskTracker* tracker) { | 690 base::CancelableTaskTracker* tracker) { |
690 DCHECK(thread_checker_.CalledOnValidThread()); | 691 DCHECK(thread_checker_.CalledOnValidThread()); |
691 LoadBackendIfNecessary(); | 692 LoadBackendIfNecessary(); |
692 | 693 |
693 std::vector<chrome::FaviconBitmapResult>* results = | 694 std::vector<chrome::FaviconBitmapResult>* results = |
694 new std::vector<chrome::FaviconBitmapResult>(); | 695 new std::vector<chrome::FaviconBitmapResult>(); |
695 return tracker->PostTaskAndReply( | 696 return tracker->PostTaskAndReply( |
696 thread_->message_loop_proxy().get(), | 697 thread_->message_loop_proxy().get(), |
697 FROM_HERE, | 698 FROM_HERE, |
698 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, | 699 base::Bind(&HistoryBackend::UpdateFaviconMappingsAndFetch, |
699 history_backend_.get(), | 700 history_backend_.get(), |
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1107 // We will update the visited links when we observe the delete | 1108 // We will update the visited links when we observe the delete |
1108 // notifications. | 1109 // notifications. |
1109 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::DeleteURLs, urls); | 1110 ScheduleAndForget(PRIORITY_NORMAL, &HistoryBackend::DeleteURLs, urls); |
1110 } | 1111 } |
1111 | 1112 |
1112 void HistoryService::ExpireHistoryBetween( | 1113 void HistoryService::ExpireHistoryBetween( |
1113 const std::set<GURL>& restrict_urls, | 1114 const std::set<GURL>& restrict_urls, |
1114 Time begin_time, | 1115 Time begin_time, |
1115 Time end_time, | 1116 Time end_time, |
1116 const base::Closure& callback, | 1117 const base::Closure& callback, |
1117 CancelableTaskTracker* tracker) { | 1118 base::CancelableTaskTracker* tracker) { |
1118 DCHECK(thread_); | 1119 DCHECK(thread_); |
1119 DCHECK(thread_checker_.CalledOnValidThread()); | 1120 DCHECK(thread_checker_.CalledOnValidThread()); |
1120 DCHECK(history_backend_.get()); | 1121 DCHECK(history_backend_.get()); |
1121 tracker->PostTaskAndReply(thread_->message_loop_proxy().get(), | 1122 tracker->PostTaskAndReply(thread_->message_loop_proxy().get(), |
1122 FROM_HERE, | 1123 FROM_HERE, |
1123 base::Bind(&HistoryBackend::ExpireHistoryBetween, | 1124 base::Bind(&HistoryBackend::ExpireHistoryBetween, |
1124 history_backend_, | 1125 history_backend_, |
1125 restrict_urls, | 1126 restrict_urls, |
1126 begin_time, | 1127 begin_time, |
1127 end_time), | 1128 end_time), |
1128 callback); | 1129 callback); |
1129 } | 1130 } |
1130 | 1131 |
1131 void HistoryService::ExpireHistory( | 1132 void HistoryService::ExpireHistory( |
1132 const std::vector<history::ExpireHistoryArgs>& expire_list, | 1133 const std::vector<history::ExpireHistoryArgs>& expire_list, |
1133 const base::Closure& callback, | 1134 const base::Closure& callback, |
1134 CancelableTaskTracker* tracker) { | 1135 base::CancelableTaskTracker* tracker) { |
1135 DCHECK(thread_); | 1136 DCHECK(thread_); |
1136 DCHECK(thread_checker_.CalledOnValidThread()); | 1137 DCHECK(thread_checker_.CalledOnValidThread()); |
1137 DCHECK(history_backend_.get()); | 1138 DCHECK(history_backend_.get()); |
1138 tracker->PostTaskAndReply( | 1139 tracker->PostTaskAndReply( |
1139 thread_->message_loop_proxy().get(), | 1140 thread_->message_loop_proxy().get(), |
1140 FROM_HERE, | 1141 FROM_HERE, |
1141 base::Bind(&HistoryBackend::ExpireHistory, history_backend_, expire_list), | 1142 base::Bind(&HistoryBackend::ExpireHistory, history_backend_, expire_list), |
1142 callback); | 1143 callback); |
1143 } | 1144 } |
1144 | 1145 |
1145 void HistoryService::ExpireLocalAndRemoteHistoryBetween( | 1146 void HistoryService::ExpireLocalAndRemoteHistoryBetween( |
1146 const std::set<GURL>& restrict_urls, | 1147 const std::set<GURL>& restrict_urls, |
1147 Time begin_time, | 1148 Time begin_time, |
1148 Time end_time, | 1149 Time end_time, |
1149 const base::Closure& callback, | 1150 const base::Closure& callback, |
1150 CancelableTaskTracker* tracker) { | 1151 base::CancelableTaskTracker* tracker) { |
1151 // TODO(dubroy): This should be factored out into a separate class that | 1152 // TODO(dubroy): This should be factored out into a separate class that |
1152 // dispatches deletions to the proper places. | 1153 // dispatches deletions to the proper places. |
1153 | 1154 |
1154 history::WebHistoryService* web_history = | 1155 history::WebHistoryService* web_history = |
1155 WebHistoryServiceFactory::GetForProfile(profile_); | 1156 WebHistoryServiceFactory::GetForProfile(profile_); |
1156 if (web_history) { | 1157 if (web_history) { |
1157 // TODO(dubroy): This API does not yet support deletion of specific URLs. | 1158 // TODO(dubroy): This API does not yet support deletion of specific URLs. |
1158 DCHECK(restrict_urls.empty()); | 1159 DCHECK(restrict_urls.empty()); |
1159 | 1160 |
1160 delete_directive_handler_.CreateDeleteDirectives( | 1161 delete_directive_handler_.CreateDeleteDirectives( |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1254 DCHECK(thread_checker_.CalledOnValidThread()); | 1255 DCHECK(thread_checker_.CalledOnValidThread()); |
1255 visit_database_observers_.RemoveObserver(observer); | 1256 visit_database_observers_.RemoveObserver(observer); |
1256 } | 1257 } |
1257 | 1258 |
1258 void HistoryService::NotifyVisitDBObserversOnAddVisit( | 1259 void HistoryService::NotifyVisitDBObserversOnAddVisit( |
1259 const history::BriefVisitInfo& info) { | 1260 const history::BriefVisitInfo& info) { |
1260 DCHECK(thread_checker_.CalledOnValidThread()); | 1261 DCHECK(thread_checker_.CalledOnValidThread()); |
1261 FOR_EACH_OBSERVER(history::VisitDatabaseObserver, visit_database_observers_, | 1262 FOR_EACH_OBSERVER(history::VisitDatabaseObserver, visit_database_observers_, |
1262 OnAddVisit(info)); | 1263 OnAddVisit(info)); |
1263 } | 1264 } |
OLD | NEW |