Index: chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
index 4df0338cb5fc0f7092d489db7db1dc79bd333354..3ce6e73f8e455f5f335a9b2b968769c312909967 100644 |
--- a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
+++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc |
@@ -411,6 +411,9 @@ LoginDisplayHostImpl::~LoginDisplayHostImpl() { |
RemoveVirtualKeyboardStateObserver(this); |
ash::Shell::GetScreen()->RemoveObserver(this); |
+ if (login_view_) |
ygorshenin1
2014/07/07 10:30:14
nit: it would be better to check that login_window
Roman Sorokin (ftl)
2014/07/08 17:20:03
Done.
|
+ login_window_->RemoveRemovalsObserver(this); |
+ |
if (login::LoginScrollIntoViewEnabled()) |
ResetKeyboardOverscrollOverride(); |
@@ -905,6 +908,16 @@ void LoginDisplayHostImpl::OnDisplayMetricsChanged(const gfx::Display& display, |
} |
//////////////////////////////////////////////////////////////////////////////// |
+// LoginDisplayHostImpl, views::WidgetRemovalsObserver implementation: |
+void LoginDisplayHostImpl::OnWillRemoveView(views::Widget* widget, |
+ views::View* view) { |
+ if (view != static_cast<views::View*>(login_view_)) |
+ return; |
+ login_view_ = NULL; |
+ widget->RemoveRemovalsObserver(this); |
+} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
// LoginDisplayHostImpl, private |
void LoginDisplayHostImpl::ShutdownDisplayHost(bool post_quit_task) { |
@@ -1062,6 +1075,7 @@ void LoginDisplayHostImpl::InitLoginWindowAndView() { |
login_window_->GetNativeView(), |
wm::ANIMATE_HIDE); |
+ login_window_->AddRemovalsObserver(this); |
login_window_->SetContentsView(login_view_); |
// If WebUI is initialized in hidden state, show it only if we're no |