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 #ifndef CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ |
6 #define CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ | 6 #define CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
12 #include "base/bind.h" | 12 #include "base/bind.h" |
13 #include "base/callback.h" | 13 #include "base/callback.h" |
14 #include "base/files/file_path.h" | 14 #include "base/files/file_path.h" |
15 #include "base/logging.h" | 15 #include "base/logging.h" |
16 #include "base/memory/ref_counted.h" | 16 #include "base/memory/ref_counted.h" |
17 #include "base/memory/scoped_ptr.h" | 17 #include "base/memory/scoped_ptr.h" |
18 #include "base/memory/weak_ptr.h" | 18 #include "base/memory/weak_ptr.h" |
19 #include "base/observer_list.h" | 19 #include "base/observer_list.h" |
20 #include "base/strings/string16.h" | 20 #include "base/strings/string16.h" |
21 #include "base/task/cancelable_task_tracker.h" | 21 #include "base/task/cancelable_task_tracker.h" |
22 #include "base/threading/thread_checker.h" | 22 #include "base/threading/thread_checker.h" |
23 #include "base/time/time.h" | 23 #include "base/time/time.h" |
24 #include "chrome/browser/common/cancelable_request.h" | 24 #include "chrome/browser/common/cancelable_request.h" |
25 #include "chrome/browser/favicon/favicon_service.h" | |
26 #include "chrome/browser/history/delete_directive_handler.h" | 25 #include "chrome/browser/history/delete_directive_handler.h" |
27 #include "chrome/browser/history/history_types.h" | 26 #include "chrome/browser/history/history_types.h" |
28 #include "chrome/browser/history/typed_url_syncable_service.h" | 27 #include "chrome/browser/history/typed_url_syncable_service.h" |
29 #include "chrome/browser/search_engines/template_url_id.h" | 28 #include "chrome/browser/search_engines/template_url_id.h" |
30 #include "chrome/common/ref_counted_util.h" | 29 #include "chrome/common/ref_counted_util.h" |
| 30 #include "components/favicon_base/favicon_callback.h" |
31 #include "components/keyed_service/core/keyed_service.h" | 31 #include "components/keyed_service/core/keyed_service.h" |
32 #include "components/visitedlink/browser/visitedlink_delegate.h" | 32 #include "components/visitedlink/browser/visitedlink_delegate.h" |
33 #include "content/public/browser/download_manager_delegate.h" | 33 #include "content/public/browser/download_manager_delegate.h" |
34 #include "content/public/browser/notification_observer.h" | 34 #include "content/public/browser/notification_observer.h" |
35 #include "content/public/browser/notification_registrar.h" | 35 #include "content/public/browser/notification_registrar.h" |
36 #include "content/public/common/page_transition_types.h" | 36 #include "content/public/common/page_transition_types.h" |
37 #include "sql/init_status.h" | 37 #include "sql/init_status.h" |
38 #include "sync/api/syncable_service.h" | 38 #include "sync/api/syncable_service.h" |
39 #include "ui/base/layout.h" | 39 #include "ui/base/layout.h" |
40 | 40 |
41 #if defined(OS_ANDROID) | 41 #if defined(OS_ANDROID) |
42 #include "chrome/browser/history/android/android_history_provider_service.h" | 42 #include "chrome/browser/history/android/android_history_provider_service.h" |
43 #endif | 43 #endif |
44 | 44 |
45 class BookmarkService; | 45 class BookmarkService; |
46 class GURL; | 46 class GURL; |
47 class HistoryURLProvider; | 47 class HistoryURLProvider; |
48 class PageUsageData; | 48 class PageUsageData; |
49 class PageUsageRequest; | 49 class PageUsageRequest; |
50 class Profile; | 50 class Profile; |
51 struct HistoryURLProviderParams; | 51 struct HistoryURLProviderParams; |
| 52 struct ImportedFaviconUsage; |
52 | 53 |
53 namespace base { | 54 namespace base { |
54 class FilePath; | 55 class FilePath; |
55 class Thread; | 56 class Thread; |
56 } | 57 } |
57 | 58 |
58 namespace visitedlink { | 59 namespace visitedlink { |
59 class VisitedLinkMaster; | 60 class VisitedLinkMaster; |
60 } | 61 } |
61 | 62 |
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
656 // |desired_scale_factors|. If a favicon bitmap is determined to be the best | 657 // |desired_scale_factors|. If a favicon bitmap is determined to be the best |
657 // candidate for multiple scale factors there will be less results. | 658 // candidate for multiple scale factors there will be less results. |
658 // If |icon_types| has several types, results for only a single type will be | 659 // If |icon_types| has several types, results for only a single type will be |
659 // returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and | 660 // returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and |
660 // FAVICON. | 661 // FAVICON. |
661 base::CancelableTaskTracker::TaskId GetFavicons( | 662 base::CancelableTaskTracker::TaskId GetFavicons( |
662 const std::vector<GURL>& icon_urls, | 663 const std::vector<GURL>& icon_urls, |
663 int icon_types, | 664 int icon_types, |
664 int desired_size_in_dip, | 665 int desired_size_in_dip, |
665 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 666 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
666 const FaviconService::FaviconResultsCallback& callback, | 667 const favicon_base::FaviconResultsCallback& callback, |
667 base::CancelableTaskTracker* tracker); | 668 base::CancelableTaskTracker* tracker); |
668 | 669 |
669 // Used by the FaviconService to get favicons mapped to |page_url| for | 670 // Used by the FaviconService to get favicons mapped to |page_url| for |
670 // |icon_types| which most closely match |desired_size_in_dip| and | 671 // |icon_types| which most closely match |desired_size_in_dip| and |
671 // |desired_scale_factors|. If |desired_size_in_dip| is 0, the largest favicon | 672 // |desired_scale_factors|. If |desired_size_in_dip| is 0, the largest favicon |
672 // bitmap for |icon_types| is returned. The returned FaviconBitmapResults will | 673 // bitmap for |icon_types| is returned. The returned FaviconBitmapResults will |
673 // have at most one result for each of |desired_scale_factors|. If a favicon | 674 // have at most one result for each of |desired_scale_factors|. If a favicon |
674 // bitmap is determined to be the best candidate for multiple scale factors | 675 // bitmap is determined to be the best candidate for multiple scale factors |
675 // there will be less results. If |icon_types| has several types, results for | 676 // there will be less results. If |icon_types| has several types, results for |
676 // only a single type will be returned in the priority of | 677 // only a single type will be returned in the priority of |
677 // TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and FAVICON. | 678 // TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and FAVICON. |
678 base::CancelableTaskTracker::TaskId GetFaviconsForURL( | 679 base::CancelableTaskTracker::TaskId GetFaviconsForURL( |
679 const GURL& page_url, | 680 const GURL& page_url, |
680 int icon_types, | 681 int icon_types, |
681 int desired_size_in_dip, | 682 int desired_size_in_dip, |
682 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 683 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
683 const FaviconService::FaviconResultsCallback& callback, | 684 const favicon_base::FaviconResultsCallback& callback, |
684 base::CancelableTaskTracker* tracker); | 685 base::CancelableTaskTracker* tracker); |
685 | 686 |
686 // Used by FaviconService to find the first favicon bitmap whose width and | 687 // Used by FaviconService to find the first favicon bitmap whose width and |
687 // height are greater than that of |minimum_size_in_pixels|. This searches | 688 // height are greater than that of |minimum_size_in_pixels|. This searches |
688 // for icons by IconType. Each element of |icon_types| is a bitmask of | 689 // for icons by IconType. Each element of |icon_types| is a bitmask of |
689 // IconTypes indicating the types to search for. | 690 // IconTypes indicating the types to search for. |
690 // If the largest icon of |icon_types[0]| is not larger than | 691 // If the largest icon of |icon_types[0]| is not larger than |
691 // |minimum_size_in_pixel|, the next icon types of | 692 // |minimum_size_in_pixel|, the next icon types of |
692 // |icon_types| will be searched and so on. | 693 // |icon_types| will be searched and so on. |
693 // If no icon is larger than |minimum_size_in_pixel|, the largest one of all | 694 // If no icon is larger than |minimum_size_in_pixel|, the largest one of all |
694 // icon types in |icon_types| is returned. | 695 // icon types in |icon_types| is returned. |
695 // This feature is especially useful when some types of icon is perfered as | 696 // This feature is especially useful when some types of icon is perfered as |
696 // long as its size is larger than a specific value. | 697 // long as its size is larger than a specific value. |
697 base::CancelableTaskTracker::TaskId GetLargestFaviconForURL( | 698 base::CancelableTaskTracker::TaskId GetLargestFaviconForURL( |
698 const GURL& page_url, | 699 const GURL& page_url, |
699 const std::vector<int>& icon_types, | 700 const std::vector<int>& icon_types, |
700 int minimum_size_in_pixels, | 701 int minimum_size_in_pixels, |
701 const FaviconService::FaviconRawCallback& callback, | 702 const favicon_base::FaviconRawCallback& callback, |
702 base::CancelableTaskTracker* tracker); | 703 base::CancelableTaskTracker* tracker); |
703 | 704 |
704 // Used by the FaviconService to get the favicon bitmap which most closely | 705 // Used by the FaviconService to get the favicon bitmap which most closely |
705 // matches |desired_size_in_dip| and |desired_scale_factor| from the favicon | 706 // matches |desired_size_in_dip| and |desired_scale_factor| from the favicon |
706 // with |favicon_id| from the history backend. If |desired_size_in_dip| is 0, | 707 // with |favicon_id| from the history backend. If |desired_size_in_dip| is 0, |
707 // the largest favicon bitmap for |favicon_id| is returned. | 708 // the largest favicon bitmap for |favicon_id| is returned. |
708 base::CancelableTaskTracker::TaskId GetFaviconForID( | 709 base::CancelableTaskTracker::TaskId GetFaviconForID( |
709 favicon_base::FaviconID favicon_id, | 710 favicon_base::FaviconID favicon_id, |
710 int desired_size_in_dip, | 711 int desired_size_in_dip, |
711 ui::ScaleFactor desired_scale_factor, | 712 ui::ScaleFactor desired_scale_factor, |
712 const FaviconService::FaviconResultsCallback& callback, | 713 const favicon_base::FaviconResultsCallback& callback, |
713 base::CancelableTaskTracker* tracker); | 714 base::CancelableTaskTracker* tracker); |
714 | 715 |
715 // Used by the FaviconService to replace the favicon mappings to |page_url| | 716 // Used by the FaviconService to replace the favicon mappings to |page_url| |
716 // for |icon_types| on the history backend. | 717 // for |icon_types| on the history backend. |
717 // Sample |icon_urls|: | 718 // Sample |icon_urls|: |
718 // { ICON_URL1 -> TOUCH_ICON, known to the database, | 719 // { ICON_URL1 -> TOUCH_ICON, known to the database, |
719 // ICON_URL2 -> TOUCH_ICON, not known to the database, | 720 // ICON_URL2 -> TOUCH_ICON, not known to the database, |
720 // ICON_URL3 -> TOUCH_PRECOMPOSED_ICON, known to the database } | 721 // ICON_URL3 -> TOUCH_PRECOMPOSED_ICON, known to the database } |
721 // The new mappings are computed from |icon_urls| with these rules: | 722 // The new mappings are computed from |icon_urls| with these rules: |
722 // 1) Any urls in |icon_urls| which are not already known to the database are | 723 // 1) Any urls in |icon_urls| which are not already known to the database are |
723 // rejected. | 724 // rejected. |
724 // Sample new mappings to |page_url|: { ICON_URL1, ICON_URL3 } | 725 // Sample new mappings to |page_url|: { ICON_URL1, ICON_URL3 } |
725 // 2) If |icon_types| has multiple types, the mappings are only set for the | 726 // 2) If |icon_types| has multiple types, the mappings are only set for the |
726 // largest icon type. | 727 // largest icon type. |
727 // Sample new mappings to |page_url|: { ICON_URL3 } | 728 // Sample new mappings to |page_url|: { ICON_URL3 } |
728 // |icon_types| can only have multiple IconTypes if | 729 // |icon_types| can only have multiple IconTypes if |
729 // |icon_types| == TOUCH_ICON | TOUCH_PRECOMPOSED_ICON. | 730 // |icon_types| == TOUCH_ICON | TOUCH_PRECOMPOSED_ICON. |
730 // The favicon bitmaps which most closely match |desired_size_in_dip| | 731 // The favicon bitmaps which most closely match |desired_size_in_dip| |
731 // and |desired_scale_factors| from the favicons which were just mapped | 732 // and |desired_scale_factors| from the favicons which were just mapped |
732 // to |page_url| are returned. If |desired_size_in_dip| is 0, the | 733 // to |page_url| are returned. If |desired_size_in_dip| is 0, the |
733 // largest favicon bitmap is returned. | 734 // largest favicon bitmap is returned. |
734 base::CancelableTaskTracker::TaskId UpdateFaviconMappingsAndFetch( | 735 base::CancelableTaskTracker::TaskId UpdateFaviconMappingsAndFetch( |
735 const GURL& page_url, | 736 const GURL& page_url, |
736 const std::vector<GURL>& icon_urls, | 737 const std::vector<GURL>& icon_urls, |
737 int icon_types, | 738 int icon_types, |
738 int desired_size_in_dip, | 739 int desired_size_in_dip, |
739 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 740 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
740 const FaviconService::FaviconResultsCallback& callback, | 741 const favicon_base::FaviconResultsCallback& callback, |
741 base::CancelableTaskTracker* tracker); | 742 base::CancelableTaskTracker* tracker); |
742 | 743 |
743 // Used by FaviconService to set a favicon for |page_url| and |icon_url| with | 744 // Used by FaviconService to set a favicon for |page_url| and |icon_url| with |
744 // |pixel_size|. | 745 // |pixel_size|. |
745 // Example: | 746 // Example: |
746 // |page_url|: www.google.com | 747 // |page_url|: www.google.com |
747 // 2 favicons in history for |page_url|: | 748 // 2 favicons in history for |page_url|: |
748 // www.google.com/a.ico 16x16 | 749 // www.google.com/a.ico 16x16 |
749 // www.google.com/b.ico 32x32 | 750 // www.google.com/b.ico 32x32 |
750 // MergeFavicon(|page_url|, www.google.com/a.ico, ..., ..., 16x16) | 751 // MergeFavicon(|page_url|, www.google.com/a.ico, ..., ..., 16x16) |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1041 scoped_ptr<history::InMemoryURLIndex> in_memory_url_index_; | 1042 scoped_ptr<history::InMemoryURLIndex> in_memory_url_index_; |
1042 | 1043 |
1043 ObserverList<history::VisitDatabaseObserver> visit_database_observers_; | 1044 ObserverList<history::VisitDatabaseObserver> visit_database_observers_; |
1044 | 1045 |
1045 history::DeleteDirectiveHandler delete_directive_handler_; | 1046 history::DeleteDirectiveHandler delete_directive_handler_; |
1046 | 1047 |
1047 DISALLOW_COPY_AND_ASSIGN(HistoryService); | 1048 DISALLOW_COPY_AND_ASSIGN(HistoryService); |
1048 }; | 1049 }; |
1049 | 1050 |
1050 #endif // CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ | 1051 #endif // CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ |
OLD | NEW |