OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_H_ | 5 #ifndef COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_H_ |
6 #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_H_ | 6 #define COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <map> | 9 #include <map> |
10 #include <set> | 10 #include <set> |
11 #include <string> | 11 #include <string> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "base/callback_list.h" | 14 #include "base/callback_list.h" |
15 #include "base/gtest_prod_util.h" | 15 #include "base/gtest_prod_util.h" |
16 #include "base/memory/scoped_ptr.h" | 16 #include "base/memory/scoped_ptr.h" |
17 #include "base/observer_list.h" | 17 #include "base/observer_list.h" |
18 #include "base/prefs/pref_change_registrar.h" | 18 #include "base/prefs/pref_change_registrar.h" |
| 19 #include "base/time/clock.h" |
19 #include "components/google/core/browser/google_url_tracker.h" | 20 #include "components/google/core/browser/google_url_tracker.h" |
20 #include "components/keyed_service/core/keyed_service.h" | 21 #include "components/keyed_service/core/keyed_service.h" |
21 #include "components/search_engines/default_search_manager.h" | 22 #include "components/search_engines/default_search_manager.h" |
22 #include "components/search_engines/keyword_web_data_service.h" | 23 #include "components/search_engines/keyword_web_data_service.h" |
23 #include "components/search_engines/template_url.h" | 24 #include "components/search_engines/template_url.h" |
24 #include "components/search_engines/template_url_id.h" | 25 #include "components/search_engines/template_url_id.h" |
25 #include "components/webdata/common/web_data_service_consumer.h" | 26 #include "components/webdata/common/web_data_service_consumer.h" |
26 #include "sync/api/sync_change.h" | 27 #include "sync/api/sync_change.h" |
27 #include "sync/api/syncable_service.h" | 28 #include "sync/api/syncable_service.h" |
28 | 29 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 // TemplateURLService takes ownership of any TemplateURL passed to it. If there | 63 // TemplateURLService takes ownership of any TemplateURL passed to it. If there |
63 // is a KeywordWebDataService, deletion is handled by KeywordWebDataService, | 64 // is a KeywordWebDataService, deletion is handled by KeywordWebDataService, |
64 // otherwise TemplateURLService handles deletion. | 65 // otherwise TemplateURLService handles deletion. |
65 | 66 |
66 class TemplateURLService : public WebDataServiceConsumer, | 67 class TemplateURLService : public WebDataServiceConsumer, |
67 public KeyedService, | 68 public KeyedService, |
68 public syncer::SyncableService { | 69 public syncer::SyncableService { |
69 public: | 70 public: |
70 typedef std::map<std::string, std::string> QueryTerms; | 71 typedef std::map<std::string, std::string> QueryTerms; |
71 typedef std::vector<TemplateURL*> TemplateURLVector; | 72 typedef std::vector<TemplateURL*> TemplateURLVector; |
72 // Type for a static function pointer that acts as a time source. | |
73 typedef base::Time(TimeProvider)(); | |
74 typedef std::map<std::string, syncer::SyncData> SyncDataMap; | 73 typedef std::map<std::string, syncer::SyncData> SyncDataMap; |
75 typedef base::CallbackList<void(void)>::Subscription Subscription; | 74 typedef base::CallbackList<void(void)>::Subscription Subscription; |
76 | 75 |
77 // Struct used for initializing the data store with fake data. | 76 // Struct used for initializing the data store with fake data. |
78 // Each initializer is mapped to a TemplateURL. | 77 // Each initializer is mapped to a TemplateURL. |
79 struct Initializer { | 78 struct Initializer { |
80 const char* const keyword; | 79 const char* const keyword; |
81 const char* const url; | 80 const char* const url; |
82 const char* const content; | 81 const char* const content; |
83 }; | 82 }; |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 const SearchTermsData& search_terms_data, | 358 const SearchTermsData& search_terms_data, |
360 TemplateURL* existing_turl, | 359 TemplateURL* existing_turl, |
361 const syncer::SyncData& sync_data, | 360 const syncer::SyncData& sync_data, |
362 syncer::SyncChangeList* change_list); | 361 syncer::SyncChangeList* change_list); |
363 | 362 |
364 // Returns a map mapping Sync GUIDs to pointers to syncer::SyncData. | 363 // Returns a map mapping Sync GUIDs to pointers to syncer::SyncData. |
365 static SyncDataMap CreateGUIDToSyncDataMap( | 364 static SyncDataMap CreateGUIDToSyncDataMap( |
366 const syncer::SyncDataList& sync_data); | 365 const syncer::SyncDataList& sync_data); |
367 | 366 |
368 #if defined(UNIT_TEST) | 367 #if defined(UNIT_TEST) |
369 // Sets a different time provider function, such as | 368 void set_clock(scoped_ptr<base::Clock> clock) { clock_ = clock.Pass(); } |
370 // base::MockTimeProvider::StaticNow, for testing calls to base::Time::Now. | |
371 void set_time_provider(TimeProvider* time_provider) { | |
372 time_provider_ = time_provider; | |
373 } | |
374 #endif | 369 #endif |
375 | 370 |
376 private: | 371 private: |
377 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, TestManagedDefaultSearch); | 372 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, TestManagedDefaultSearch); |
378 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, | 373 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, |
379 UpdateKeywordSearchTermsForURL); | 374 UpdateKeywordSearchTermsForURL); |
380 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, | 375 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, |
381 DontUpdateKeywordSearchForNonReplaceable); | 376 DontUpdateKeywordSearchForNonReplaceable); |
382 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, ChangeGoogleBaseValue); | 377 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, ChangeGoogleBaseValue); |
383 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, MergeDeletesUnusedProviders); | 378 FRIEND_TEST_ALL_PREFIXES(TemplateURLServiceTest, MergeDeletesUnusedProviders); |
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
699 // be merged into |template_urls_|. | 694 // be merged into |template_urls_|. |
700 scoped_ptr<TemplateURL> initial_default_search_provider_; | 695 scoped_ptr<TemplateURL> initial_default_search_provider_; |
701 | 696 |
702 // Source of the default search provider. | 697 // Source of the default search provider. |
703 DefaultSearchManager::Source default_search_provider_source_; | 698 DefaultSearchManager::Source default_search_provider_source_; |
704 | 699 |
705 // ID assigned to next TemplateURL added to this model. This is an ever | 700 // ID assigned to next TemplateURL added to this model. This is an ever |
706 // increasing integer that is initialized from the database. | 701 // increasing integer that is initialized from the database. |
707 TemplateURLID next_id_; | 702 TemplateURLID next_id_; |
708 | 703 |
709 // Function returning current time in base::Time units. | 704 // Used to retrieve the current time, in base::Time units. |
710 TimeProvider* time_provider_; | 705 scoped_ptr<base::Clock> clock_; |
711 | 706 |
712 // Do we have an active association between the TemplateURLs and sync models? | 707 // Do we have an active association between the TemplateURLs and sync models? |
713 // Set in MergeDataAndStartSyncing, reset in StopSyncing. While this is not | 708 // Set in MergeDataAndStartSyncing, reset in StopSyncing. While this is not |
714 // set, we ignore any local search engine changes (when we start syncing we | 709 // set, we ignore any local search engine changes (when we start syncing we |
715 // will look up the most recent values anyways). | 710 // will look up the most recent values anyways). |
716 bool models_associated_; | 711 bool models_associated_; |
717 | 712 |
718 // Whether we're currently processing changes from the syncer. While this is | 713 // Whether we're currently processing changes from the syncer. While this is |
719 // true, we ignore any local search engine changes, since we triggered them. | 714 // true, we ignore any local search engine changes, since we triggered them. |
720 bool processing_syncer_changes_; | 715 bool processing_syncer_changes_; |
(...skipping 21 matching lines...) Expand all Loading... |
742 | 737 |
743 // Helper class to manage the default search engine. | 738 // Helper class to manage the default search engine. |
744 DefaultSearchManager default_search_manager_; | 739 DefaultSearchManager default_search_manager_; |
745 | 740 |
746 scoped_ptr<GoogleURLTracker::Subscription> google_url_updated_subscription_; | 741 scoped_ptr<GoogleURLTracker::Subscription> google_url_updated_subscription_; |
747 | 742 |
748 DISALLOW_COPY_AND_ASSIGN(TemplateURLService); | 743 DISALLOW_COPY_AND_ASSIGN(TemplateURLService); |
749 }; | 744 }; |
750 | 745 |
751 #endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_H_ | 746 #endif // COMPONENTS_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_H_ |
OLD | NEW |