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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_PREFS_CHROME_PREF_SERVICE_FACTORY_H_ 6 #define CHROME_BROWSER_PREFS_CHROME_PREF_SERVICE_FACTORY_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "base/memory/scoped_ptr.h" 10 11 namespace base { 12 class DictionaryValue; 13 class FilePath; 14 class SequencedTaskRunner; 15 class Time; 16 } 17 18 namespace policy { 19 class PolicyService; 20 } 21 22 namespace user_prefs { 23 class PrefRegistrySyncable; 24 } 25 26 class PrefHashStore; 27 class PrefRegistry; 28 class PrefRegistrySimple; 29 class PrefService; 30 class PrefServiceSyncable; 31 class PrefStore; 32 class Profile; 33 class SupervisedUserSettingsService; 34 class TrackedPreferenceValidationDelegate; 35 36 namespace chrome_prefs { 37 38 namespace internals { 39 40 extern const char kSettingsEnforcementTrialName[]; 41 extern const char kSettingsEnforcementGroupNoEnforcement[]; 42 extern const char kSettingsEnforcementGroupEnforceAlways[]; 43 extern const char kSettingsEnforcementGroupEnforceAlwaysWithDSE[]; 44 extern const char kSettingsEnforcementGroupEnforceAlwaysWithExtensionsAndDSE[]; 45 46 } // namespace internals 47 48 // Factory methods that create and initialize a new instance of a 49 // PrefService for Chrome with the applicable PrefStores. The 50 // |pref_filename| points to the user preference file. This is the 51 // usual way to create a new PrefService. 52 // |extension_pref_store| is used as the source for extension-controlled 53 // preferences and may be NULL. 54 // |policy_service| is used as the source for mandatory or recommended 55 // policies. 56 // |pref_registry| keeps the list of registered prefs and their default values. 57 // If |async| is true, asynchronous version is used. 58 // Notifies using PREF_INITIALIZATION_COMPLETED in the end. Details is set to 59 // the created PrefService or NULL if creation has failed. Note, it is 60 // guaranteed that in asynchronous version initialization happens after this 61 // function returned. 62 63 scoped_ptr<PrefService> CreateLocalState( 64 const base::FilePath& pref_filename, 65 base::SequencedTaskRunner* pref_io_task_runner, 66 policy::PolicyService* policy_service, 67 const scoped_refptr<PrefRegistry>& pref_registry, 68 bool async); 69 70 scoped_ptr<PrefServiceSyncable> CreateProfilePrefs( 71 const base::FilePath& pref_filename, 72 base::SequencedTaskRunner* pref_io_task_runner, 73 TrackedPreferenceValidationDelegate* validation_delegate, 74 policy::PolicyService* policy_service, 75 SupervisedUserSettingsService* supervised_user_settings, 76 const scoped_refptr<PrefStore>& extension_prefs, 77 const scoped_refptr<user_prefs::PrefRegistrySyncable>& pref_registry, 78 bool async); 79 80 // Schedules verification of the path resolution of the preferences file under 81 // |profile_path|. 82 void SchedulePrefsFilePathVerification(const base::FilePath& profile_path); 83 84 // Call before startup tasks kick in to disable delays in 85 // chrome_prefs::Schedule*() methods and ignore presence of a domain when 86 // determining the active SettingsEnforcement group. For testing only. 87 void DisableDelaysAndDomainCheckForTesting(); 88 89 // Schedules an update check for all PrefHashStores, stores whose version 90 // doesn't match the latest version will then be updated. Clears all pref hash 91 // state on platforms that don't yet support a pref hash store. 92 void SchedulePrefHashStoresUpdateCheck( 93 const base::FilePath& initial_profile_path); 94 95 // Initializes the preferences for the profile at |profile_path| with the 96 // preference values in |master_prefs|. Returns true on success. 97 bool InitializePrefsFromMasterPrefs( 98 const base::FilePath& profile_path, 99 const base::DictionaryValue& master_prefs); 100 101 // Retrieves the time of the last preference reset event, if any, for the 102 // provided profile. If no reset has occurred, returns a null |Time|. 103 base::Time GetResetTime(Profile* profile); 104 105 // Clears the time of the last preference reset event, if any, for the provided 106 // profile. 107 void ClearResetTime(Profile* profile); 108 109 // Register local state prefs used by chrome preference system. 110 void RegisterPrefs(PrefRegistrySimple* registry); 111 112 // Register user prefs used by chrome preference system. 113 void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 114 115 } // namespace chrome_prefs 116 117 #endif // CHROME_BROWSER_PREFS_CHROME_PREF_SERVICE_FACTORY_H_ 118