Index: chrome/browser/ui/webui/chromeos/login/oobe_ui.h |
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h |
index 6c92fdab253fcddfa898d9b945039aa45754d0c1..764b8871311bddb582fba2c904cde6e990f0c570 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h |
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h |
@@ -11,6 +11,7 @@ |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
+#include "base/observer_list.h" |
#include "chrome/browser/chromeos/login/oobe_display.h" |
#include "chrome/browser/ui/webui/chromeos/login/core_oobe_handler.h" |
#include "content/public/browser/web_ui_controller.h" |
@@ -41,6 +42,13 @@ class OobeUI : public OobeDisplay, |
public content::WebUIController, |
public CoreOobeHandler::Delegate { |
public: |
+ class Observer { |
+ public: |
+ virtual ~Observer() {} |
+ virtual void OnCurrentScreenChanged( |
+ Screen current_screen, Screen new_screen) = 0; |
+ }; |
+ |
// JS oobe/login screens names. |
static const char kScreenOobeNetwork[]; |
static const char kScreenOobeEula[]; |
@@ -108,6 +116,10 @@ class OobeUI : public OobeDisplay, |
// Resets the delegate set in ShowSigninScreen. |
void ResetSigninScreenHandlerDelegate(); |
+ // Add and remove observers for screen change events. |
+ void AddObserver(Observer* observer); |
+ void RemoveObserver(Observer* observer); |
+ |
Screen current_screen() const { return current_screen_; } |
const std::string& GetScreenName(Screen screen) const; |
@@ -179,6 +191,9 @@ class OobeUI : public OobeDisplay, |
// Callbacks to notify when JS part is fully loaded and ready to accept calls. |
std::vector<base::Closure> ready_callbacks_; |
+ // List of registered observers. |
+ ObserverList<Observer> observer_list_; |
+ |
DISALLOW_COPY_AND_ASSIGN(OobeUI); |
}; |