• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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