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 |
(...skipping 13 matching lines...) Expand all Loading... |
24 #include "base/time/time.h" | 24 #include "base/time/time.h" |
25 #include "chrome/browser/history/delete_directive_handler.h" | 25 #include "chrome/browser/history/delete_directive_handler.h" |
26 #include "chrome/browser/history/typed_url_syncable_service.h" | 26 #include "chrome/browser/history/typed_url_syncable_service.h" |
27 #include "chrome/common/ref_counted_util.h" | 27 #include "chrome/common/ref_counted_util.h" |
28 #include "components/favicon_base/favicon_callback.h" | 28 #include "components/favicon_base/favicon_callback.h" |
29 #include "components/history/core/browser/history_client.h" | 29 #include "components/history/core/browser/history_client.h" |
30 #include "components/history/core/browser/keyword_id.h" | 30 #include "components/history/core/browser/keyword_id.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" | |
35 #include "content/public/browser/notification_registrar.h" | |
36 #include "sql/init_status.h" | 34 #include "sql/init_status.h" |
37 #include "sync/api/syncable_service.h" | 35 #include "sync/api/syncable_service.h" |
38 #include "ui/base/page_transition_types.h" | 36 #include "ui/base/page_transition_types.h" |
39 | 37 |
40 #if defined(OS_ANDROID) | 38 #if defined(OS_ANDROID) |
41 class AndroidHistoryProviderService; | 39 class AndroidHistoryProviderService; |
42 #endif | 40 #endif |
43 | 41 |
44 class GURL; | 42 class GURL; |
45 class PageUsageData; | 43 class PageUsageData; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 struct HistoryDetails; | 78 struct HistoryDetails; |
81 struct KeywordSearchTermVisit; | 79 struct KeywordSearchTermVisit; |
82 | 80 |
83 } // namespace history | 81 } // namespace history |
84 | 82 |
85 // The history service records page titles, and visit times, as well as | 83 // The history service records page titles, and visit times, as well as |
86 // (eventually) information about autocomplete. | 84 // (eventually) information about autocomplete. |
87 // | 85 // |
88 // This service is thread safe. Each request callback is invoked in the | 86 // This service is thread safe. Each request callback is invoked in the |
89 // thread that made the request. | 87 // thread that made the request. |
90 class HistoryService : public content::NotificationObserver, | 88 class HistoryService : public syncer::SyncableService, |
91 public syncer::SyncableService, | |
92 public KeyedService, | 89 public KeyedService, |
93 public visitedlink::VisitedLinkDelegate { | 90 public visitedlink::VisitedLinkDelegate { |
94 public: | 91 public: |
95 // Miscellaneous commonly-used types. | 92 // Miscellaneous commonly-used types. |
96 typedef std::vector<PageUsageData*> PageUsageDataList; | 93 typedef std::vector<PageUsageData*> PageUsageDataList; |
97 | 94 |
98 // Must call Init after construction. The |history::HistoryClient| object | 95 // Must call Init after construction. The |history::HistoryClient| object |
99 // must be valid for the whole lifetime of |HistoryService|. | 96 // must be valid for the whole lifetime of |HistoryService|. |
100 explicit HistoryService(history::HistoryClient* client, Profile* profile); | 97 explicit HistoryService(history::HistoryClient* client, Profile* profile); |
101 // The empty constructor is provided only for testing. | 98 // The empty constructor is provided only for testing. |
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 // will release pointers to it. No other functions should be called once | 550 // will release pointers to it. No other functions should be called once |
554 // cleanup has happened that may dispatch to the history thread (because it | 551 // cleanup has happened that may dispatch to the history thread (because it |
555 // will be NULL). | 552 // will be NULL). |
556 // | 553 // |
557 // In practice, this will be called by the service manager (BrowserProcess) | 554 // In practice, this will be called by the service manager (BrowserProcess) |
558 // when it is being destroyed. Because that reference is being destroyed, it | 555 // when it is being destroyed. Because that reference is being destroyed, it |
559 // should be impossible for anybody else to call the service, even if it is | 556 // should be impossible for anybody else to call the service, even if it is |
560 // still in memory (pending requests may be holding a reference to us). | 557 // still in memory (pending requests may be holding a reference to us). |
561 void Cleanup(); | 558 void Cleanup(); |
562 | 559 |
563 // Implementation of content::NotificationObserver. | |
564 void Observe(int type, | |
565 const content::NotificationSource& source, | |
566 const content::NotificationDetails& details) override; | |
567 | |
568 // Implementation of visitedlink::VisitedLinkDelegate. | 560 // Implementation of visitedlink::VisitedLinkDelegate. |
569 void RebuildTable(const scoped_refptr<URLEnumerator>& enumerator) override; | 561 void RebuildTable(const scoped_refptr<URLEnumerator>& enumerator) override; |
570 | 562 |
571 // Low-level Init(). Same as the public version, but adds a |no_db| parameter | 563 // Low-level Init(). Same as the public version, but adds a |no_db| parameter |
572 // that is only set by unittests which causes the backend to not init its DB. | 564 // that is only set by unittests which causes the backend to not init its DB. |
573 bool Init(const base::FilePath& history_dir, bool no_db); | 565 bool Init(const base::FilePath& history_dir, bool no_db); |
574 | 566 |
575 // Called by the HistoryURLProvider class to schedule an autocomplete, it | 567 // Called by the HistoryURLProvider class to schedule an autocomplete, it |
576 // will be called back on the internal history thread with the history | 568 // will be called back on the internal history thread with the history |
577 // database so it can query. See history_autocomplete.cc for a diagram. | 569 // database so it can query. See history_autocomplete.cc for a diagram. |
(...skipping 28 matching lines...) Expand all Loading... |
606 // |redirects| is an empty vector. | 598 // |redirects| is an empty vector. |
607 void NotifyURLVisited(ui::PageTransition transition, | 599 void NotifyURLVisited(ui::PageTransition transition, |
608 const history::URLRow& row, | 600 const history::URLRow& row, |
609 const history::RedirectList& redirects, | 601 const history::RedirectList& redirects, |
610 base::Time visit_time); | 602 base::Time visit_time); |
611 | 603 |
612 // Notify all HistoryServiceObservers registered that URLs have been added or | 604 // Notify all HistoryServiceObservers registered that URLs have been added or |
613 // modified. |changed_urls| contains the list of affects URLs. | 605 // modified. |changed_urls| contains the list of affects URLs. |
614 void NotifyURLsModified(const history::URLRows& changed_urls); | 606 void NotifyURLsModified(const history::URLRows& changed_urls); |
615 | 607 |
| 608 // Notify all HistoryServiceObservers registered that URLs have been deleted. |
| 609 // |all_history| is set to true, if all the URLs are deleted. |
| 610 // When set to true, |deleted_rows| and |favicon_urls| are |
| 611 // undefined. |
| 612 // |expired| is set to true, if the URL deletion is due to expiration. |
| 613 // |deleted_rows| list of the deleted URLs. |
| 614 // |favicon_urls| list of favicon URLs that correspond to the deleted URLs. |
| 615 void NotifyURLsDeleted(bool all_history, |
| 616 bool expired, |
| 617 const history::URLRows& deleted_rows, |
| 618 const std::set<GURL>& favicon_urls); |
| 619 |
616 // Notify all HistoryServiceObservers registered that the | 620 // Notify all HistoryServiceObservers registered that the |
617 // HistoryService has finished loading. | 621 // HistoryService has finished loading. |
618 void NotifyHistoryServiceLoaded(); | 622 void NotifyHistoryServiceLoaded(); |
619 | 623 |
620 // HistoryService is being deleted. | 624 // Notify all HistoryServiceObservers registered that HistoryService is being |
| 625 // deleted. |
621 void NotifyHistoryServiceBeingDeleted(); | 626 void NotifyHistoryServiceBeingDeleted(); |
622 | 627 |
623 // Favicon ------------------------------------------------------------------- | 628 // Favicon ------------------------------------------------------------------- |
624 | 629 |
625 // These favicon methods are exposed to the FaviconService. Instead of calling | 630 // These favicon methods are exposed to the FaviconService. Instead of calling |
626 // these methods directly you should call the respective method on the | 631 // these methods directly you should call the respective method on the |
627 // FaviconService. | 632 // FaviconService. |
628 | 633 |
629 // Used by FaviconService to get the favicon bitmaps from the history backend | 634 // Used by FaviconService to get the favicon bitmaps from the history backend |
630 // whose edge sizes most closely match |desired_sizes| for |icon_types|. If | 635 // whose edge sizes most closely match |desired_sizes| for |icon_types|. If |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
856 DCHECK(thread_checker_.CalledOnValidThread()); | 861 DCHECK(thread_checker_.CalledOnValidThread()); |
857 ScheduleTask(priority, base::Bind(func, history_backend_.get(), | 862 ScheduleTask(priority, base::Bind(func, history_backend_.get(), |
858 a, b, c, d, e)); | 863 a, b, c, d, e)); |
859 } | 864 } |
860 | 865 |
861 // TODO(sdefresne): http://crbug.com/430070 remove this method. | 866 // TODO(sdefresne): http://crbug.com/430070 remove this method. |
862 Profile* profile() { return profile_; } | 867 Profile* profile() { return profile_; } |
863 | 868 |
864 base::ThreadChecker thread_checker_; | 869 base::ThreadChecker thread_checker_; |
865 | 870 |
866 content::NotificationRegistrar registrar_; | |
867 | |
868 // The thread used by the history service to run complicated operations. | 871 // The thread used by the history service to run complicated operations. |
869 // |thread_| is NULL once |Cleanup| is NULL. | 872 // |thread_| is NULL once |Cleanup| is NULL. |
870 base::Thread* thread_; | 873 base::Thread* thread_; |
871 | 874 |
872 // This class has most of the implementation and runs on the 'thread_'. | 875 // This class has most of the implementation and runs on the 'thread_'. |
873 // You MUST communicate with this class ONLY through the thread_'s | 876 // You MUST communicate with this class ONLY through the thread_'s |
874 // message_loop(). | 877 // message_loop(). |
875 // | 878 // |
876 // This pointer will be NULL once Cleanup() has been called, meaning no | 879 // This pointer will be NULL once Cleanup() has been called, meaning no |
877 // more calls should be made to the history thread. | 880 // more calls should be made to the history thread. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
913 | 916 |
914 history::DeleteDirectiveHandler delete_directive_handler_; | 917 history::DeleteDirectiveHandler delete_directive_handler_; |
915 | 918 |
916 // All vended weak pointers are invalidated in Cleanup(). | 919 // All vended weak pointers are invalidated in Cleanup(). |
917 base::WeakPtrFactory<HistoryService> weak_ptr_factory_; | 920 base::WeakPtrFactory<HistoryService> weak_ptr_factory_; |
918 | 921 |
919 DISALLOW_COPY_AND_ASSIGN(HistoryService); | 922 DISALLOW_COPY_AND_ASSIGN(HistoryService); |
920 }; | 923 }; |
921 | 924 |
922 #endif // CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ | 925 #endif // CHROME_BROWSER_HISTORY_HISTORY_SERVICE_H_ |
OLD | NEW |