| 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/threading/thread_checker.h" | 22 #include "base/threading/thread_checker.h" |
| 22 #include "base/time/time.h" | 23 #include "base/time/time.h" |
| 23 #include "chrome/browser/common/cancelable_request.h" | 24 #include "chrome/browser/common/cancelable_request.h" |
| 24 #include "chrome/browser/favicon/favicon_service.h" | 25 #include "chrome/browser/favicon/favicon_service.h" |
| 25 #include "chrome/browser/history/delete_directive_handler.h" | 26 #include "chrome/browser/history/delete_directive_handler.h" |
| 26 #include "chrome/browser/history/history_types.h" | 27 #include "chrome/browser/history/history_types.h" |
| 27 #include "chrome/browser/history/typed_url_syncable_service.h" | 28 #include "chrome/browser/history/typed_url_syncable_service.h" |
| 28 #include "chrome/browser/search_engines/template_url_id.h" | 29 #include "chrome/browser/search_engines/template_url_id.h" |
| 29 #include "chrome/common/cancelable_task_tracker.h" | |
| 30 #include "chrome/common/ref_counted_util.h" | 30 #include "chrome/common/ref_counted_util.h" |
| 31 #include "components/browser_context_keyed_service/browser_context_keyed_service
.h" | 31 #include "components/browser_context_keyed_service/browser_context_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" |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 // associated data. This function also deletes the associated | 375 // associated data. This function also deletes the associated |
| 376 // favicons, if they are no longer referenced. |callback| runs when | 376 // favicons, if they are no longer referenced. |callback| runs when |
| 377 // the expiration is complete. You may use null Time values to do an | 377 // the expiration is complete. You may use null Time values to do an |
| 378 // unbounded delete in either direction. | 378 // unbounded delete in either direction. |
| 379 // If |restrict_urls| is not empty, only visits to the URLs in this set are | 379 // If |restrict_urls| is not empty, only visits to the URLs in this set are |
| 380 // removed. | 380 // removed. |
| 381 void ExpireHistoryBetween(const std::set<GURL>& restrict_urls, | 381 void ExpireHistoryBetween(const std::set<GURL>& restrict_urls, |
| 382 base::Time begin_time, | 382 base::Time begin_time, |
| 383 base::Time end_time, | 383 base::Time end_time, |
| 384 const base::Closure& callback, | 384 const base::Closure& callback, |
| 385 CancelableTaskTracker* tracker); | 385 base::CancelableTaskTracker* tracker); |
| 386 | 386 |
| 387 // Removes all visits to specified URLs in specific time ranges. | 387 // Removes all visits to specified URLs in specific time ranges. |
| 388 // This is the equivalent ExpireHistoryBetween() once for each element in the | 388 // This is the equivalent ExpireHistoryBetween() once for each element in the |
| 389 // vector. The fields of |ExpireHistoryArgs| map directly to the arguments of | 389 // vector. The fields of |ExpireHistoryArgs| map directly to the arguments of |
| 390 // of ExpireHistoryBetween(). | 390 // of ExpireHistoryBetween(). |
| 391 void ExpireHistory(const std::vector<history::ExpireHistoryArgs>& expire_list, | 391 void ExpireHistory(const std::vector<history::ExpireHistoryArgs>& expire_list, |
| 392 const base::Closure& callback, | 392 const base::Closure& callback, |
| 393 CancelableTaskTracker* tracker); | 393 base::CancelableTaskTracker* tracker); |
| 394 | 394 |
| 395 // Removes all visits to the given URLs in the specified time range. Calls | 395 // Removes all visits to the given URLs in the specified time range. Calls |
| 396 // ExpireHistoryBetween() to delete local visits, and handles deletion of | 396 // ExpireHistoryBetween() to delete local visits, and handles deletion of |
| 397 // synced visits if appropriate. | 397 // synced visits if appropriate. |
| 398 void ExpireLocalAndRemoteHistoryBetween( | 398 void ExpireLocalAndRemoteHistoryBetween(const std::set<GURL>& restrict_urls, |
| 399 const std::set<GURL>& restrict_urls, | 399 base::Time begin_time, |
| 400 base::Time begin_time, | 400 base::Time end_time, |
| 401 base::Time end_time, | 401 const base::Closure& callback, |
| 402 const base::Closure& callback, | 402 base::CancelableTaskTracker* tracker); |
| 403 CancelableTaskTracker* tracker); | |
| 404 | 403 |
| 405 // Processes the given |delete_directive| and sends it to the | 404 // Processes the given |delete_directive| and sends it to the |
| 406 // SyncChangeProcessor (if it exists). Returns any error resulting | 405 // SyncChangeProcessor (if it exists). Returns any error resulting |
| 407 // from sending the delete directive to sync. | 406 // from sending the delete directive to sync. |
| 408 syncer::SyncError ProcessLocalDeleteDirective( | 407 syncer::SyncError ProcessLocalDeleteDirective( |
| 409 const sync_pb::HistoryDeleteDirectiveSpecifics& delete_directive); | 408 const sync_pb::HistoryDeleteDirectiveSpecifics& delete_directive); |
| 410 | 409 |
| 411 // Downloads ----------------------------------------------------------------- | 410 // Downloads ----------------------------------------------------------------- |
| 412 | 411 |
| 413 // Implemented by the caller of 'CreateDownload' below, and is called when the | 412 // Implemented by the caller of 'CreateDownload' below, and is called when the |
| (...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 // Used by FaviconService to get the favicon bitmaps from the history backend | 658 // Used by FaviconService to get the favicon bitmaps from the history backend |
| 660 // which most closely match |desired_size_in_dip| x |desired_size_in_dip| and | 659 // which most closely match |desired_size_in_dip| x |desired_size_in_dip| and |
| 661 // |desired_scale_factors| for |icon_types|. If |desired_size_in_dip| is 0, | 660 // |desired_scale_factors| for |icon_types|. If |desired_size_in_dip| is 0, |
| 662 // the largest favicon bitmap for |icon_types| is returned. The returned | 661 // the largest favicon bitmap for |icon_types| is returned. The returned |
| 663 // FaviconBitmapResults will have at most one result for each of | 662 // FaviconBitmapResults will have at most one result for each of |
| 664 // |desired_scale_factors|. If a favicon bitmap is determined to be the best | 663 // |desired_scale_factors|. If a favicon bitmap is determined to be the best |
| 665 // candidate for multiple scale factors there will be less results. | 664 // candidate for multiple scale factors there will be less results. |
| 666 // If |icon_types| has several types, results for only a single type will be | 665 // If |icon_types| has several types, results for only a single type will be |
| 667 // returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and | 666 // returned in the priority of TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and |
| 668 // FAVICON. | 667 // FAVICON. |
| 669 CancelableTaskTracker::TaskId GetFavicons( | 668 base::CancelableTaskTracker::TaskId GetFavicons( |
| 670 const std::vector<GURL>& icon_urls, | 669 const std::vector<GURL>& icon_urls, |
| 671 int icon_types, | 670 int icon_types, |
| 672 int desired_size_in_dip, | 671 int desired_size_in_dip, |
| 673 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 672 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
| 674 const FaviconService::FaviconResultsCallback& callback, | 673 const FaviconService::FaviconResultsCallback& callback, |
| 675 CancelableTaskTracker* tracker); | 674 base::CancelableTaskTracker* tracker); |
| 676 | 675 |
| 677 // Used by the FaviconService to get favicons mapped to |page_url| for | 676 // Used by the FaviconService to get favicons mapped to |page_url| for |
| 678 // |icon_types| which most closely match |desired_size_in_dip| and | 677 // |icon_types| which most closely match |desired_size_in_dip| and |
| 679 // |desired_scale_factors|. If |desired_size_in_dip| is 0, the largest favicon | 678 // |desired_scale_factors|. If |desired_size_in_dip| is 0, the largest favicon |
| 680 // bitmap for |icon_types| is returned. The returned FaviconBitmapResults will | 679 // bitmap for |icon_types| is returned. The returned FaviconBitmapResults will |
| 681 // have at most one result for each of |desired_scale_factors|. If a favicon | 680 // have at most one result for each of |desired_scale_factors|. If a favicon |
| 682 // bitmap is determined to be the best candidate for multiple scale factors | 681 // bitmap is determined to be the best candidate for multiple scale factors |
| 683 // there will be less results. If |icon_types| has several types, results for | 682 // there will be less results. If |icon_types| has several types, results for |
| 684 // only a single type will be returned in the priority of | 683 // only a single type will be returned in the priority of |
| 685 // TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and FAVICON. | 684 // TOUCH_PRECOMPOSED_ICON, TOUCH_ICON, and FAVICON. |
| 686 CancelableTaskTracker::TaskId GetFaviconsForURL( | 685 base::CancelableTaskTracker::TaskId GetFaviconsForURL( |
| 687 const GURL& page_url, | 686 const GURL& page_url, |
| 688 int icon_types, | 687 int icon_types, |
| 689 int desired_size_in_dip, | 688 int desired_size_in_dip, |
| 690 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 689 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
| 691 const FaviconService::FaviconResultsCallback& callback, | 690 const FaviconService::FaviconResultsCallback& callback, |
| 692 CancelableTaskTracker* tracker); | 691 base::CancelableTaskTracker* tracker); |
| 693 | 692 |
| 694 // Used by FaviconService to find the first favicon bitmap whose width and | 693 // Used by FaviconService to find the first favicon bitmap whose width and |
| 695 // height are greater than that of |minimum_size_in_pixels|. This searches | 694 // height are greater than that of |minimum_size_in_pixels|. This searches |
| 696 // for icons by IconType. Each element of |icon_types| is a bitmask of | 695 // for icons by IconType. Each element of |icon_types| is a bitmask of |
| 697 // IconTypes indicating the types to search for. | 696 // IconTypes indicating the types to search for. |
| 698 // If the largest icon of |icon_types[0]| is not larger than | 697 // If the largest icon of |icon_types[0]| is not larger than |
| 699 // |minimum_size_in_pixel|, the next icon types of | 698 // |minimum_size_in_pixel|, the next icon types of |
| 700 // |icon_types| will be searched and so on. | 699 // |icon_types| will be searched and so on. |
| 701 // If no icon is larger than |minimum_size_in_pixel|, the largest one of all | 700 // If no icon is larger than |minimum_size_in_pixel|, the largest one of all |
| 702 // icon types in |icon_types| is returned. | 701 // icon types in |icon_types| is returned. |
| 703 // This feature is especially useful when some types of icon is perfered as | 702 // This feature is especially useful when some types of icon is perfered as |
| 704 // long as its size is larger than a specific value. | 703 // long as its size is larger than a specific value. |
| 705 CancelableTaskTracker::TaskId GetLargestFaviconForURL( | 704 base::CancelableTaskTracker::TaskId GetLargestFaviconForURL( |
| 706 const GURL& page_url, | 705 const GURL& page_url, |
| 707 const std::vector<int>& icon_types, | 706 const std::vector<int>& icon_types, |
| 708 int minimum_size_in_pixels, | 707 int minimum_size_in_pixels, |
| 709 const FaviconService::FaviconRawCallback& callback, | 708 const FaviconService::FaviconRawCallback& callback, |
| 710 CancelableTaskTracker* tracker); | 709 base::CancelableTaskTracker* tracker); |
| 711 | 710 |
| 712 // Used by the FaviconService to get the favicon bitmap which most closely | 711 // Used by the FaviconService to get the favicon bitmap which most closely |
| 713 // matches |desired_size_in_dip| and |desired_scale_factor| from the favicon | 712 // matches |desired_size_in_dip| and |desired_scale_factor| from the favicon |
| 714 // with |favicon_id| from the history backend. If |desired_size_in_dip| is 0, | 713 // with |favicon_id| from the history backend. If |desired_size_in_dip| is 0, |
| 715 // the largest favicon bitmap for |favicon_id| is returned. | 714 // the largest favicon bitmap for |favicon_id| is returned. |
| 716 CancelableTaskTracker::TaskId GetFaviconForID( | 715 base::CancelableTaskTracker::TaskId GetFaviconForID( |
| 717 chrome::FaviconID favicon_id, | 716 chrome::FaviconID favicon_id, |
| 718 int desired_size_in_dip, | 717 int desired_size_in_dip, |
| 719 ui::ScaleFactor desired_scale_factor, | 718 ui::ScaleFactor desired_scale_factor, |
| 720 const FaviconService::FaviconResultsCallback& callback, | 719 const FaviconService::FaviconResultsCallback& callback, |
| 721 CancelableTaskTracker* tracker); | 720 base::CancelableTaskTracker* tracker); |
| 722 | 721 |
| 723 // Used by the FaviconService to replace the favicon mappings to |page_url| | 722 // Used by the FaviconService to replace the favicon mappings to |page_url| |
| 724 // for |icon_types| on the history backend. | 723 // for |icon_types| on the history backend. |
| 725 // Sample |icon_urls|: | 724 // Sample |icon_urls|: |
| 726 // { ICON_URL1 -> TOUCH_ICON, known to the database, | 725 // { ICON_URL1 -> TOUCH_ICON, known to the database, |
| 727 // ICON_URL2 -> TOUCH_ICON, not known to the database, | 726 // ICON_URL2 -> TOUCH_ICON, not known to the database, |
| 728 // ICON_URL3 -> TOUCH_PRECOMPOSED_ICON, known to the database } | 727 // ICON_URL3 -> TOUCH_PRECOMPOSED_ICON, known to the database } |
| 729 // The new mappings are computed from |icon_urls| with these rules: | 728 // The new mappings are computed from |icon_urls| with these rules: |
| 730 // 1) Any urls in |icon_urls| which are not already known to the database are | 729 // 1) Any urls in |icon_urls| which are not already known to the database are |
| 731 // rejected. | 730 // rejected. |
| 732 // Sample new mappings to |page_url|: { ICON_URL1, ICON_URL3 } | 731 // Sample new mappings to |page_url|: { ICON_URL1, ICON_URL3 } |
| 733 // 2) If |icon_types| has multiple types, the mappings are only set for the | 732 // 2) If |icon_types| has multiple types, the mappings are only set for the |
| 734 // largest icon type. | 733 // largest icon type. |
| 735 // Sample new mappings to |page_url|: { ICON_URL3 } | 734 // Sample new mappings to |page_url|: { ICON_URL3 } |
| 736 // |icon_types| can only have multiple IconTypes if | 735 // |icon_types| can only have multiple IconTypes if |
| 737 // |icon_types| == TOUCH_ICON | TOUCH_PRECOMPOSED_ICON. | 736 // |icon_types| == TOUCH_ICON | TOUCH_PRECOMPOSED_ICON. |
| 738 // The favicon bitmaps which most closely match |desired_size_in_dip| | 737 // The favicon bitmaps which most closely match |desired_size_in_dip| |
| 739 // and |desired_scale_factors| from the favicons which were just mapped | 738 // and |desired_scale_factors| from the favicons which were just mapped |
| 740 // to |page_url| are returned. If |desired_size_in_dip| is 0, the | 739 // to |page_url| are returned. If |desired_size_in_dip| is 0, the |
| 741 // largest favicon bitmap is returned. | 740 // largest favicon bitmap is returned. |
| 742 CancelableTaskTracker::TaskId UpdateFaviconMappingsAndFetch( | 741 base::CancelableTaskTracker::TaskId UpdateFaviconMappingsAndFetch( |
| 743 const GURL& page_url, | 742 const GURL& page_url, |
| 744 const std::vector<GURL>& icon_urls, | 743 const std::vector<GURL>& icon_urls, |
| 745 int icon_types, | 744 int icon_types, |
| 746 int desired_size_in_dip, | 745 int desired_size_in_dip, |
| 747 const std::vector<ui::ScaleFactor>& desired_scale_factors, | 746 const std::vector<ui::ScaleFactor>& desired_scale_factors, |
| 748 const FaviconService::FaviconResultsCallback& callback, | 747 const FaviconService::FaviconResultsCallback& callback, |
| 749 CancelableTaskTracker* tracker); | 748 base::CancelableTaskTracker* tracker); |
| 750 | 749 |
| 751 // Used by FaviconService to set a favicon for |page_url| and |icon_url| with | 750 // Used by FaviconService to set a favicon for |page_url| and |icon_url| with |
| 752 // |pixel_size|. | 751 // |pixel_size|. |
| 753 // Example: | 752 // Example: |
| 754 // |page_url|: www.google.com | 753 // |page_url|: www.google.com |
| 755 // 2 favicons in history for |page_url|: | 754 // 2 favicons in history for |page_url|: |
| 756 // www.google.com/a.ico 16x16 | 755 // www.google.com/a.ico 16x16 |
| 757 // www.google.com/b.ico 32x32 | 756 // www.google.com/b.ico 32x32 |
| 758 // MergeFavicon(|page_url|, www.google.com/a.ico, ..., ..., 16x16) | 757 // MergeFavicon(|page_url|, www.google.com/a.ico, ..., ..., 16x16) |
| 759 // | 758 // |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1065 scoped_ptr<history::InMemoryURLIndex> in_memory_url_index_; | 1064 scoped_ptr<history::InMemoryURLIndex> in_memory_url_index_; |
| 1066 | 1065 |
| 1067 ObserverList<history::VisitDatabaseObserver> visit_database_observers_; | 1066 ObserverList<history::VisitDatabaseObserver> visit_database_observers_; |
| 1068 | 1067 |
| 1069 history::DeleteDirectiveHandler delete_directive_handler_; | 1068 history::DeleteDirectiveHandler delete_directive_handler_; |
| 1070 | 1069 |
| 1071 DISALLOW_COPY_AND_ASSIGN(HistoryService); | 1070 DISALLOW_COPY_AND_ASSIGN(HistoryService); |
| 1072 }; | 1071 }; |
| 1073 | 1072 |
| 1074 #endif // CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ | 1073 #endif // CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ |
| OLD | NEW |