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/test/base/testing_profile.h" | 5 #include "chrome/test/base/testing_profile.h" |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 | 8 |
9 #include "base/base_paths.h" | 9 #include "base/base_paths.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 #include "chrome/browser/geolocation/chrome_geolocation_permission_context.h" | 27 #include "chrome/browser/geolocation/chrome_geolocation_permission_context.h" |
28 #include "chrome/browser/history/history.h" | 28 #include "chrome/browser/history/history.h" |
29 #include "chrome/browser/history/history_backend.h" | 29 #include "chrome/browser/history/history_backend.h" |
30 #include "chrome/browser/history/history_service_factory.h" | 30 #include "chrome/browser/history/history_service_factory.h" |
31 #include "chrome/browser/history/shortcuts_backend.h" | 31 #include "chrome/browser/history/shortcuts_backend.h" |
32 #include "chrome/browser/history/shortcuts_backend_factory.h" | 32 #include "chrome/browser/history/shortcuts_backend_factory.h" |
33 #include "chrome/browser/history/top_sites.h" | 33 #include "chrome/browser/history/top_sites.h" |
34 #include "chrome/browser/net/proxy_service_factory.h" | 34 #include "chrome/browser/net/proxy_service_factory.h" |
35 #include "chrome/browser/notifications/desktop_notification_service.h" | 35 #include "chrome/browser/notifications/desktop_notification_service.h" |
36 #include "chrome/browser/notifications/desktop_notification_service_factory.h" | 36 #include "chrome/browser/notifications/desktop_notification_service_factory.h" |
| 37 #include "chrome/browser/policy/user_cloud_policy_manager.h" |
37 #include "chrome/browser/prefs/browser_prefs.h" | 38 #include "chrome/browser/prefs/browser_prefs.h" |
38 #include "chrome/browser/prefs/testing_pref_store.h" | 39 #include "chrome/browser/prefs/testing_pref_store.h" |
39 #include "chrome/browser/prerender/prerender_manager.h" | 40 #include "chrome/browser/prerender/prerender_manager.h" |
40 #include "chrome/browser/profiles/profile_dependency_manager.h" | 41 #include "chrome/browser/profiles/profile_dependency_manager.h" |
41 #include "chrome/browser/protector/protector_service_factory.h" | 42 #include "chrome/browser/protector/protector_service_factory.h" |
42 #include "chrome/browser/search_engines/template_url_fetcher_factory.h" | 43 #include "chrome/browser/search_engines/template_url_fetcher_factory.h" |
43 #include "chrome/browser/speech/chrome_speech_recognition_preferences.h" | 44 #include "chrome/browser/speech/chrome_speech_recognition_preferences.h" |
44 #include "chrome/browser/webdata/web_data_service.h" | 45 #include "chrome/browser/webdata/web_data_service.h" |
45 #include "chrome/browser/webdata/web_data_service_factory.h" | 46 #include "chrome/browser/webdata/web_data_service_factory.h" |
46 #include "chrome/common/chrome_constants.h" | 47 #include "chrome/common/chrome_constants.h" |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 const char TestingProfile::kTestUserProfileDir[] = "Default"; | 153 const char TestingProfile::kTestUserProfileDir[] = "Default"; |
153 #endif | 154 #endif |
154 | 155 |
155 TestingProfile::TestingProfile() | 156 TestingProfile::TestingProfile() |
156 : start_time_(Time::Now()), | 157 : start_time_(Time::Now()), |
157 testing_prefs_(NULL), | 158 testing_prefs_(NULL), |
158 incognito_(false), | 159 incognito_(false), |
159 last_session_exited_cleanly_(true), | 160 last_session_exited_cleanly_(true), |
160 profile_dependency_manager_(ProfileDependencyManager::GetInstance()), | 161 profile_dependency_manager_(ProfileDependencyManager::GetInstance()), |
161 delegate_(NULL) { | 162 delegate_(NULL) { |
162 if (!temp_dir_.CreateUniqueTempDir()) { | 163 CreateTempProfileDir(); |
163 LOG(ERROR) << "Failed to create unique temporary directory."; | |
164 | |
165 // Fallback logic in case we fail to create unique temporary directory. | |
166 FilePath system_tmp_dir; | |
167 bool success = PathService::Get(base::DIR_TEMP, &system_tmp_dir); | |
168 | |
169 // We're severly screwed if we can't get the system temporary | |
170 // directory. Die now to avoid writing to the filesystem root | |
171 // or other bad places. | |
172 CHECK(success); | |
173 | |
174 FilePath fallback_dir(system_tmp_dir.AppendASCII("TestingProfilePath")); | |
175 file_util::Delete(fallback_dir, true); | |
176 file_util::CreateDirectory(fallback_dir); | |
177 if (!temp_dir_.Set(fallback_dir)) { | |
178 // That shouldn't happen, but if it does, try to recover. | |
179 LOG(ERROR) << "Failed to use a fallback temporary directory."; | |
180 | |
181 // We're screwed if this fails, see CHECK above. | |
182 CHECK(temp_dir_.Set(system_tmp_dir)); | |
183 } | |
184 } | |
185 | |
186 profile_path_ = temp_dir_.path(); | 164 profile_path_ = temp_dir_.path(); |
187 | 165 |
188 Init(); | 166 Init(); |
189 FinishInit(); | 167 FinishInit(); |
190 } | 168 } |
191 | 169 |
192 TestingProfile::TestingProfile(const FilePath& path) | 170 TestingProfile::TestingProfile(const FilePath& path) |
193 : start_time_(Time::Now()), | 171 : start_time_(Time::Now()), |
194 testing_prefs_(NULL), | 172 testing_prefs_(NULL), |
195 incognito_(false), | 173 incognito_(false), |
(...skipping 17 matching lines...) Expand all Loading... |
213 Init(); | 191 Init(); |
214 if (delegate_) { | 192 if (delegate_) { |
215 MessageLoop::current()->PostTask(FROM_HERE, | 193 MessageLoop::current()->PostTask(FROM_HERE, |
216 base::Bind(&TestingProfile::FinishInit, | 194 base::Bind(&TestingProfile::FinishInit, |
217 base::Unretained(this))); | 195 base::Unretained(this))); |
218 } else { | 196 } else { |
219 FinishInit(); | 197 FinishInit(); |
220 } | 198 } |
221 } | 199 } |
222 | 200 |
| 201 TestingProfile::TestingProfile( |
| 202 const FilePath& path, |
| 203 Delegate* delegate, |
| 204 scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy, |
| 205 scoped_ptr<PrefService> prefs, |
| 206 scoped_ptr<policy::UserCloudPolicyManager> user_cloud_policy_manager) |
| 207 : start_time_(Time::Now()), |
| 208 prefs_(prefs.release()), |
| 209 testing_prefs_(NULL), |
| 210 incognito_(false), |
| 211 last_session_exited_cleanly_(true), |
| 212 extension_special_storage_policy_(extension_policy), |
| 213 user_cloud_policy_manager_(user_cloud_policy_manager.release()), |
| 214 profile_path_(path), |
| 215 profile_dependency_manager_(ProfileDependencyManager::GetInstance()), |
| 216 delegate_(delegate) { |
| 217 |
| 218 // If no profile path was supplied, create one. |
| 219 if (profile_path_.empty()) { |
| 220 CreateTempProfileDir(); |
| 221 profile_path_ = temp_dir_.path(); |
| 222 } |
| 223 |
| 224 Init(); |
| 225 // If caller supplied a delegate, delay the FinishInit invocation until other |
| 226 // tasks have run. |
| 227 // TODO(atwilson): See if this is still required once we convert the current |
| 228 // users of the constructor that takes a Delegate* param. |
| 229 if (delegate_) { |
| 230 MessageLoop::current()->PostTask(FROM_HERE, |
| 231 base::Bind(&TestingProfile::FinishInit, |
| 232 base::Unretained(this))); |
| 233 } else { |
| 234 FinishInit(); |
| 235 } |
| 236 } |
| 237 |
| 238 void TestingProfile::CreateTempProfileDir() { |
| 239 if (!temp_dir_.CreateUniqueTempDir()) { |
| 240 LOG(ERROR) << "Failed to create unique temporary directory."; |
| 241 |
| 242 // Fallback logic in case we fail to create unique temporary directory. |
| 243 FilePath system_tmp_dir; |
| 244 bool success = PathService::Get(base::DIR_TEMP, &system_tmp_dir); |
| 245 |
| 246 // We're severly screwed if we can't get the system temporary |
| 247 // directory. Die now to avoid writing to the filesystem root |
| 248 // or other bad places. |
| 249 CHECK(success); |
| 250 |
| 251 FilePath fallback_dir(system_tmp_dir.AppendASCII("TestingProfilePath")); |
| 252 file_util::Delete(fallback_dir, true); |
| 253 file_util::CreateDirectory(fallback_dir); |
| 254 if (!temp_dir_.Set(fallback_dir)) { |
| 255 // That shouldn't happen, but if it does, try to recover. |
| 256 LOG(ERROR) << "Failed to use a fallback temporary directory."; |
| 257 |
| 258 // We're screwed if this fails, see CHECK above. |
| 259 CHECK(temp_dir_.Set(system_tmp_dir)); |
| 260 } |
| 261 } |
| 262 } |
| 263 |
223 void TestingProfile::Init() { | 264 void TestingProfile::Init() { |
224 if (!file_util::PathExists(profile_path_)) | 265 if (!file_util::PathExists(profile_path_)) |
225 file_util::CreateDirectory(profile_path_); | 266 file_util::CreateDirectory(profile_path_); |
226 | 267 |
227 extensions::ExtensionSystemFactory::GetInstance()->SetTestingFactory( | 268 extensions::ExtensionSystemFactory::GetInstance()->SetTestingFactory( |
228 this, extensions::TestExtensionSystem::Build); | 269 this, extensions::TestExtensionSystem::Build); |
229 | 270 |
230 profile_dependency_manager_->CreateProfileServices(this, true); | 271 profile_dependency_manager_->CreateProfileServices(this, true); |
231 | 272 |
232 #if defined(ENABLE_NOTIFICATIONS) | 273 #if defined(ENABLE_NOTIFICATIONS) |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
487 return HistoryServiceFactory::GetForProfileWithoutCreating(this); | 528 return HistoryServiceFactory::GetForProfileWithoutCreating(this); |
488 } | 529 } |
489 | 530 |
490 net::CookieMonster* TestingProfile::GetCookieMonster() { | 531 net::CookieMonster* TestingProfile::GetCookieMonster() { |
491 if (!GetRequestContext()) | 532 if (!GetRequestContext()) |
492 return NULL; | 533 return NULL; |
493 return GetRequestContext()->GetURLRequestContext()->cookie_store()-> | 534 return GetRequestContext()->GetURLRequestContext()->cookie_store()-> |
494 GetCookieMonster(); | 535 GetCookieMonster(); |
495 } | 536 } |
496 | 537 |
| 538 policy::UserCloudPolicyManager* TestingProfile::GetUserCloudPolicyManager() { |
| 539 return user_cloud_policy_manager_.get(); |
| 540 } |
| 541 |
497 policy::PolicyService* TestingProfile::GetPolicyService() { | 542 policy::PolicyService* TestingProfile::GetPolicyService() { |
498 if (!policy_service_.get()) { | 543 if (!policy_service_.get()) { |
499 #if defined(ENABLE_CONFIGURATION_POLICY) | 544 #if defined(ENABLE_CONFIGURATION_POLICY) |
500 policy::PolicyServiceImpl::Providers providers; | 545 policy::PolicyServiceImpl::Providers providers; |
501 policy_service_.reset(new policy::PolicyServiceImpl(providers)); | 546 policy_service_.reset(new policy::PolicyServiceImpl(providers)); |
502 #else | 547 #else |
503 policy_service_.reset(new policy::PolicyServiceStub()); | 548 policy_service_.reset(new policy::PolicyServiceStub()); |
504 #endif | 549 #endif |
505 } | 550 } |
506 return policy_service_.get(); | 551 return policy_service_.get(); |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
725 } | 770 } |
726 | 771 |
727 bool TestingProfile::WasCreatedByVersionOrLater(const std::string& version) { | 772 bool TestingProfile::WasCreatedByVersionOrLater(const std::string& version) { |
728 return true; | 773 return true; |
729 } | 774 } |
730 | 775 |
731 base::Callback<ChromeURLDataManagerBackend*(void)> | 776 base::Callback<ChromeURLDataManagerBackend*(void)> |
732 TestingProfile::GetChromeURLDataManagerBackendGetter() const { | 777 TestingProfile::GetChromeURLDataManagerBackendGetter() const { |
733 return base::Callback<ChromeURLDataManagerBackend*(void)>(); | 778 return base::Callback<ChromeURLDataManagerBackend*(void)>(); |
734 } | 779 } |
| 780 |
| 781 TestingProfile::Builder::Builder() |
| 782 : build_called_(false), |
| 783 delegate_(NULL) { |
| 784 } |
| 785 |
| 786 TestingProfile::Builder::~Builder() { |
| 787 } |
| 788 |
| 789 void TestingProfile::Builder::SetPath(const FilePath& path) { |
| 790 path_ = path; |
| 791 } |
| 792 |
| 793 void TestingProfile::Builder::SetDelegate(Delegate* delegate) { |
| 794 delegate_ = delegate; |
| 795 } |
| 796 |
| 797 void TestingProfile::Builder::SetExtensionSpecialStoragePolicy( |
| 798 scoped_refptr<ExtensionSpecialStoragePolicy> policy) { |
| 799 extension_policy_ = policy; |
| 800 } |
| 801 |
| 802 void TestingProfile::Builder::SetPrefService(scoped_ptr<PrefService> prefs) { |
| 803 pref_service_ = prefs.Pass(); |
| 804 } |
| 805 |
| 806 void TestingProfile::Builder::SetUserCloudPolicyManager( |
| 807 scoped_ptr<policy::UserCloudPolicyManager> manager) { |
| 808 user_cloud_policy_manager_ = manager.Pass(); |
| 809 } |
| 810 |
| 811 scoped_ptr<TestingProfile> TestingProfile::Builder::Build() { |
| 812 DCHECK(!build_called_); |
| 813 build_called_ = true; |
| 814 return scoped_ptr<TestingProfile>(new TestingProfile( |
| 815 path_, |
| 816 delegate_, |
| 817 extension_policy_, |
| 818 pref_service_.Pass(), |
| 819 user_cloud_policy_manager_.Pass())); |
| 820 } |
| 821 |
| 822 |
OLD | NEW |