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 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" | 5 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" |
6 | 6 |
| 7 #include "base/files/file_path.h" |
7 #include "base/logging.h" | 8 #include "base/logging.h" |
8 #include "base/message_loop/message_loop_proxy.h" | 9 #include "base/message_loop/message_loop_proxy.h" |
9 #include "base/sequenced_task_runner.h" | 10 #include "base/sequenced_task_runner.h" |
10 #include "chrome/browser/policy/cloud/cloud_external_data_manager.h" | 11 #include "chrome/browser/policy/cloud/cloud_external_data_manager.h" |
11 #include "chrome/browser/policy/cloud/user_cloud_policy_manager.h" | 12 #include "chrome/browser/policy/cloud/user_cloud_policy_manager.h" |
12 #include "chrome/browser/policy/cloud/user_cloud_policy_store.h" | 13 #include "chrome/browser/policy/cloud/user_cloud_policy_store.h" |
13 #include "chrome/browser/policy/schema_registry_service.h" | 14 #include "chrome/browser/policy/schema_registry_service.h" |
14 #include "chrome/browser/policy/schema_registry_service_factory.h" | 15 #include "chrome/browser/policy/schema_registry_service_factory.h" |
15 #include "components/browser_context_keyed_service/browser_context_dependency_ma
nager.h" | 16 #include "components/browser_context_keyed_service/browser_context_dependency_ma
nager.h" |
16 #include "content/public/browser/browser_context.h" | 17 #include "content/public/browser/browser_context.h" |
17 | 18 |
18 namespace policy { | 19 namespace policy { |
19 | 20 |
| 21 namespace { |
| 22 |
| 23 // Directory inside the profile directory where policy-related resources are |
| 24 // stored. |
| 25 const base::FilePath::CharType kPolicy[] = FILE_PATH_LITERAL("Policy"); |
| 26 |
| 27 // Directory under kPolicy, in the user's profile dir, where policy for |
| 28 // components is cached. |
| 29 const base::FilePath::CharType kComponentsDir[] = |
| 30 FILE_PATH_LITERAL("Components"); |
| 31 |
| 32 } // namespace |
| 33 |
20 // static | 34 // static |
21 UserCloudPolicyManagerFactory* UserCloudPolicyManagerFactory::GetInstance() { | 35 UserCloudPolicyManagerFactory* UserCloudPolicyManagerFactory::GetInstance() { |
22 return Singleton<UserCloudPolicyManagerFactory>::get(); | 36 return Singleton<UserCloudPolicyManagerFactory>::get(); |
23 } | 37 } |
24 | 38 |
25 // static | 39 // static |
26 UserCloudPolicyManager* UserCloudPolicyManagerFactory::GetForBrowserContext( | 40 UserCloudPolicyManager* UserCloudPolicyManagerFactory::GetForBrowserContext( |
27 content::BrowserContext* context) { | 41 content::BrowserContext* context) { |
28 return GetInstance()->GetManagerForBrowserContext(context); | 42 return GetInstance()->GetManagerForBrowserContext(context); |
29 } | 43 } |
30 | 44 |
31 // static | 45 // static |
32 scoped_ptr<UserCloudPolicyManager> | 46 scoped_ptr<UserCloudPolicyManager> |
33 UserCloudPolicyManagerFactory::CreateForOriginalBrowserContext( | 47 UserCloudPolicyManagerFactory::CreateForOriginalBrowserContext( |
34 content::BrowserContext* context, | 48 content::BrowserContext* context, |
35 bool force_immediate_load, | 49 bool force_immediate_load, |
36 scoped_refptr<base::SequencedTaskRunner> background_task_runner) { | 50 const scoped_refptr<base::SequencedTaskRunner>& background_task_runner, |
| 51 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner, |
| 52 const scoped_refptr<base::SequencedTaskRunner>& io_task_runner) { |
37 return GetInstance()->CreateManagerForOriginalBrowserContext( | 53 return GetInstance()->CreateManagerForOriginalBrowserContext( |
38 context, force_immediate_load, background_task_runner); | 54 context, |
| 55 force_immediate_load, |
| 56 background_task_runner, |
| 57 file_task_runner, |
| 58 io_task_runner); |
39 } | 59 } |
40 | 60 |
41 // static | 61 // static |
42 UserCloudPolicyManager* | 62 UserCloudPolicyManager* |
43 UserCloudPolicyManagerFactory::RegisterForOffTheRecordBrowserContext( | 63 UserCloudPolicyManagerFactory::RegisterForOffTheRecordBrowserContext( |
44 content::BrowserContext* original_context, | 64 content::BrowserContext* original_context, |
45 content::BrowserContext* off_the_record_context) { | 65 content::BrowserContext* off_the_record_context) { |
46 return GetInstance()->RegisterManagerForOffTheRecordBrowserContext( | 66 return GetInstance()->RegisterManagerForOffTheRecordBrowserContext( |
47 original_context, off_the_record_context); | 67 original_context, off_the_record_context); |
48 } | 68 } |
(...skipping 14 matching lines...) Expand all Loading... |
63 // In case |context| is an incognito Profile/Context, |manager_| will have a | 83 // In case |context| is an incognito Profile/Context, |manager_| will have a |
64 // matching entry pointing to the PolicyService of the original context. | 84 // matching entry pointing to the PolicyService of the original context. |
65 ManagerMap::const_iterator it = managers_.find(context); | 85 ManagerMap::const_iterator it = managers_.find(context); |
66 return it != managers_.end() ? it->second : NULL; | 86 return it != managers_.end() ? it->second : NULL; |
67 } | 87 } |
68 | 88 |
69 scoped_ptr<UserCloudPolicyManager> | 89 scoped_ptr<UserCloudPolicyManager> |
70 UserCloudPolicyManagerFactory::CreateManagerForOriginalBrowserContext( | 90 UserCloudPolicyManagerFactory::CreateManagerForOriginalBrowserContext( |
71 content::BrowserContext* context, | 91 content::BrowserContext* context, |
72 bool force_immediate_load, | 92 bool force_immediate_load, |
73 scoped_refptr<base::SequencedTaskRunner> background_task_runner) { | 93 const scoped_refptr<base::SequencedTaskRunner>& background_task_runner, |
| 94 const scoped_refptr<base::SequencedTaskRunner>& file_task_runner, |
| 95 const scoped_refptr<base::SequencedTaskRunner>& io_task_runner) { |
74 DCHECK(!context->IsOffTheRecord()); | 96 DCHECK(!context->IsOffTheRecord()); |
| 97 |
75 scoped_ptr<UserCloudPolicyStore> store( | 98 scoped_ptr<UserCloudPolicyStore> store( |
76 UserCloudPolicyStore::Create(context->GetPath(), background_task_runner)); | 99 UserCloudPolicyStore::Create(context->GetPath(), background_task_runner)); |
77 if (force_immediate_load) | 100 if (force_immediate_load) |
78 store->LoadImmediately(); | 101 store->LoadImmediately(); |
| 102 |
| 103 const base::FilePath component_policy_cache_dir = |
| 104 context->GetPath().Append(kPolicy).Append(kComponentsDir); |
| 105 |
79 scoped_ptr<UserCloudPolicyManager> manager( | 106 scoped_ptr<UserCloudPolicyManager> manager( |
80 new UserCloudPolicyManager(context, | 107 new UserCloudPolicyManager(context, |
81 store.Pass(), | 108 store.Pass(), |
| 109 component_policy_cache_dir, |
82 scoped_ptr<CloudExternalDataManager>(), | 110 scoped_ptr<CloudExternalDataManager>(), |
83 base::MessageLoopProxy::current())); | 111 base::MessageLoopProxy::current(), |
| 112 file_task_runner, |
| 113 io_task_runner)); |
84 manager->Init(SchemaRegistryServiceFactory::GetForContext(context)); | 114 manager->Init(SchemaRegistryServiceFactory::GetForContext(context)); |
85 return manager.Pass(); | 115 return manager.Pass(); |
86 } | 116 } |
87 | 117 |
88 UserCloudPolicyManager* | 118 UserCloudPolicyManager* |
89 UserCloudPolicyManagerFactory::RegisterManagerForOffTheRecordBrowserContext( | 119 UserCloudPolicyManagerFactory::RegisterManagerForOffTheRecordBrowserContext( |
90 content::BrowserContext* original_context, | 120 content::BrowserContext* original_context, |
91 content::BrowserContext* off_the_record_context) { | 121 content::BrowserContext* off_the_record_context) { |
92 // Register the PolicyService of the original context for the respective | 122 // Register the PolicyService of the original context for the respective |
93 // incognito context. See also GetManagerForBrowserContext. | 123 // incognito context. See also GetManagerForBrowserContext. |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 if (entry != managers_.end()) { | 167 if (entry != managers_.end()) { |
138 if (instance) | 168 if (instance) |
139 DCHECK_EQ(instance, entry->second); | 169 DCHECK_EQ(instance, entry->second); |
140 managers_.erase(entry); | 170 managers_.erase(entry); |
141 } else { | 171 } else { |
142 NOTREACHED(); | 172 NOTREACHED(); |
143 } | 173 } |
144 } | 174 } |
145 | 175 |
146 } // namespace policy | 176 } // namespace policy |
OLD | NEW |