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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 #endif | 163 #endif |
164 | 164 |
165 TestingProfile::TestingProfile() | 165 TestingProfile::TestingProfile() |
166 : start_time_(Time::Now()), | 166 : start_time_(Time::Now()), |
167 testing_prefs_(NULL), | 167 testing_prefs_(NULL), |
168 incognito_(false), | 168 incognito_(false), |
169 original_profile_(NULL), | 169 original_profile_(NULL), |
170 last_session_exited_cleanly_(true), | 170 last_session_exited_cleanly_(true), |
171 browser_context_dependency_manager_( | 171 browser_context_dependency_manager_( |
172 BrowserContextDependencyManager::GetInstance()), | 172 BrowserContextDependencyManager::GetInstance()), |
| 173 resource_context_(NULL), |
173 delegate_(NULL) { | 174 delegate_(NULL) { |
174 CreateTempProfileDir(); | 175 CreateTempProfileDir(); |
175 profile_path_ = temp_dir_.path(); | 176 profile_path_ = temp_dir_.path(); |
176 | 177 |
177 Init(); | 178 Init(); |
178 FinishInit(); | 179 FinishInit(); |
179 } | 180 } |
180 | 181 |
181 TestingProfile::TestingProfile(const base::FilePath& path) | 182 TestingProfile::TestingProfile(const base::FilePath& path) |
182 : start_time_(Time::Now()), | 183 : start_time_(Time::Now()), |
183 testing_prefs_(NULL), | 184 testing_prefs_(NULL), |
184 incognito_(false), | 185 incognito_(false), |
185 original_profile_(NULL), | 186 original_profile_(NULL), |
186 last_session_exited_cleanly_(true), | 187 last_session_exited_cleanly_(true), |
187 profile_path_(path), | 188 profile_path_(path), |
188 browser_context_dependency_manager_( | 189 browser_context_dependency_manager_( |
189 BrowserContextDependencyManager::GetInstance()), | 190 BrowserContextDependencyManager::GetInstance()), |
| 191 resource_context_(NULL), |
190 delegate_(NULL) { | 192 delegate_(NULL) { |
191 Init(); | 193 Init(); |
192 FinishInit(); | 194 FinishInit(); |
193 } | 195 } |
194 | 196 |
195 TestingProfile::TestingProfile(const base::FilePath& path, | 197 TestingProfile::TestingProfile(const base::FilePath& path, |
196 Delegate* delegate) | 198 Delegate* delegate) |
197 : start_time_(Time::Now()), | 199 : start_time_(Time::Now()), |
198 testing_prefs_(NULL), | 200 testing_prefs_(NULL), |
199 incognito_(false), | 201 incognito_(false), |
200 original_profile_(NULL), | 202 original_profile_(NULL), |
201 last_session_exited_cleanly_(true), | 203 last_session_exited_cleanly_(true), |
202 profile_path_(path), | 204 profile_path_(path), |
203 browser_context_dependency_manager_( | 205 browser_context_dependency_manager_( |
204 BrowserContextDependencyManager::GetInstance()), | 206 BrowserContextDependencyManager::GetInstance()), |
| 207 resource_context_(NULL), |
205 delegate_(delegate) { | 208 delegate_(delegate) { |
206 Init(); | 209 Init(); |
207 if (delegate_) { | 210 if (delegate_) { |
208 base::MessageLoop::current()->PostTask( | 211 base::MessageLoop::current()->PostTask( |
209 FROM_HERE, | 212 FROM_HERE, |
210 base::Bind(&TestingProfile::FinishInit, base::Unretained(this))); | 213 base::Bind(&TestingProfile::FinishInit, base::Unretained(this))); |
211 } else { | 214 } else { |
212 FinishInit(); | 215 FinishInit(); |
213 } | 216 } |
214 } | 217 } |
215 | 218 |
216 TestingProfile::TestingProfile( | 219 TestingProfile::TestingProfile( |
217 const base::FilePath& path, | 220 const base::FilePath& path, |
218 Delegate* delegate, | 221 Delegate* delegate, |
219 scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy, | 222 scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy, |
220 scoped_ptr<PrefServiceSyncable> prefs) | 223 scoped_ptr<PrefServiceSyncable> prefs) |
221 : start_time_(Time::Now()), | 224 : start_time_(Time::Now()), |
222 prefs_(prefs.release()), | 225 prefs_(prefs.release()), |
223 testing_prefs_(NULL), | 226 testing_prefs_(NULL), |
224 incognito_(false), | 227 incognito_(false), |
225 original_profile_(NULL), | 228 original_profile_(NULL), |
226 last_session_exited_cleanly_(true), | 229 last_session_exited_cleanly_(true), |
227 extension_special_storage_policy_(extension_policy), | 230 extension_special_storage_policy_(extension_policy), |
228 profile_path_(path), | 231 profile_path_(path), |
229 browser_context_dependency_manager_( | 232 browser_context_dependency_manager_( |
230 BrowserContextDependencyManager::GetInstance()), | 233 BrowserContextDependencyManager::GetInstance()), |
| 234 resource_context_(NULL), |
231 delegate_(delegate) { | 235 delegate_(delegate) { |
232 | 236 |
233 // If no profile path was supplied, create one. | 237 // If no profile path was supplied, create one. |
234 if (profile_path_.empty()) { | 238 if (profile_path_.empty()) { |
235 CreateTempProfileDir(); | 239 CreateTempProfileDir(); |
236 profile_path_ = temp_dir_.path(); | 240 profile_path_ = temp_dir_.path(); |
237 } | 241 } |
238 | 242 |
239 Init(); | 243 Init(); |
240 // If caller supplied a delegate, delay the FinishInit invocation until other | 244 // If caller supplied a delegate, delay the FinishInit invocation until other |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 content::NotificationService::current()->Notify( | 317 content::NotificationService::current()->Notify( |
314 chrome::NOTIFICATION_PROFILE_CREATED, | 318 chrome::NOTIFICATION_PROFILE_CREATED, |
315 content::Source<Profile>(static_cast<Profile*>(this)), | 319 content::Source<Profile>(static_cast<Profile*>(this)), |
316 content::NotificationService::NoDetails()); | 320 content::NotificationService::NoDetails()); |
317 | 321 |
318 if (delegate_) | 322 if (delegate_) |
319 delegate_->OnProfileCreated(this, true, false); | 323 delegate_->OnProfileCreated(this, true, false); |
320 } | 324 } |
321 | 325 |
322 TestingProfile::~TestingProfile() { | 326 TestingProfile::~TestingProfile() { |
| 327 // Any objects holding live URLFetchers should be deleted before teardown. |
| 328 TemplateURLFetcherFactory::ShutdownForProfile(this); |
| 329 |
323 MaybeSendDestroyedNotification(); | 330 MaybeSendDestroyedNotification(); |
324 | 331 |
325 browser_context_dependency_manager_->DestroyBrowserContextServices(this); | 332 browser_context_dependency_manager_->DestroyBrowserContextServices(this); |
326 | 333 |
327 if (host_content_settings_map_.get()) | 334 if (host_content_settings_map_.get()) |
328 host_content_settings_map_->ShutdownOnUIThread(); | 335 host_content_settings_map_->ShutdownOnUIThread(); |
329 | 336 |
330 DestroyTopSites(); | 337 DestroyTopSites(); |
331 | 338 |
332 if (pref_proxy_config_tracker_.get()) | 339 if (pref_proxy_config_tracker_.get()) |
333 pref_proxy_config_tracker_->DetachFromPrefService(); | 340 pref_proxy_config_tracker_->DetachFromPrefService(); |
| 341 // Failing a post == leaks == heapcheck failure. Make that an immediate test |
| 342 // failure. |
| 343 if (resource_context_) { |
| 344 CHECK(BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, |
| 345 resource_context_)); |
| 346 resource_context_ = NULL; |
| 347 content::RunAllPendingInMessageLoop(BrowserThread::IO); |
| 348 } |
334 } | 349 } |
335 | 350 |
336 static BrowserContextKeyedService* BuildFaviconService( | 351 static BrowserContextKeyedService* BuildFaviconService( |
337 content::BrowserContext* profile) { | 352 content::BrowserContext* profile) { |
338 return new FaviconService( | 353 return new FaviconService( |
339 HistoryServiceFactory::GetForProfileWithoutCreating( | 354 HistoryServiceFactory::GetForProfileWithoutCreating( |
340 static_cast<Profile*>(profile))); | 355 static_cast<Profile*>(profile))); |
341 } | 356 } |
342 | 357 |
343 void TestingProfile::CreateFaviconService() { | 358 void TestingProfile::CreateFaviconService() { |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
589 | 604 |
590 history::TopSites* TestingProfile::GetTopSitesWithoutCreating() { | 605 history::TopSites* TestingProfile::GetTopSitesWithoutCreating() { |
591 return top_sites_.get(); | 606 return top_sites_.get(); |
592 } | 607 } |
593 | 608 |
594 DownloadManagerDelegate* TestingProfile::GetDownloadManagerDelegate() { | 609 DownloadManagerDelegate* TestingProfile::GetDownloadManagerDelegate() { |
595 return NULL; | 610 return NULL; |
596 } | 611 } |
597 | 612 |
598 net::URLRequestContextGetter* TestingProfile::GetRequestContext() { | 613 net::URLRequestContextGetter* TestingProfile::GetRequestContext() { |
599 return request_context_.get(); | 614 return GetDefaultStoragePartition(this)->GetURLRequestContext(); |
600 } | 615 } |
601 | 616 |
602 net::URLRequestContextGetter* TestingProfile::CreateRequestContext( | 617 net::URLRequestContextGetter* TestingProfile::CreateRequestContext( |
603 content::ProtocolHandlerMap* protocol_handlers) { | 618 content::ProtocolHandlerMap* protocol_handlers) { |
604 return request_context_.get(); | 619 return new net::TestURLRequestContextGetter( |
| 620 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); |
605 } | 621 } |
606 | 622 |
607 net::URLRequestContextGetter* TestingProfile::GetRequestContextForRenderProcess( | 623 net::URLRequestContextGetter* TestingProfile::GetRequestContextForRenderProcess( |
608 int renderer_child_id) { | 624 int renderer_child_id) { |
609 content::RenderProcessHost* rph = content::RenderProcessHost::FromID( | 625 content::RenderProcessHost* rph = content::RenderProcessHost::FromID( |
610 renderer_child_id); | 626 renderer_child_id); |
611 return rph->GetStoragePartition()->GetURLRequestContext(); | 627 return rph->GetStoragePartition()->GetURLRequestContext(); |
612 } | 628 } |
613 | 629 |
614 void TestingProfile::CreateRequestContext() { | |
615 if (!request_context_.get()) | |
616 request_context_ = new net::TestURLRequestContextGetter( | |
617 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO)); | |
618 } | |
619 | |
620 void TestingProfile::ResetRequestContext() { | |
621 // Any objects holding live URLFetchers should be deleted before the request | |
622 // context is shut down. | |
623 TemplateURLFetcherFactory::ShutdownForProfile(this); | |
624 | |
625 request_context_ = NULL; | |
626 } | |
627 | |
628 net::URLRequestContextGetter* TestingProfile::GetMediaRequestContext() { | 630 net::URLRequestContextGetter* TestingProfile::GetMediaRequestContext() { |
629 return NULL; | 631 return NULL; |
630 } | 632 } |
631 | 633 |
632 net::URLRequestContextGetter* | 634 net::URLRequestContextGetter* |
633 TestingProfile::GetMediaRequestContextForRenderProcess( | 635 TestingProfile::GetMediaRequestContextForRenderProcess( |
634 int renderer_child_id) { | 636 int renderer_child_id) { |
635 return NULL; | 637 return NULL; |
636 } | 638 } |
637 | 639 |
(...skipping 29 matching lines...) Expand all Loading... |
667 TestingProfile::CreateRequestContextForStoragePartition( | 669 TestingProfile::CreateRequestContextForStoragePartition( |
668 const base::FilePath& partition_path, | 670 const base::FilePath& partition_path, |
669 bool in_memory, | 671 bool in_memory, |
670 content::ProtocolHandlerMap* protocol_handlers) { | 672 content::ProtocolHandlerMap* protocol_handlers) { |
671 // We don't test storage partitions here yet, so returning the same dummy | 673 // We don't test storage partitions here yet, so returning the same dummy |
672 // context is sufficient for now. | 674 // context is sufficient for now. |
673 return GetRequestContext(); | 675 return GetRequestContext(); |
674 } | 676 } |
675 | 677 |
676 content::ResourceContext* TestingProfile::GetResourceContext() { | 678 content::ResourceContext* TestingProfile::GetResourceContext() { |
677 if (!resource_context_.get()) | 679 if (!resource_context_) |
678 resource_context_.reset(new content::MockResourceContext()); | 680 resource_context_ = new content::MockResourceContext(); |
679 return resource_context_.get(); | 681 return resource_context_; |
680 } | 682 } |
681 | 683 |
682 HostContentSettingsMap* TestingProfile::GetHostContentSettingsMap() { | 684 HostContentSettingsMap* TestingProfile::GetHostContentSettingsMap() { |
683 if (!host_content_settings_map_.get()) { | 685 if (!host_content_settings_map_.get()) { |
684 host_content_settings_map_ = new HostContentSettingsMap(GetPrefs(), false); | 686 host_content_settings_map_ = new HostContentSettingsMap(GetPrefs(), false); |
685 #if defined(ENABLE_EXTENSIONS) | 687 #if defined(ENABLE_EXTENSIONS) |
686 ExtensionService* extension_service = GetExtensionService(); | 688 ExtensionService* extension_service = GetExtensionService(); |
687 if (extension_service) | 689 if (extension_service) |
688 host_content_settings_map_->RegisterExtensionService(extension_service); | 690 host_content_settings_map_->RegisterExtensionService(extension_service); |
689 #endif | 691 #endif |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 | 810 |
809 scoped_ptr<TestingProfile> TestingProfile::Builder::Build() { | 811 scoped_ptr<TestingProfile> TestingProfile::Builder::Build() { |
810 DCHECK(!build_called_); | 812 DCHECK(!build_called_); |
811 build_called_ = true; | 813 build_called_ = true; |
812 return scoped_ptr<TestingProfile>(new TestingProfile( | 814 return scoped_ptr<TestingProfile>(new TestingProfile( |
813 path_, | 815 path_, |
814 delegate_, | 816 delegate_, |
815 extension_policy_, | 817 extension_policy_, |
816 pref_service_.Pass())); | 818 pref_service_.Pass())); |
817 } | 819 } |
OLD | NEW |