Index: chrome/browser/chromeos/lock_screen_apps/state_controller.h |
diff --git a/chrome/browser/chromeos/lock_screen_apps/state_controller.h b/chrome/browser/chromeos/lock_screen_apps/state_controller.h |
index b180adc312e4575fe6f26e6d7145462363de76be..f347e83dcc29d478f337b2271959a7a91e467afb 100644 |
--- a/chrome/browser/chromeos/lock_screen_apps/state_controller.h |
+++ b/chrome/browser/chromeos/lock_screen_apps/state_controller.h |
@@ -8,17 +8,17 @@ |
#include <memory> |
#include "ash/public/interfaces/tray_action.mojom.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/observer_list.h" |
#include "base/scoped_observer.h" |
#include "chrome/browser/chromeos/lock_screen_apps/app_manager.h" |
#include "chrome/browser/chromeos/lock_screen_apps/state_observer.h" |
+#include "chrome/browser/profiles/profile.h" |
#include "components/session_manager/core/session_manager_observer.h" |
#include "extensions/browser/app_window/app_window_registry.h" |
#include "extensions/common/api/app_runtime.h" |
#include "mojo/public/cpp/bindings/binding.h" |
-class Profile; |
- |
namespace content { |
class BrowserContext; |
} |
@@ -27,7 +27,7 @@ namespace extensions { |
class AppDelegate; |
class AppWindow; |
class Extension; |
-} |
+} // namespace extensions |
namespace session_manager { |
class SessionManager; |
@@ -63,6 +63,9 @@ class StateController : public ash::mojom::TrayActionClient, |
// Has to be called before |Initialize|. |
void SetTrayActionPtrForTesting(ash::mojom::TrayActionPtr tray_action_ptr); |
void FlushTrayActionForTesting(); |
+ // Sets the callback that will be run when the state controller is fully |
+ // initialized and ready for action. |
+ void SetReadyCallbackForTesting(const base::Closure& ready_callback); |
// Sets test AppManager implementation. Should be called before |
// |SetPrimaryProfile| |
void SetAppManagerForTesting(std::unique_ptr<AppManager> app_manager); |
@@ -108,6 +111,14 @@ class StateController : public ash::mojom::TrayActionClient, |
void MoveToForeground(); |
private: |
+ // Called when profiles needed to run lock screen apps are ready - i.e. when |
+ // primary user profile was set using |SetPrimaryProfile| and the profile in |
+ // which app lock screen windows will be run creation is done. |
+ // |status| - The lock screen profile creation status. |
+ void OnProfilesReady(Profile* primary_profile, |
+ Profile* lock_screen_profile, |
+ Profile::CreateStatus status); |
+ |
// Called when app manager reports that note taking availability has changed. |
void OnNoteTakingAvailabilityChanged(); |
@@ -133,6 +144,8 @@ class StateController : public ash::mojom::TrayActionClient, |
mojo::Binding<ash::mojom::TrayActionClient> binding_; |
ash::mojom::TrayActionPtr tray_action_ptr_; |
+ Profile* lock_screen_profile_ = nullptr; |
+ |
std::unique_ptr<AppManager> app_manager_; |
extensions::AppWindow* note_app_window_ = nullptr; |
@@ -144,6 +157,14 @@ class StateController : public ash::mojom::TrayActionClient, |
session_manager::SessionManagerObserver> |
session_observer_; |
+ // If set, this callback will be run when the state controller is fully |
+ // initialized. It can be used to throttle tests until state controller |
+ // is ready for action - i.e. until the state controller starts reacting |
+ // to session / app manager changes. |
+ base::Closure ready_callback_; |
+ |
+ base::WeakPtrFactory<StateController> weak_ptr_factory_; |
+ |
DISALLOW_COPY_AND_ASSIGN(StateController); |
}; |