Index: chrome/browser/profiles/profile_loader.h |
diff --git a/chrome/browser/ui/app_list/profile_loader.h b/chrome/browser/profiles/profile_loader.h |
similarity index 53% |
rename from chrome/browser/ui/app_list/profile_loader.h |
rename to chrome/browser/profiles/profile_loader.h |
index f2b12fdeda8675cc6270533c1483f99c50db36d9..b9b9038606e4a3049160eb67a9a8014763784d9e 100644 |
--- a/chrome/browser/ui/app_list/profile_loader.h |
+++ b/chrome/browser/profiles/profile_loader.h |
@@ -2,12 +2,13 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#ifndef CHROME_BROWSER_UI_APP_LIST_PROFILE_LOADER_H_ |
-#define CHROME_BROWSER_UI_APP_LIST_PROFILE_LOADER_H_ |
+#ifndef CHROME_BROWSER_PROFILES_PROFILE_LOADER_H_ |
+#define CHROME_BROWSER_PROFILES_PROFILE_LOADER_H_ |
#include "base/callback.h" |
#include "base/memory/weak_ptr.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/profiles/profile_manager.h" |
namespace base { |
class FilePath; |
@@ -15,17 +16,34 @@ class FilePath; |
class ProfileManager; |
+// This class loads profiles asynchronously and calls the provided callback once |
+// the profile is ready. Only the callback for the most recent load request is |
+// called, and only if the load was successful. |
+// |
+// This is useful for loading profiles in response to user interaction where |
+// only the latest requested profile is required. |
class ProfileLoader { |
public: |
explicit ProfileLoader(ProfileManager* profile_manager); |
~ProfileLoader(); |
- bool AnyProfilesLoading() const; |
+ bool IsAnyProfileLoading() const; |
void InvalidatePendingProfileLoads(); |
void LoadProfileInvalidatingOtherLoads( |
const base::FilePath& profile_file_path, |
base::Callback<void(Profile*)> callback); |
+ protected: |
+ // These just call through to the ProfileManager. |
+ // Virtual so they can be mocked out in tests. |
+ virtual Profile* GetProfileByPath(const base::FilePath& path); |
+ virtual void CreateProfileAsync( |
+ const base::FilePath& profile_path, |
+ const ProfileManager::CreateCallback& callback, |
+ const string16& name, |
+ const string16& icon_url, |
+ bool is_managed); |
+ |
private: |
void OnProfileLoaded(int profile_load_sequence_id, |
base::Callback<void(Profile*)> callback, |
@@ -35,7 +53,6 @@ class ProfileLoader { |
void IncrementPendingProfileLoads(); |
void DecrementPendingProfileLoads(); |
- private: |
ProfileManager* profile_manager_; |
int profile_load_sequence_id_; |
int pending_profile_loads_; |
@@ -45,4 +62,4 @@ class ProfileLoader { |
DISALLOW_COPY_AND_ASSIGN(ProfileLoader); |
}; |
-#endif // CHROME_BROWSER_UI_APP_LIST_PROFILE_LOADER_H_ |
+#endif // CHROME_BROWSER_PROFILES_PROFILE_LOADER_H_ |