15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile_manager.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/ref_counted.h"
8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/extension_special_storage_policy.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/prefs/pref_service_syncable.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_info_cache.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/chrome_constants.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_browser_process.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS)
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/chromeos/profiles/profile_helper.h"
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const std::string kGuestProfileName = "Guest";
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace testing {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class ProfileManager : public ::ProfileManagerWithoutInit {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  explicit ProfileManager(const base::FilePath& user_data_dir)
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)      : ::ProfileManagerWithoutInit(user_data_dir) {}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual Profile* CreateProfileHelper(
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      const base::FilePath& file_path) OVERRIDE {
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return new TestingProfile(file_path);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace testing
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestingProfileManager::TestingProfileManager(TestingBrowserProcess* process)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    : called_set_up_(false),
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      browser_process_(process),
426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      local_state_(process),
436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)      profile_manager_(NULL) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestingProfileManager::~TestingProfileManager() {
475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Destroying this class also destroys the LocalState, so make sure the
485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // associated ProfileManager is also destroyed.
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  browser_process_->SetProfileManager(NULL);
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool TestingProfileManager::SetUp() {
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SetUpInternal();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return called_set_up_;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestingProfile* TestingProfileManager::CreateTestingProfile(
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& profile_name,
59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    scoped_ptr<PrefServiceSyncable> prefs,
605d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    const base::string16& user_name,
61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)    int avatar_id,
62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    const std::string& supervised_user_id,
63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    const TestingProfile::TestingFactories& factories) {
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(called_set_up_);
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create a path for the profile based on the name.
672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::FilePath profile_path(profiles_dir_.path());
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_CHROMEOS)
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (profile_name != chrome::kInitialProfile) {
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    profile_path =
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci        profile_path.Append(chromeos::ProfileHelper::Get()->GetUserProfileDir(
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci            chromeos::ProfileHelper::GetUserIdHashByUserIdForTesting(
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                profile_name)));
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  } else {
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    profile_path = profile_path.AppendASCII(profile_name);
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  profile_path = profile_path.AppendASCII(profile_name);
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Create the profile and register it.
823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  TestingProfile::Builder builder;
833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  builder.SetPath(profile_path);
843551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  builder.SetPrefService(prefs.Pass());
85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  builder.SetSupervisedUserId(supervised_user_id);
868bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
87f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  for (TestingProfile::TestingFactories::const_iterator it = factories.begin();
88f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)       it != factories.end(); ++it) {
89f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    builder.AddTestingFactory(it->first, it->second);
90f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
91f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
923551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  TestingProfile* profile = builder.Build().release();
93f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  profile->set_profile_name(profile_name);
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  profile_manager_->AddProfile(profile);  // Takes ownership.
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Update the user metadata.
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProfileInfoCache& cache = profile_manager_->GetProfileInfoCache();
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t index = cache.GetIndexOfProfileWithPath(profile_path);
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cache.SetAvatarIconOfProfileAtIndex(index, avatar_id);
100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  cache.SetSupervisedUserIdOfProfileAtIndex(index, supervised_user_id);
101a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // SetNameOfProfileAtIndex may reshuffle the list of profiles, so we do it
102a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // last.
103a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  cache.SetNameOfProfileAtIndex(index, user_name);
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  testing_profiles_.insert(std::make_pair(profile_name, profile));
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return profile;
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestingProfile* TestingProfileManager::CreateTestingProfile(
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& name) {
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(called_set_up_);
113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return CreateTestingProfile(name, scoped_ptr<PrefServiceSyncable>(),
1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)                              base::UTF8ToUTF16(name), 0, std::string(),
115f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                              TestingProfile::TestingFactories());
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)TestingProfile* TestingProfileManager::CreateGuestProfile() {
1195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  DCHECK(called_set_up_);
1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Create the profile and register it.
1225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  TestingProfile::Builder builder;
1235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  builder.SetGuestSession();
1245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  builder.SetPath(ProfileManager::GetGuestProfilePath());
1255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Add the guest profile to the profile manager, but not to the info cache.
1275d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  TestingProfile* profile = builder.Build().release();
1285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  profile->set_profile_name(kGuestProfileName);
129a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)
1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Set up a profile with an off the record profile.
1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  TestingProfile::Builder().BuildIncognito(profile);
1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
1335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  profile_manager_->AddProfile(profile);  // Takes ownership.
1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  profile_manager_->SetGuestProfilePrefs(profile);
1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  testing_profiles_.insert(std::make_pair(kGuestProfileName, profile));
1375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  return profile;
1395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestingProfileManager::DeleteTestingProfile(const std::string& name) {
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(called_set_up_);
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestingProfilesMap::iterator it = testing_profiles_.find(name);
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(it != testing_profiles_.end());
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestingProfile* profile = it->second;
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ProfileInfoCache& cache = profile_manager_->GetProfileInfoCache();
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cache.DeleteProfileFromCache(profile->GetPath());
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  profile_manager_->profiles_info_.erase(profile->GetPath());
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestingProfileManager::DeleteAllTestingProfiles() {
156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  for (TestingProfilesMap::iterator it = testing_profiles_.begin();
157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch       it != testing_profiles_.end(); ++it) {
158116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    TestingProfile* profile = it->second;
159116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    ProfileInfoCache& cache = profile_manager_->GetProfileInfoCache();
160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    cache.DeleteProfileFromCache(profile->GetPath());
161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  testing_profiles_.clear();
163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void TestingProfileManager::DeleteGuestProfile() {
1675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  DCHECK(called_set_up_);
1685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  TestingProfilesMap::iterator it = testing_profiles_.find(kGuestProfileName);
1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  DCHECK(it != testing_profiles_.end());
1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  profile_manager_->profiles_info_.erase(ProfileManager::GetGuestProfilePath());
1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestingProfileManager::DeleteProfileInfoCache() {
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  profile_manager_->profile_info_cache_.reset(NULL);
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestingProfileManager::SetLoggedIn(bool logged_in) {
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  profile_manager_->logged_in_ = logged_in;
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1839ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdochconst base::FilePath& TestingProfileManager::profiles_dir() {
1849ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  DCHECK(called_set_up_);
1859ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch  return profiles_dir_.path();
1869ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
1879ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileManager* TestingProfileManager::profile_manager() {
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(called_set_up_);
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return profile_manager_;
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ProfileInfoCache* TestingProfileManager::profile_info_cache() {
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(called_set_up_);
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return &profile_manager_->GetProfileInfoCache();
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TestingProfileManager::SetUpInternal() {
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(browser_process_->profile_manager())
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      << "ProfileManager already exists";
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set up the directory for profiles.
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(profiles_dir_.CreateUniqueTempDir());
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  profile_manager_ = new testing::ProfileManager(profiles_dir_.path());
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  browser_process_->SetProfileManager(profile_manager_);  // Takes ownership.
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  called_set_up_ = true;
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
210