| 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 <utility> | 7 #include <utility> |
| 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" |
| 11 #include "base/files/file_util.h" | 11 #include "base/files/file_util.h" |
| 12 #include "base/location.h" | 12 #include "base/location.h" |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
| 15 #include "base/path_service.h" | 15 #include "base/path_service.h" |
| 16 #include "base/run_loop.h" | 16 #include "base/run_loop.h" |
| 17 #include "base/single_thread_task_runner.h" | 17 #include "base/single_thread_task_runner.h" |
| 18 #include "base/strings/string_number_conversions.h" | 18 #include "base/strings/string_number_conversions.h" |
| 19 #include "base/threading/thread_restrictions.h" |
| 19 #include "base/threading/thread_task_runner_handle.h" | 20 #include "base/threading/thread_task_runner_handle.h" |
| 20 #include "build/build_config.h" | 21 #include "build/build_config.h" |
| 21 #include "chrome/browser/autocomplete/in_memory_url_index_factory.h" | 22 #include "chrome/browser/autocomplete/in_memory_url_index_factory.h" |
| 22 #include "chrome/browser/bookmarks/bookmark_model_factory.h" | 23 #include "chrome/browser/bookmarks/bookmark_model_factory.h" |
| 23 #include "chrome/browser/bookmarks/chrome_bookmark_client.h" | 24 #include "chrome/browser/bookmarks/chrome_bookmark_client.h" |
| 24 #include "chrome/browser/bookmarks/managed_bookmark_service_factory.h" | 25 #include "chrome/browser/bookmarks/managed_bookmark_service_factory.h" |
| 25 #include "chrome/browser/browser_process.h" | 26 #include "chrome/browser/browser_process.h" |
| 26 #include "chrome/browser/chrome_notification_types.h" | 27 #include "chrome/browser/chrome_notification_types.h" |
| 27 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 28 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| 28 #include "chrome/browser/favicon/chrome_fallback_icon_client_factory.h" | 29 #include "chrome/browser/favicon/chrome_fallback_icon_client_factory.h" |
| (...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 384 FROM_HERE, | 385 FROM_HERE, |
| 385 base::Bind(&TestingProfile::FinishInit, base::Unretained(this))); | 386 base::Bind(&TestingProfile::FinishInit, base::Unretained(this))); |
| 386 } else { | 387 } else { |
| 387 FinishInit(); | 388 FinishInit(); |
| 388 } | 389 } |
| 389 | 390 |
| 390 SetSupervisedUserId(supervised_user_id); | 391 SetSupervisedUserId(supervised_user_id); |
| 391 } | 392 } |
| 392 | 393 |
| 393 void TestingProfile::CreateTempProfileDir() { | 394 void TestingProfile::CreateTempProfileDir() { |
| 395 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 394 if (!temp_dir_.CreateUniqueTempDir()) { | 396 if (!temp_dir_.CreateUniqueTempDir()) { |
| 395 LOG(ERROR) << "Failed to create unique temporary directory."; | 397 LOG(ERROR) << "Failed to create unique temporary directory."; |
| 396 | 398 |
| 397 // Fallback logic in case we fail to create unique temporary directory. | 399 // Fallback logic in case we fail to create unique temporary directory. |
| 398 base::FilePath system_tmp_dir; | 400 base::FilePath system_tmp_dir; |
| 399 bool success = PathService::Get(base::DIR_TEMP, &system_tmp_dir); | 401 bool success = PathService::Get(base::DIR_TEMP, &system_tmp_dir); |
| 400 | 402 |
| 401 // We're severly screwed if we can't get the system temporary | 403 // We're severly screwed if we can't get the system temporary |
| 402 // directory. Die now to avoid writing to the filesystem root | 404 // directory. Die now to avoid writing to the filesystem root |
| 403 // or other bad places. | 405 // or other bad places. |
| 404 CHECK(success); | 406 CHECK(success); |
| 405 | 407 |
| 406 base::FilePath fallback_dir( | 408 base::FilePath fallback_dir( |
| 407 system_tmp_dir.AppendASCII("TestingProfilePath")); | 409 system_tmp_dir.AppendASCII("TestingProfilePath")); |
| 408 base::DeleteFile(fallback_dir, true); | 410 base::DeleteFile(fallback_dir, true); |
| 409 base::CreateDirectory(fallback_dir); | 411 base::CreateDirectory(fallback_dir); |
| 410 if (!temp_dir_.Set(fallback_dir)) { | 412 if (!temp_dir_.Set(fallback_dir)) { |
| 411 // That shouldn't happen, but if it does, try to recover. | 413 // That shouldn't happen, but if it does, try to recover. |
| 412 LOG(ERROR) << "Failed to use a fallback temporary directory."; | 414 LOG(ERROR) << "Failed to use a fallback temporary directory."; |
| 413 | 415 |
| 414 // We're screwed if this fails, see CHECK above. | 416 // We're screwed if this fails, see CHECK above. |
| 415 CHECK(temp_dir_.Set(system_tmp_dir)); | 417 CHECK(temp_dir_.Set(system_tmp_dir)); |
| 416 } | 418 } |
| 417 } | 419 } |
| 418 } | 420 } |
| 419 | 421 |
| 420 void TestingProfile::Init() { | 422 void TestingProfile::Init() { |
| 423 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 421 // If threads have been initialized, we should be on the UI thread. | 424 // If threads have been initialized, we should be on the UI thread. |
| 422 DCHECK(!content::BrowserThread::IsThreadInitialized( | 425 DCHECK(!content::BrowserThread::IsThreadInitialized( |
| 423 content::BrowserThread::UI) || | 426 content::BrowserThread::UI) || |
| 424 content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 427 content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| 425 | 428 |
| 426 set_is_guest_profile(guest_session_); | 429 set_is_guest_profile(guest_session_); |
| 427 | 430 |
| 428 BrowserContext::Initialize(this, profile_path_); | 431 BrowserContext::Initialize(this, profile_path_); |
| 429 | 432 |
| 430 browser_context_dependency_manager_->MarkBrowserContextLive(this); | 433 browser_context_dependency_manager_->MarkBrowserContextLive(this); |
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 ShutdownStoragePartitions(); | 557 ShutdownStoragePartitions(); |
| 555 | 558 |
| 556 // Failing a post == leaks == heapcheck failure. Make that an immediate test | 559 // Failing a post == leaks == heapcheck failure. Make that an immediate test |
| 557 // failure. | 560 // failure. |
| 558 if (resource_context_) { | 561 if (resource_context_) { |
| 559 CHECK(BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, | 562 CHECK(BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, |
| 560 resource_context_)); | 563 resource_context_)); |
| 561 resource_context_ = NULL; | 564 resource_context_ = NULL; |
| 562 content::RunAllPendingInMessageLoop(BrowserThread::IO); | 565 content::RunAllPendingInMessageLoop(BrowserThread::IO); |
| 563 } | 566 } |
| 567 |
| 568 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 569 ignore_result(temp_dir_.Delete()); |
| 564 } | 570 } |
| 565 | 571 |
| 566 void TestingProfile::CreateFaviconService() { | 572 void TestingProfile::CreateFaviconService() { |
| 567 // It is up to the caller to create the history service if one is needed. | 573 // It is up to the caller to create the history service if one is needed. |
| 568 FaviconServiceFactory::GetInstance()->SetTestingFactory( | 574 FaviconServiceFactory::GetInstance()->SetTestingFactory( |
| 569 this, FaviconServiceFactory::GetDefaultFactory()); | 575 this, FaviconServiceFactory::GetDefaultFactory()); |
| 570 } | 576 } |
| 571 | 577 |
| 572 bool TestingProfile::CreateHistoryService(bool delete_file, bool no_db) { | 578 bool TestingProfile::CreateHistoryService(bool delete_file, bool no_db) { |
| 573 DestroyHistoryService(); | 579 DestroyHistoryService(); |
| (...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1093 // Note: Owned by |original_profile|. | 1099 // Note: Owned by |original_profile|. |
| 1094 return new TestingProfile(path_, delegate_, | 1100 return new TestingProfile(path_, delegate_, |
| 1095 #if BUILDFLAG(ENABLE_EXTENSIONS) | 1101 #if BUILDFLAG(ENABLE_EXTENSIONS) |
| 1096 extension_policy_, | 1102 extension_policy_, |
| 1097 #endif | 1103 #endif |
| 1098 std::move(pref_service_), original_profile, | 1104 std::move(pref_service_), original_profile, |
| 1099 guest_session_, supervised_user_id_, | 1105 guest_session_, supervised_user_id_, |
| 1100 std::move(policy_service_), testing_factories_, | 1106 std::move(policy_service_), testing_factories_, |
| 1101 profile_name_); | 1107 profile_name_); |
| 1102 } | 1108 } |
| OLD | NEW |