Chromium Code Reviews| Index: ui/message_center/views/message_list_view.cc |
| diff --git a/ui/message_center/views/message_list_view.cc b/ui/message_center/views/message_list_view.cc |
| index 164dd00ec3b049a26e36b7d08626d9fa010cc72d..4b41ae3801fd27817de6c87a6e489446ce3e9a1b 100644 |
| --- a/ui/message_center/views/message_list_view.cc |
| +++ b/ui/message_center/views/message_list_view.cc |
| @@ -302,21 +302,35 @@ void MessageListView::OnBoundsAnimatorProgressed( |
| } |
| void MessageListView::OnBoundsAnimatorDone(views::BoundsAnimator* animator) { |
| - for (auto* view : deleted_when_done_) |
| - delete view; |
| - deleted_when_done_.clear(); |
| + bool need_update = false; |
| if (clear_all_started_) { |
| - clear_all_started_ = false; |
| + // TODO(yoshiki): we shouldn't touch views in OnAllNotificationsCleared(). |
| + // Or rename it to like OnAllNotificationsClearing(). |
| for (auto& observer : observers_) |
| observer.OnAllNotificationsCleared(); |
| + clear_all_started_ = false; |
|
Eliot Courtney
2017/06/01 03:40:03
What effect does moving clear_all_started_ to afte
yoshiki
2017/06/01 05:07:58
This change was used in previous CLs but now it is
|
| + |
| + if (!deleted_when_done_.empty()) |
| + need_update = true; |
| } |
| + // Ensures that the views are not destroyed yet. |
| + DCHECK(std::all_of(deleted_when_done_.begin(), deleted_when_done_.end(), |
| + [this](views::View* view) { return Contains(view); })); |
| + |
| + for (auto* view : deleted_when_done_) |
| + delete view; |
| + deleted_when_done_.clear(); |
| + |
| if (has_deferred_task_) { |
| has_deferred_task_ = false; |
| - DoUpdateIfPossible(); |
| + need_update = true; |
| } |
| + if (need_update) |
| + DoUpdateIfPossible(); |
| + |
| if (GetWidget()) |
| GetWidget()->SynthesizeMouseMoveEvent(); |