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