| 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..dd1ecb2bf31281b76c0ff7f6e4f6b82f3812e550 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_ && login_window_)
|
| + 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
|
|
|