Index: chrome/browser/ui/webui/chromeos/login/oobe_ui.cc |
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc |
index 57a46e7f92e66bee12be6bca6afc2c1d26035efb..30018894fa32ac4734a02b6b640066de3fce90a8 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc |
@@ -10,6 +10,7 @@ |
#include "base/memory/ref_counted_memory.h" |
#include "base/values.h" |
#include "chrome/browser/browser_about_handler.h" |
+#include "chrome/browser/chrome_notification_types.h" |
#include "chrome/browser/chromeos/kiosk_mode/kiosk_mode_settings.h" |
#include "chrome/browser/chromeos/login/enrollment/enrollment_screen_actor.h" |
#include "chrome/browser/chromeos/login/login_display_host_impl.h" |
@@ -459,6 +460,15 @@ void OobeUI::ResetSigninScreenHandlerDelegate() { |
signin_screen_handler_->SetNativeWindowDelegate(NULL); |
} |
+ |
+void OobeUI::AddObserver(Observer* observer) { |
+ observer_list_.AddObserver(observer); |
+} |
+ |
+void OobeUI::RemoveObserver(Observer* observer) { |
+ observer_list_.RemoveObserver(observer); |
+} |
+ |
const std::string& OobeUI::GetScreenName(Screen screen) const { |
DCHECK(screen >= 0 && screen < SCREEN_UNKNOWN); |
return screen_names_[static_cast<size_t>(screen)]; |
@@ -466,7 +476,11 @@ const std::string& OobeUI::GetScreenName(Screen screen) const { |
void OobeUI::OnCurrentScreenChanged(const std::string& screen) { |
if (screen_ids_.count(screen)) { |
- current_screen_ = screen_ids_[screen]; |
+ Screen new_screen = screen_ids_[screen]; |
+ FOR_EACH_OBSERVER(Observer, |
+ observer_list_, |
+ OnCurrentScreenChanged(current_screen_, new_screen)); |
+ current_screen_ = new_screen; |
} else { |
NOTREACHED() << "Screen should be registered in InitializeScreenMaps()"; |
current_screen_ = SCREEN_UNKNOWN; |