| OLD | NEW |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
| 6 #include "base/location.h" | 6 #include "base/location.h" |
| 7 #include "base/single_thread_task_runner.h" | 7 #include "base/single_thread_task_runner.h" |
| 8 #include "base/threading/thread_task_runner_handle.h" | 8 #include "base/threading/thread_task_runner_handle.h" |
| 9 #include "ui/gfx/animation/slide_animation.h" | 9 #include "ui/gfx/animation/slide_animation.h" |
| 10 #include "ui/message_center/message_center_style.h" | 10 #include "ui/message_center/message_center_style.h" |
| 11 #include "ui/message_center/message_center_switches.h" | 11 #include "ui/message_center/message_center_switches.h" |
| 12 #include "ui/message_center/views/message_center_view.h" | 12 #include "ui/message_center/views/message_center_view.h" |
| 13 #include "ui/message_center/views/message_list_view.h" | 13 #include "ui/message_center/views/message_list_view.h" |
| 14 #include "ui/message_center/views/message_view.h" | 14 #include "ui/message_center/views/message_view.h" |
| 15 #include "ui/views/background.h" | 15 #include "ui/views/background.h" |
| 16 #include "ui/views/border.h" | 16 #include "ui/views/border.h" |
| 17 #include "ui/views/layout/box_layout.h" | 17 #include "ui/views/layout/box_layout.h" |
| 18 #include "ui/views/widget/widget.h" | 18 #include "ui/views/widget/widget.h" |
| 19 | 19 |
| 20 namespace message_center { | 20 namespace message_center { |
| 21 | 21 |
| 22 namespace { | 22 namespace { |
| 23 const int kAnimateClearingNextNotificationDelayMS = 40; | 23 const int kAnimateClearingNextNotificationDelayMS = 40; |
| 24 } // namespace | 24 } // namespace |
| 25 | 25 |
| 26 MessageListView::MessageListView(bool top_down) | 26 MessageListView::MessageListView() |
| 27 : reposition_top_(-1), | 27 : reposition_top_(-1), |
| 28 fixed_height_(0), | 28 fixed_height_(0), |
| 29 has_deferred_task_(false), | 29 has_deferred_task_(false), |
| 30 clear_all_started_(false), | 30 clear_all_started_(false), |
| 31 top_down_(top_down), | |
| 32 animator_(this), | 31 animator_(this), |
| 33 quit_message_loop_after_animation_for_test_(false), | 32 quit_message_loop_after_animation_for_test_(false), |
| 34 weak_ptr_factory_(this) { | 33 weak_ptr_factory_(this) { |
| 35 views::BoxLayout* layout = | 34 views::BoxLayout* layout = |
| 36 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1); | 35 new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 1); |
| 37 layout->SetDefaultFlex(1); | 36 layout->SetDefaultFlex(1); |
| 38 SetLayoutManager(layout); | 37 SetLayoutManager(layout); |
| 39 | 38 |
| 40 // Set the margin to 0 for the layout. BoxLayout assumes the same margin | 39 // Set the margin to 0 for the layout. BoxLayout assumes the same margin |
| 41 // for top and bottom, but the bottom margin here should be smaller | 40 // for top and bottom, but the bottom margin here should be smaller |
| 42 // because of the shadow of message view. Use an empty border instead | 41 // because of the shadow of message view. Use an empty border instead |
| 43 // to provide this margin. | 42 // to provide this margin. |
| 44 gfx::Insets shadow_insets = MessageView::GetShadowInsets(); | 43 gfx::Insets shadow_insets = MessageView::GetShadowInsets(); |
| 45 set_background( | 44 set_background( |
| 46 views::Background::CreateSolidBackground(kMessageCenterBackgroundColor)); | 45 views::Background::CreateSolidBackground(kMessageCenterBackgroundColor)); |
| 47 SetBorder(views::CreateEmptyBorder( | 46 SetBorder(views::CreateEmptyBorder( |
| 48 top_down ? 0 : kMarginBetweenItems - shadow_insets.top(), /* top */ | 47 kMarginBetweenItems - shadow_insets.top(), /* top */ |
| 49 kMarginBetweenItems - shadow_insets.left(), /* left */ | 48 kMarginBetweenItems - shadow_insets.left(), /* left */ |
| 50 top_down ? kMarginBetweenItems - shadow_insets.bottom() : 0, /* bottom */ | 49 0, /* bottom */ |
| 51 kMarginBetweenItems - shadow_insets.right() /* right */)); | 50 kMarginBetweenItems - shadow_insets.right() /* right */)); |
| 52 animator_.AddObserver(this); | 51 animator_.AddObserver(this); |
| 53 } | 52 } |
| 54 | 53 |
| 55 MessageListView::~MessageListView() { | 54 MessageListView::~MessageListView() { |
| 56 animator_.RemoveObserver(this); | 55 animator_.RemoveObserver(this); |
| 57 } | 56 } |
| 58 | 57 |
| 59 void MessageListView::Layout() { | 58 void MessageListView::Layout() { |
| 60 if (animator_.IsAnimating()) | 59 if (animator_.IsAnimating()) |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 } | 279 } |
| 281 | 280 |
| 282 if (!clearing_all_views_.empty()) { | 281 if (!clearing_all_views_.empty()) { |
| 283 AnimateClearingOneNotification(); | 282 AnimateClearingOneNotification(); |
| 284 return; | 283 return; |
| 285 } | 284 } |
| 286 | 285 |
| 287 int new_height = GetHeightForWidth(child_area.width() + GetInsets().width()); | 286 int new_height = GetHeightForWidth(child_area.width() + GetInsets().width()); |
| 288 SetSize(gfx::Size(child_area.width() + GetInsets().width(), new_height)); | 287 SetSize(gfx::Size(child_area.width() + GetInsets().width(), new_height)); |
| 289 | 288 |
| 290 if (top_down_ || | 289 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 291 base::CommandLine::ForCurrentProcess()->HasSwitch( | |
| 292 switches::kEnableMessageCenterAlwaysScrollUpUponNotificationRemoval)) | 290 switches::kEnableMessageCenterAlwaysScrollUpUponNotificationRemoval)) |
| 293 AnimateNotificationsBelowTarget(); | 291 AnimateNotificationsBelowTarget(); |
| 294 else | 292 else |
| 295 AnimateNotificationsAboveTarget(); | 293 AnimateNotificationsAboveTarget(); |
| 296 | 294 |
| 297 adding_views_.clear(); | 295 adding_views_.clear(); |
| 298 deleting_views_.clear(); | 296 deleting_views_.clear(); |
| 299 | 297 |
| 300 if (!animator_.IsAnimating() && GetWidget()) | 298 if (!animator_.IsAnimating() && GetWidget()) |
| 301 GetWidget()->SynthesizeMouseMoveEvent(); | 299 GetWidget()->SynthesizeMouseMoveEvent(); |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 base::TimeDelta::FromMilliseconds( | 477 base::TimeDelta::FromMilliseconds( |
| 480 kAnimateClearingNextNotificationDelayMS)); | 478 kAnimateClearingNextNotificationDelayMS)); |
| 481 } | 479 } |
| 482 } | 480 } |
| 483 | 481 |
| 484 void MessageListView::SetRepositionTargetForTest(const gfx::Rect& target_rect) { | 482 void MessageListView::SetRepositionTargetForTest(const gfx::Rect& target_rect) { |
| 485 SetRepositionTarget(target_rect); | 483 SetRepositionTarget(target_rect); |
| 486 } | 484 } |
| 487 | 485 |
| 488 } // namespace message_center | 486 } // namespace message_center |
| OLD | NEW |