| Index: chrome/browser/chromeos/login/screen_manager.h
|
| diff --git a/chrome/browser/chromeos/login/screen_manager.h b/chrome/browser/chromeos/login/screen_manager.h
|
| index e0b1383e26da8f95c1defdb389b2814558d8b287..396c9f48a10100c97e1122f0fecdc596854edbf0 100644
|
| --- a/chrome/browser/chromeos/login/screen_manager.h
|
| +++ b/chrome/browser/chromeos/login/screen_manager.h
|
| @@ -12,23 +12,31 @@
|
| #include "base/gtest_prod_util.h"
|
| #include "base/macros.h"
|
| #include "chrome/browser/chromeos/login/screens/base_screen.h"
|
| +#include "chrome/browser/chromeos/login/screens/core_oobe_view.h"
|
|
|
| namespace chromeos {
|
|
|
| class WizardController;
|
|
|
| -// Class that manages creation and ownership of screens.
|
| -class ScreenManager {
|
| +// Manages the overall creation and ownership of screens. This is the
|
| +// CoreOobeView::Delegate instance which gets passed to the WebUI specific login
|
| +// code. When a callback method is invoked, this class just dispatches it to
|
| +// all registered delegates.
|
| +class ScreenManager : public CoreOobeView::Delegate {
|
| public:
|
| // |wizard_controller| is not owned by this class.
|
| explicit ScreenManager(WizardController* wizard_controller);
|
| - ~ScreenManager();
|
| + ~ScreenManager() override;
|
|
|
| // Getter for screen with lazy initialization.
|
| BaseScreen* GetScreen(OobeScreen screen);
|
|
|
| bool HasScreen(OobeScreen screen);
|
|
|
| + // Register a new delegate that will receive callbacks from UI-specific login
|
| + // code.
|
| + void AddDelegate(CoreOobeView::Delegate* delegate);
|
| +
|
| private:
|
| FRIEND_TEST_ALL_PREFIXES(EnrollmentScreenTest, TestCancel);
|
| FRIEND_TEST_ALL_PREFIXES(WizardControllerFlowTest, Accelerators);
|
| @@ -37,9 +45,17 @@ class ScreenManager {
|
| friend class WizardInProcessBrowserTest;
|
| friend class WizardControllerBrokenLocalStateTest;
|
|
|
| + // CoreOobeView::Delegate:
|
| + void OnEnableDebuggingScreenViewExit(bool success) override;
|
| + void OnViewDestroyed(CoreOobeView* view) override;
|
| +
|
| // Created screens.
|
| std::map<OobeScreen, std::unique_ptr<BaseScreen>> screens_;
|
|
|
| + // Unowned pointer to BaseScreen instances which implement
|
| + // CoreOobeView::Delegate. The instances are owned by |screens_|.
|
| + std::vector<CoreOobeView::Delegate*> delegates_;
|
| +
|
| // Used to allocate BaseScreen instances. Unowned.
|
| WizardController* wizard_controller_;
|
|
|
|
|