Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 // This class keeps track of the currently-active profiles in the runtime. | 5 // This class keeps track of the currently-active profiles in the runtime. |
| 6 | 6 |
| 7 #ifndef CHROME_BROWSER_PROFILES_PROFILE_MANAGER_H_ | 7 #ifndef CHROME_BROWSER_PROFILES_PROFILE_MANAGER_H_ |
| 8 #define CHROME_BROWSER_PROFILES_PROFILE_MANAGER_H_ | 8 #define CHROME_BROWSER_PROFILES_PROFILE_MANAGER_H_ |
| 9 #pragma once | 9 #pragma once |
| 10 | 10 |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 #include "content/public/browser/notification_observer.h" | 25 #include "content/public/browser/notification_observer.h" |
| 26 #include "content/public/browser/notification_registrar.h" | 26 #include "content/public/browser/notification_registrar.h" |
| 27 | 27 |
| 28 #if defined(OS_WIN) | 28 #if defined(OS_WIN) |
| 29 #include "chrome/browser/profiles/profile_shortcut_manager_win.h" | 29 #include "chrome/browser/profiles/profile_shortcut_manager_win.h" |
| 30 #endif | 30 #endif |
| 31 | 31 |
| 32 class NewProfileLauncher; | 32 class NewProfileLauncher; |
| 33 class ProfileInfoCache; | 33 class ProfileInfoCache; |
| 34 | 34 |
| 35 class ProfileManagerObserver { | |
| 36 public: | |
| 37 enum Status { | |
| 38 // Asynchronous Profile services were not created. | |
| 39 STATUS_FAIL, | |
| 40 // Profile created but before initializing extensions and promo resources. | |
| 41 STATUS_CREATED, | |
| 42 // Profile is created, extensions and promo resources are initialized. | |
| 43 STATUS_INITIALIZED | |
| 44 }; | |
| 45 | |
| 46 // This method is called when profile is ready. If profile already exists, | |
| 47 // method is called with pointer to that profile and STATUS_INITIALIZED. | |
| 48 // If profile creation has failed, method is called with |profile| equal to | |
| 49 // NULL and |status| equal to STATUS_FAIL. If profile has been created | |
| 50 // successfully, method is called twice: first with STATUS_CREATED status | |
| 51 // (before extensions are initialized) and eventually with STATUS_INITIALIZED. | |
| 52 virtual void OnProfileCreated(Profile* profile, Status status) = 0; | |
| 53 | |
| 54 // If true, delete the observer after no more OnProfileCreated calls are | |
| 55 // expected. Default is false. | |
| 56 virtual bool DeleteAfter(); | |
| 57 | |
| 58 virtual ~ProfileManagerObserver() {} | |
| 59 }; | |
| 60 | |
| 61 class ProfileManager : public base::NonThreadSafe, | 35 class ProfileManager : public base::NonThreadSafe, |
| 62 public BrowserList::Observer, | 36 public BrowserList::Observer, |
| 63 public content::NotificationObserver, | 37 public content::NotificationObserver, |
| 64 public Profile::Delegate { | 38 public Profile::Delegate { |
| 65 public: | 39 public: |
| 40 typedef base::Callback<void(Profile*, Profile::CreateStatus)> CreateCallback; | |
| 41 | |
| 66 explicit ProfileManager(const FilePath& user_data_dir); | 42 explicit ProfileManager(const FilePath& user_data_dir); |
| 67 virtual ~ProfileManager(); | 43 virtual ~ProfileManager(); |
| 68 | 44 |
| 69 // Invokes SessionServiceFactory::ShutdownForProfile() for all profiles. | 45 // Invokes SessionServiceFactory::ShutdownForProfile() for all profiles. |
| 70 static void ShutdownSessionServices(); | 46 static void ShutdownSessionServices(); |
| 71 | 47 |
| 72 // Physically remove deleted profile directories from disk. | 48 // Physically remove deleted profile directories from disk. |
| 73 static void NukeDeletedProfilesFromDisk(); | 49 static void NukeDeletedProfilesFromDisk(); |
| 74 | 50 |
| 75 // DEPRECATED: DO NOT USE unless in ChromeOS. | 51 // DEPRECATED: DO NOT USE unless in ChromeOS. |
| 76 // Returns the default profile. This adds the profile to the | 52 // Returns the default profile. This adds the profile to the |
| 77 // ProfileManager if it doesn't already exist. This method returns NULL if | 53 // ProfileManager if it doesn't already exist. This method returns NULL if |
| 78 // the profile doesn't exist and we can't create it. | 54 // the profile doesn't exist and we can't create it. |
| 79 // The profile used can be overridden by using --login-profile on cros. | 55 // The profile used can be overridden by using --login-profile on cros. |
| 80 Profile* GetDefaultProfile(const FilePath& user_data_dir); | 56 Profile* GetDefaultProfile(const FilePath& user_data_dir); |
| 81 | 57 |
| 82 // DEPRECATED: DO NOT USE unless in ChromeOS. | 58 // DEPRECATED: DO NOT USE unless in ChromeOS. |
| 83 // Same as instance method but provides the default user_data_dir as well. | 59 // Same as instance method but provides the default user_data_dir as well. |
| 84 static Profile* GetDefaultProfile(); | 60 static Profile* GetDefaultProfile(); |
| 85 | 61 |
| 86 // Returns a profile for a specific profile directory within the user data | 62 // Returns a profile for a specific profile directory within the user data |
| 87 // dir. This will return an existing profile it had already been created, | 63 // dir. This will return an existing profile it had already been created, |
| 88 // otherwise it will create and manage it. | 64 // otherwise it will create and manage it. |
| 89 Profile* GetProfile(const FilePath& profile_dir); | 65 Profile* GetProfile(const FilePath& profile_dir); |
| 90 | 66 |
| 91 // Returns total number of profiles available on this machine. | 67 // Returns total number of profiles available on this machine. |
| 92 size_t GetNumberOfProfiles(); | 68 size_t GetNumberOfProfiles(); |
| 93 | 69 |
| 94 // Explicit asynchronous creation of the profile. |observer| is called | 70 // Explicit asynchronous creation of a profile located at |profile_path|. |
| 95 // when profile is created. If profile has already been created, observer | 71 // If the profile has already been created then callback is called |
| 96 // is called immediately. Should be called on the UI thread. | 72 // immediately. |
| 97 void CreateProfileAsync(const FilePath& user_data_dir, | 73 void CreateProfileAsync(const FilePath& profile_path, |
| 98 ProfileManagerObserver* observer); | 74 CreateCallback callback); |
|
Robert Sesek
2011/12/07 16:36:13
const ref
sail
2011/12/07 17:18:13
Done.
| |
| 99 | 75 |
| 100 // Initiates default profile creation. If default profile has already been | 76 // Initiates default profile creation. If default profile has already been |
| 101 // created, observer is called immediately. Should be called on the UI thread. | 77 // created then the callback is called immediately. Should be called on the |
| 102 static void CreateDefaultProfileAsync(ProfileManagerObserver* observer); | 78 // UI thread. |
| 79 static void CreateDefaultProfileAsync(CreateCallback callback); | |
|
Robert Sesek
2011/12/07 16:36:13
const ref
sail
2011/12/07 17:18:13
Done.
| |
| 103 | 80 |
| 104 // Returns true if the profile pointer is known to point to an existing | 81 // Returns true if the profile pointer is known to point to an existing |
| 105 // profile. | 82 // profile. |
| 106 bool IsValidProfile(Profile* profile); | 83 bool IsValidProfile(Profile* profile); |
| 107 | 84 |
| 108 // Returns the directory where the first created profile is stored, | 85 // Returns the directory where the first created profile is stored, |
| 109 // relative to the user data directory currently in use.. | 86 // relative to the user data directory currently in use.. |
| 110 FilePath GetInitialProfileDir(); | 87 FilePath GetInitialProfileDir(); |
| 111 | 88 |
| 112 // Get the Profile last used with this Chrome build. If no signed profile has | 89 // Get the Profile last used with this Chrome build. If no signed profile has |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 228 struct ProfileInfo { | 205 struct ProfileInfo { |
| 229 ProfileInfo(Profile* profile, bool created) | 206 ProfileInfo(Profile* profile, bool created) |
| 230 : profile(profile), created(created) { | 207 : profile(profile), created(created) { |
| 231 } | 208 } |
| 232 | 209 |
| 233 ~ProfileInfo() {} | 210 ~ProfileInfo() {} |
| 234 | 211 |
| 235 scoped_ptr<Profile> profile; | 212 scoped_ptr<Profile> profile; |
| 236 // Whether profile has been fully loaded (created and initialized). | 213 // Whether profile has been fully loaded (created and initialized). |
| 237 bool created; | 214 bool created; |
| 238 // List of observers which should be notified when profile initialization is | 215 // List of callbacks which should be notified when profile initialization is |
| 239 // done. Note, when profile is fully loaded this vector will be empty. | 216 // done. Note, when profile is fully loaded this vector will be empty. |
| 240 std::vector<ProfileManagerObserver*> observers; | 217 std::vector<CreateCallback> callbacks; |
| 241 | 218 |
| 242 private: | 219 private: |
| 243 DISALLOW_COPY_AND_ASSIGN(ProfileInfo); | 220 DISALLOW_COPY_AND_ASSIGN(ProfileInfo); |
| 244 }; | 221 }; |
| 245 | 222 |
| 246 // Adds a pre-existing Profile object to the set managed by this | 223 // Adds a pre-existing Profile object to the set managed by this |
| 247 // ProfileManager. This ProfileManager takes ownership of the Profile. | 224 // ProfileManager. This ProfileManager takes ownership of the Profile. |
| 248 // The Profile should not already be managed by this ProfileManager. | 225 // The Profile should not already be managed by this ProfileManager. |
| 249 // Returns true if the profile was added, false otherwise. | 226 // Returns true if the profile was added, false otherwise. |
| 250 bool AddProfile(Profile* profile); | 227 bool AddProfile(Profile* profile); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 312 class ProfileManagerWithoutInit : public ProfileManager { | 289 class ProfileManagerWithoutInit : public ProfileManager { |
| 313 public: | 290 public: |
| 314 explicit ProfileManagerWithoutInit(const FilePath& user_data_dir); | 291 explicit ProfileManagerWithoutInit(const FilePath& user_data_dir); |
| 315 | 292 |
| 316 protected: | 293 protected: |
| 317 virtual void DoFinalInitForServices(Profile*, bool) OVERRIDE {} | 294 virtual void DoFinalInitForServices(Profile*, bool) OVERRIDE {} |
| 318 virtual void DoFinalInitLogging(Profile*) OVERRIDE {} | 295 virtual void DoFinalInitLogging(Profile*) OVERRIDE {} |
| 319 }; | 296 }; |
| 320 | 297 |
| 321 #endif // CHROME_BROWSER_PROFILES_PROFILE_MANAGER_H_ | 298 #endif // CHROME_BROWSER_PROFILES_PROFILE_MANAGER_H_ |
| OLD | NEW |