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