Chromium Code Reviews| Index: chrome/browser/ui/views/notifications/balloon_view_views.cc |
| diff --git a/chrome/browser/ui/views/notifications/balloon_view_views.cc b/chrome/browser/ui/views/notifications/balloon_view_views.cc |
| index 94716980799b62d26ce1ebfb5661158d4ef435e3..068343b8734e6a4a737356568a6d9e856d572687 100644 |
| --- a/chrome/browser/ui/views/notifications/balloon_view_views.cc |
| +++ b/chrome/browser/ui/views/notifications/balloon_view_views.cc |
| @@ -93,14 +93,13 @@ BalloonViewImpl::BalloonViewImpl(BalloonCollection* collection) |
| frame_container_(NULL), |
| html_container_(NULL), |
| html_contents_(NULL), |
| - method_factory_(this), |
| close_button_(NULL), |
| animation_(NULL), |
| options_menu_model_(NULL), |
| options_menu_button_(NULL), |
| - enable_web_ui_(false) { |
| - // This object is not to be deleted by the views hierarchy, |
| - // as it is owned by the balloon. |
| + enable_web_ui_(false), |
| + closed_by_user_(false) { |
| + // We're owned by Balloon and don't want to be deleted by our parent View. |
| set_owned_by_client(); |
| views::BubbleBorder* bubble_border = |
| @@ -122,12 +121,9 @@ void BalloonViewImpl::Close(bool by_user) { |
| html_container_->Close(); |
| frame_container_->GetRootView()->RemoveAllChildViews(true); |
| frame_container_->Close(); |
| - // Post the tast at the end to sure this this WidgetDelegate |
| - // instance is avaiable when Widget::CloseNow gets called. |
| - MessageLoop::current()->PostTask(FROM_HERE, |
| - base::Bind(&BalloonViewImpl::DelayedClose, |
| - method_factory_.GetWeakPtr(), |
| - by_user)); |
| + closed_by_user_ = by_user; |
| + // |frame_container_->::Close()| is async. When processed it'll call back to |
| + // DeleteDelegate() and we'll cleanup. |
|
stevenjb
2012/10/16 16:43:41
nit: it will, we will
sky
2012/10/16 16:45:06
What's wrong with contractions?
stevenjb
2012/10/16 16:59:53
Strunk & White says don't use them :) But they can
|
| } |
| gfx::Size BalloonViewImpl::GetSize() const { |
| @@ -169,6 +165,10 @@ void BalloonViewImpl::OnWorkAreaChanged() { |
| collection_->DisplayChanged(); |
| } |
| +void BalloonViewImpl::DeleteDelegate() { |
| + balloon_->OnClose(closed_by_user_); |
| +} |
| + |
| void BalloonViewImpl::ButtonPressed(views::Button* sender, |
| const ui::Event&) { |
| // The only button currently is the close button. |
| @@ -176,10 +176,6 @@ void BalloonViewImpl::ButtonPressed(views::Button* sender, |
| Close(true); |
| } |
| -void BalloonViewImpl::DelayedClose(bool by_user) { |
| - balloon_->OnClose(by_user); |
| -} |
| - |
| gfx::Size BalloonViewImpl::GetPreferredSize() { |
| return gfx::Size(1000, 1000); |
| } |