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_; |