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 // 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 | 9 |
10 #include <stddef.h> | 10 #include <stddef.h> |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
79 // This function is temporary and will soon be moved to ash. As such avoid | 79 // This function is temporary and will soon be moved to ash. As such avoid |
80 // using it at all cost. | 80 // using it at all cost. |
81 // TODO(skuhne): Move into ash's new user management function. | 81 // TODO(skuhne): Move into ash's new user management function. |
82 static Profile* GetActiveUserProfile(); | 82 static Profile* GetActiveUserProfile(); |
83 | 83 |
84 // Returns a profile for a specific profile directory within the user data | 84 // Returns a profile for a specific profile directory within the user data |
85 // dir. This will return an existing profile it had already been created, | 85 // dir. This will return an existing profile it had already been created, |
86 // otherwise it will create and manage it. | 86 // otherwise it will create and manage it. |
87 // Because this method might synchronously create a new profile, it should | 87 // Because this method might synchronously create a new profile, it should |
88 // only be called for the initial profile or in tests, where blocking is | 88 // only be called for the initial profile or in tests, where blocking is |
89 // acceptable. | 89 // acceptable. Returns nullptr if creation of the new profile fails. |
90 // Callsites should always check for nullptr return before dereferencing. See | |
91 // crbug.com/383019 and crbug.com/614753 for related crashes. | |
Peter Kasting
2016/05/31 19:12:30
Nit: This last sentence is unnecessary given that
WC Leung
2016/06/01 18:56:55
Done. Anyway, I'll likely be as picky as you if I'
| |
90 // TODO(bauerb): Migrate calls from other code to GetProfileByPath(), then | 92 // TODO(bauerb): Migrate calls from other code to GetProfileByPath(), then |
91 // make this method private. | 93 // make this method private. |
92 Profile* GetProfile(const base::FilePath& profile_dir); | 94 Profile* GetProfile(const base::FilePath& profile_dir); |
93 | 95 |
94 // Returns total number of profiles available on this machine. | 96 // Returns total number of profiles available on this machine. |
95 size_t GetNumberOfProfiles(); | 97 size_t GetNumberOfProfiles(); |
96 | 98 |
97 // Asynchronously loads an existing profile given its |profile_name| within | 99 // Asynchronously loads an existing profile given its |profile_name| within |
98 // the user data directory, optionally in |incognito| mode. The |callback| | 100 // the user data directory, optionally in |incognito| mode. The |callback| |
99 // will be called with the Profile when it has been loaded, or with a nullptr | 101 // will be called with the Profile when it has been loaded, or with a nullptr |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
133 base::FilePath GetLastUsedProfileDir(const base::FilePath& user_data_dir); | 135 base::FilePath GetLastUsedProfileDir(const base::FilePath& user_data_dir); |
134 | 136 |
135 // Get the name of the last used profile, or if that's undefined, the default | 137 // Get the name of the last used profile, or if that's undefined, the default |
136 // profile. | 138 // profile. |
137 std::string GetLastUsedProfileName(); | 139 std::string GetLastUsedProfileName(); |
138 | 140 |
139 // Get the Profiles which are currently open, i.e., have open browsers, or | 141 // Get the Profiles which are currently open, i.e., have open browsers, or |
140 // were open the last time Chrome was running. The Profiles appear in the | 142 // were open the last time Chrome was running. The Profiles appear in the |
141 // order they were opened. The last used profile will be on the list, but its | 143 // order they were opened. The last used profile will be on the list, but its |
142 // index on the list will depend on when it was opened (it is not necessarily | 144 // index on the list will depend on when it was opened (it is not necessarily |
143 // the last one). | 145 // the last one). However profiles that fails to initialize (e.g. due to disk |
146 // errors) are skipped. | |
Peter Kasting
2016/05/31 19:12:30
My comments on this sentence from the last patch s
WC Leung
2016/06/01 18:56:55
Can't find the comment in the last patch. Are you
Peter Kasting
2016/06/01 19:36:17
Don't worry, your newest version of the comment is
| |
144 std::vector<Profile*> GetLastOpenedProfiles( | 147 std::vector<Profile*> GetLastOpenedProfiles( |
145 const base::FilePath& user_data_dir); | 148 const base::FilePath& user_data_dir); |
146 | 149 |
147 // Returns created and fully initialized profiles. Note, profiles order is NOT | 150 // Returns created and fully initialized profiles. Note, profiles order is NOT |
148 // guaranteed to be related with the creation order. | 151 // guaranteed to be related with the creation order. |
149 std::vector<Profile*> GetLoadedProfiles() const; | 152 std::vector<Profile*> GetLoadedProfiles() const; |
150 | 153 |
151 // If a profile with the given path is currently managed by this object and | 154 // If a profile with the given path is currently managed by this object and |
152 // fully initialized, return a pointer to the corresponding Profile object; | 155 // fully initialized, return a pointer to the corresponding Profile object; |
153 // otherwise return null. | 156 // otherwise return null. |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
245 bool is_new_profile) override; | 248 bool is_new_profile) override; |
246 | 249 |
247 protected: | 250 protected: |
248 // Does final initial actions. | 251 // Does final initial actions. |
249 virtual void DoFinalInit(Profile* profile, bool go_off_the_record); | 252 virtual void DoFinalInit(Profile* profile, bool go_off_the_record); |
250 virtual void DoFinalInitForServices(Profile* profile, bool go_off_the_record); | 253 virtual void DoFinalInitForServices(Profile* profile, bool go_off_the_record); |
251 virtual void DoFinalInitLogging(Profile* profile); | 254 virtual void DoFinalInitLogging(Profile* profile); |
252 | 255 |
253 // Creates a new profile by calling into the profile's profile creation | 256 // Creates a new profile by calling into the profile's profile creation |
254 // method. Virtual so that unittests can return a TestingProfile instead | 257 // method. Virtual so that unittests can return a TestingProfile instead |
255 // of the Profile's result. | 258 // of the Profile's result. Returns nullptr if creation fails. |
256 virtual Profile* CreateProfileHelper(const base::FilePath& path); | 259 virtual Profile* CreateProfileHelper(const base::FilePath& path); |
257 | 260 |
258 // Creates a new profile asynchronously by calling into the profile's | 261 // Creates a new profile asynchronously by calling into the profile's |
259 // asynchronous profile creation method. Virtual so that unittests can return | 262 // asynchronous profile creation method. Virtual so that unittests can return |
260 // a TestingProfile instead of the Profile's result. | 263 // a TestingProfile instead of the Profile's result. |
261 virtual Profile* CreateProfileAsyncHelper(const base::FilePath& path, | 264 virtual Profile* CreateProfileAsyncHelper(const base::FilePath& path, |
262 Delegate* delegate); | 265 Delegate* delegate); |
263 | 266 |
264 private: | 267 private: |
265 friend class TestingProfileManager; | 268 friend class TestingProfileManager; |
(...skipping 26 matching lines...) Expand all Loading... | |
292 Profile* GetActiveUserOrOffTheRecordProfileFromPath( | 295 Profile* GetActiveUserOrOffTheRecordProfileFromPath( |
293 const base::FilePath& user_data_dir); | 296 const base::FilePath& user_data_dir); |
294 | 297 |
295 // Adds a pre-existing Profile object to the set managed by this | 298 // Adds a pre-existing Profile object to the set managed by this |
296 // ProfileManager. This ProfileManager takes ownership of the Profile. | 299 // ProfileManager. This ProfileManager takes ownership of the Profile. |
297 // The Profile should not already be managed by this ProfileManager. | 300 // The Profile should not already be managed by this ProfileManager. |
298 // Returns true if the profile was added, false otherwise. | 301 // Returns true if the profile was added, false otherwise. |
299 bool AddProfile(Profile* profile); | 302 bool AddProfile(Profile* profile); |
300 | 303 |
301 // Synchronously creates and returns a profile. This handles both the full | 304 // Synchronously creates and returns a profile. This handles both the full |
302 // creation and adds it to the set managed by this ProfileManager. | 305 // creation and adds it to the set managed by this ProfileManager. Returns |
306 // nullptr when fails. | |
Peter Kasting
2016/05/31 19:12:30
Nit: when -> if creation
| |
303 Profile* CreateAndInitializeProfile(const base::FilePath& profile_dir); | 307 Profile* CreateAndInitializeProfile(const base::FilePath& profile_dir); |
304 | 308 |
305 #if !defined(OS_ANDROID) | 309 #if !defined(OS_ANDROID) |
306 // Schedules the profile at the given path to be deleted on shutdown, | 310 // Schedules the profile at the given path to be deleted on shutdown, |
307 // and marks the new profile as active. | 311 // and marks the new profile as active. |
308 void FinishDeletingProfile(const base::FilePath& profile_dir, | 312 void FinishDeletingProfile(const base::FilePath& profile_dir, |
309 const base::FilePath& new_active_profile_dir); | 313 const base::FilePath& new_active_profile_dir); |
310 #endif | 314 #endif |
311 | 315 |
312 // Registers profile with given info. Returns pointer to created ProfileInfo | 316 // Registers profile with given info. Returns pointer to created ProfileInfo |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
417 class ProfileManagerWithoutInit : public ProfileManager { | 421 class ProfileManagerWithoutInit : public ProfileManager { |
418 public: | 422 public: |
419 explicit ProfileManagerWithoutInit(const base::FilePath& user_data_dir); | 423 explicit ProfileManagerWithoutInit(const base::FilePath& user_data_dir); |
420 | 424 |
421 protected: | 425 protected: |
422 void DoFinalInitForServices(Profile*, bool) override {} | 426 void DoFinalInitForServices(Profile*, bool) override {} |
423 void DoFinalInitLogging(Profile*) override {} | 427 void DoFinalInitLogging(Profile*) override {} |
424 }; | 428 }; |
425 | 429 |
426 #endif // CHROME_BROWSER_PROFILES_PROFILE_MANAGER_H_ | 430 #endif // CHROME_BROWSER_PROFILES_PROFILE_MANAGER_H_ |
OLD | NEW |