Index: chrome/browser/chromeos/login/wizard_controller.cc |
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc |
index b06e37f0a7071f936fa8e7a69d85900dfc898785..970ad33d508d565033a27842dae7acc3809f3f4b 100644 |
--- a/chrome/browser/chromeos/login/wizard_controller.cc |
+++ b/chrome/browser/chromeos/login/wizard_controller.cc |
@@ -257,6 +257,9 @@ WizardController::WizardController(LoginDisplayHost* host, OobeUI* oobe_ui) |
weak_factory_(this) { |
DCHECK(default_controller_ == nullptr); |
default_controller_ = this; |
+ |
+ oobe_ui_->GetCoreOobeView()->SetDelegate(&screen_manager_); |
+ |
if (!ash_util::IsRunningInMash()) { |
AccessibilityManager* accessibility_manager = AccessibilityManager::Get(); |
CHECK(accessibility_manager); |
@@ -269,6 +272,10 @@ WizardController::WizardController(LoginDisplayHost* host, OobeUI* oobe_ui) |
} |
WizardController::~WizardController() { |
+ // OobeUI handlers may have already been destroyed. |
+ if (oobe_ui_->GetCoreOobeView()) |
+ oobe_ui_->GetCoreOobeView()->SetDelegate(nullptr); |
+ |
if (shark_connection_listener_.get()) { |
base::ThreadTaskRunnerHandle::Get()->DeleteSoon( |
FROM_HERE, shark_connection_listener_.release()); |
@@ -379,8 +386,11 @@ BaseScreen* WizardController::CreateScreen(OobeScreen screen) { |
} else if (screen == OobeScreen::SCREEN_OOBE_RESET) { |
return new chromeos::ResetScreen(this, oobe_ui_->GetResetView()); |
} else if (screen == OobeScreen::SCREEN_OOBE_ENABLE_DEBUGGING) { |
- return new EnableDebuggingScreen(this, |
- oobe_ui_->GetEnableDebuggingScreenView()); |
+ auto* result = new EnableDebuggingScreen(this, oobe_ui_->GetCoreOobeView()); |
+ // TODO(jdufault): When BaseScreen derives from CoreOobeView we can move the |
+ // AddDelegate call directly into ScreenManager. See crbug.com/672142. |
+ screen_manager_.AddDelegate(result); |
+ return result; |
} else if (screen == OobeScreen::SCREEN_KIOSK_ENABLE) { |
return new KioskEnableScreen(this, oobe_ui_->GetKioskEnableScreenView()); |
} else if (screen == OobeScreen::SCREEN_KIOSK_AUTOLAUNCH) { |