| Index: chrome/browser/chromeos/login/captive_portal_window_proxy.cc
|
| diff --git a/chrome/browser/chromeos/login/captive_portal_window_proxy.cc b/chrome/browser/chromeos/login/captive_portal_window_proxy.cc
|
| index 5e547a2d5fa7669a6e6e4ac2ad508d28490c11e8..c09f288c3aaea86dadf7d8279647d978ab80b376 100644
|
| --- a/chrome/browser/chromeos/login/captive_portal_window_proxy.cc
|
| +++ b/chrome/browser/chromeos/login/captive_portal_window_proxy.cc
|
| @@ -90,12 +90,19 @@ void CaptivePortalWindowProxy::OnWidgetClosing(views::Widget* widget) {
|
| DCHECK(GetState() == STATE_DISPLAYED);
|
| DCHECK(widget == widget_);
|
|
|
| - widget->RemoveObserver(this);
|
| - widget_ = NULL;
|
| + DetachFromWidget(widget);
|
|
|
| DCHECK(GetState() == STATE_IDLE);
|
| }
|
|
|
| +void CaptivePortalWindowProxy::OnWidgetDestroying(views::Widget* widget) {
|
| + DetachFromWidget(widget);
|
| +}
|
| +
|
| +void CaptivePortalWindowProxy::OnWidgetDestroyed(views::Widget* widget) {
|
| + DetachFromWidget(widget);
|
| +}
|
| +
|
| void CaptivePortalWindowProxy::InitCaptivePortalView() {
|
| DCHECK(GetState() == STATE_IDLE ||
|
| GetState() == STATE_WAITING_FOR_REDIRECTION);
|
| @@ -121,4 +128,11 @@ CaptivePortalWindowProxy::State CaptivePortalWindowProxy::GetState() const {
|
| return STATE_UNKNOWN;
|
| }
|
|
|
| +void CaptivePortalWindowProxy::DetachFromWidget(views::Widget* widget) {
|
| + if (!widget_ || widget_ != widget)
|
| + return;
|
| + widget_->RemoveObserver(this);
|
| + widget_ = NULL;
|
| +}
|
| +
|
| } // namespace chromeos
|
|
|