| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #import "ui/message_center/cocoa/tray_view_controller.h" | 5 #import "ui/message_center/cocoa/tray_view_controller.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_nsobject.h" | 7 #include "base/memory/scoped_nsobject.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #import "ui/base/test/ui_cocoa_test_helper.h" | 9 #import "ui/base/test/ui_cocoa_test_helper.h" |
| 10 #include "ui/message_center/message_center.h" | 10 #include "ui/message_center/message_center.h" |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 | 29 |
| 30 protected: | 30 protected: |
| 31 message_center::MessageCenter* center_; // Weak, global. | 31 message_center::MessageCenter* center_; // Weak, global. |
| 32 | 32 |
| 33 scoped_nsobject<MCTrayViewController> tray_; | 33 scoped_nsobject<MCTrayViewController> tray_; |
| 34 }; | 34 }; |
| 35 | 35 |
| 36 TEST_F(TrayViewControllerTest, AddRemoveOne) { | 36 TEST_F(TrayViewControllerTest, AddRemoveOne) { |
| 37 NSScrollView* view = [[tray_ scrollView] documentView]; | 37 NSScrollView* view = [[tray_ scrollView] documentView]; |
| 38 EXPECT_EQ(0u, [[view subviews] count]); | 38 EXPECT_EQ(0u, [[view subviews] count]); |
| 39 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 39 scoped_ptr<message_center::Notification> notification_data; |
| 40 "1", | 40 notification_data.reset(new message_center::Notification( |
| 41 ASCIIToUTF16("First notification"), | 41 message_center::NOTIFICATION_TYPE_SIMPLE, |
| 42 ASCIIToUTF16("This is a simple test."), | 42 "1", |
| 43 string16(), | 43 ASCIIToUTF16("First notification"), |
| 44 std::string(), | 44 ASCIIToUTF16("This is a simple test."), |
| 45 NULL, | 45 gfx::Image(), |
| 46 NULL); | 46 string16(), |
| 47 std::string(), |
| 48 NULL, |
| 49 NULL)); |
| 50 center_->AddNotification(notification_data.Pass()); |
| 47 [tray_ onMessageCenterTrayChanged]; | 51 [tray_ onMessageCenterTrayChanged]; |
| 48 ASSERT_EQ(1u, [[view subviews] count]); | 52 ASSERT_EQ(1u, [[view subviews] count]); |
| 49 | 53 |
| 50 // The view should have padding around it. | 54 // The view should have padding around it. |
| 51 NSView* notification = [[view subviews] objectAtIndex:0]; | 55 NSView* notification = [[view subviews] objectAtIndex:0]; |
| 52 NSRect notification_frame = [notification frame]; | 56 NSRect notification_frame = [notification frame]; |
| 53 EXPECT_CGFLOAT_EQ(2 * message_center::kMarginBetweenItems, | 57 EXPECT_CGFLOAT_EQ(2 * message_center::kMarginBetweenItems, |
| 54 NSHeight([view frame]) - NSHeight(notification_frame)); | 58 NSHeight([view frame]) - NSHeight(notification_frame)); |
| 55 EXPECT_CGFLOAT_EQ(2 * message_center::kMarginBetweenItems, | 59 EXPECT_CGFLOAT_EQ(2 * message_center::kMarginBetweenItems, |
| 56 NSWidth([view frame]) - NSWidth(notification_frame)); | 60 NSWidth([view frame]) - NSWidth(notification_frame)); |
| 57 EXPECT_GT(NSHeight([[tray_ view] frame]), | 61 EXPECT_GT(NSHeight([[tray_ view] frame]), |
| 58 NSHeight([[tray_ scrollView] frame])); | 62 NSHeight([[tray_ scrollView] frame])); |
| 59 | 63 |
| 60 center_->RemoveNotification("1", true); | 64 center_->RemoveNotification("1", true); |
| 61 [tray_ onMessageCenterTrayChanged]; | 65 [tray_ onMessageCenterTrayChanged]; |
| 62 EXPECT_EQ(0u, [[view subviews] count]); | 66 EXPECT_EQ(0u, [[view subviews] count]); |
| 63 EXPECT_CGFLOAT_EQ(0, NSHeight([view frame])); | 67 EXPECT_CGFLOAT_EQ(0, NSHeight([view frame])); |
| 64 } | 68 } |
| 65 | 69 |
| 66 TEST_F(TrayViewControllerTest, AddThreeClearAll) { | 70 TEST_F(TrayViewControllerTest, AddThreeClearAll) { |
| 67 NSScrollView* view = [[tray_ scrollView] documentView]; | 71 NSScrollView* view = [[tray_ scrollView] documentView]; |
| 68 EXPECT_EQ(0u, [[view subviews] count]); | 72 EXPECT_EQ(0u, [[view subviews] count]); |
| 69 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 73 scoped_ptr<message_center::Notification> notification; |
| 70 "1", | 74 notification.reset(new message_center::Notification( |
| 71 ASCIIToUTF16("First notification"), | 75 message_center::NOTIFICATION_TYPE_SIMPLE, |
| 72 ASCIIToUTF16("This is a simple test."), | 76 "1", |
| 73 string16(), | 77 ASCIIToUTF16("First notification"), |
| 74 std::string(), | 78 ASCIIToUTF16("This is a simple test."), |
| 75 NULL, | 79 gfx::Image(), |
| 76 NULL); | 80 string16(), |
| 77 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 81 std::string(), |
| 78 "2", | 82 NULL, |
| 79 ASCIIToUTF16("Second notification"), | 83 NULL)); |
| 80 ASCIIToUTF16("This is a simple test."), | 84 center_->AddNotification(notification.Pass()); |
| 81 string16(), | 85 notification.reset(new message_center::Notification( |
| 82 std::string(), | 86 message_center::NOTIFICATION_TYPE_SIMPLE, |
| 83 NULL, | 87 "2", |
| 84 NULL); | 88 ASCIIToUTF16("Second notification"), |
| 85 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 89 ASCIIToUTF16("This is a simple test."), |
| 86 "3", | 90 gfx::Image(), |
| 87 ASCIIToUTF16("Third notification"), | 91 string16(), |
| 88 ASCIIToUTF16("This is a simple test."), | 92 std::string(), |
| 89 string16(), | 93 NULL, |
| 90 std::string(), | 94 NULL)); |
| 91 NULL, | 95 center_->AddNotification(notification.Pass()); |
| 92 NULL); | 96 notification.reset(new message_center::Notification( |
| 97 message_center::NOTIFICATION_TYPE_SIMPLE, |
| 98 "3", |
| 99 ASCIIToUTF16("Third notification"), |
| 100 ASCIIToUTF16("This is a simple test."), |
| 101 gfx::Image(), |
| 102 string16(), |
| 103 std::string(), |
| 104 NULL, |
| 105 NULL)); |
| 106 center_->AddNotification(notification.Pass()); |
| 93 [tray_ onMessageCenterTrayChanged]; | 107 [tray_ onMessageCenterTrayChanged]; |
| 94 ASSERT_EQ(3u, [[view subviews] count]); | 108 ASSERT_EQ(3u, [[view subviews] count]); |
| 95 | 109 |
| 96 [tray_ clearAllNotifications:nil]; | 110 [tray_ clearAllNotifications:nil]; |
| 97 [tray_ onMessageCenterTrayChanged]; | 111 [tray_ onMessageCenterTrayChanged]; |
| 98 | 112 |
| 99 EXPECT_EQ(0u, [[view subviews] count]); | 113 EXPECT_EQ(0u, [[view subviews] count]); |
| 100 EXPECT_CGFLOAT_EQ(0, NSHeight([view frame])); | 114 EXPECT_CGFLOAT_EQ(0, NSHeight([view frame])); |
| 101 } | 115 } |
| 102 | 116 |
| 103 TEST_F(TrayViewControllerTest, NoClearAllWhenNoNotifications) { | 117 TEST_F(TrayViewControllerTest, NoClearAllWhenNoNotifications) { |
| 104 EXPECT_TRUE([tray_ pauseButton]); | 118 EXPECT_TRUE([tray_ pauseButton]); |
| 105 EXPECT_TRUE([tray_ clearAllButton]); | 119 EXPECT_TRUE([tray_ clearAllButton]); |
| 106 | 120 |
| 107 // With no notifications, the clear all button should be hidden. | 121 // With no notifications, the clear all button should be hidden. |
| 108 EXPECT_TRUE([[tray_ clearAllButton] isHidden]); | 122 EXPECT_TRUE([[tray_ clearAllButton] isHidden]); |
| 109 EXPECT_LT(NSMinX([[tray_ clearAllButton] frame]), | 123 EXPECT_LT(NSMinX([[tray_ clearAllButton] frame]), |
| 110 NSMinX([[tray_ pauseButton] frame])); | 124 NSMinX([[tray_ pauseButton] frame])); |
| 111 | 125 |
| 112 // Add a notification. | 126 // Add a notification. |
| 113 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 127 scoped_ptr<message_center::Notification> notification; |
| 114 "1", | 128 notification.reset(new message_center::Notification( |
| 115 ASCIIToUTF16("First notification"), | 129 message_center::NOTIFICATION_TYPE_SIMPLE, |
| 116 ASCIIToUTF16("This is a simple test."), | 130 "1", |
| 117 string16(), | 131 ASCIIToUTF16("First notification"), |
| 118 std::string(), | 132 ASCIIToUTF16("This is a simple test."), |
| 119 NULL, | 133 gfx::Image(), |
| 120 NULL); | 134 string16(), |
| 135 std::string(), |
| 136 NULL, |
| 137 NULL)); |
| 138 center_->AddNotification(notification.Pass()); |
| 121 [tray_ onMessageCenterTrayChanged]; | 139 [tray_ onMessageCenterTrayChanged]; |
| 122 | 140 |
| 123 // Clear all should now be visible. | 141 // Clear all should now be visible. |
| 124 EXPECT_FALSE([[tray_ clearAllButton] isHidden]); | 142 EXPECT_FALSE([[tray_ clearAllButton] isHidden]); |
| 125 EXPECT_GT(NSMinX([[tray_ clearAllButton] frame]), | 143 EXPECT_GT(NSMinX([[tray_ clearAllButton] frame]), |
| 126 NSMinX([[tray_ pauseButton] frame])); | 144 NSMinX([[tray_ pauseButton] frame])); |
| 127 | 145 |
| 128 // Adding a second notification should keep things still visible. | 146 // Adding a second notification should keep things still visible. |
| 129 center_->AddNotification(message_center::NOTIFICATION_TYPE_SIMPLE, | 147 notification.reset(new message_center::Notification( |
| 130 "2", | 148 message_center::NOTIFICATION_TYPE_SIMPLE, |
| 131 ASCIIToUTF16("Second notification"), | 149 "2", |
| 132 ASCIIToUTF16("This is a simple test."), | 150 ASCIIToUTF16("Second notification"), |
| 133 string16(), | 151 ASCIIToUTF16("This is a simple test."), |
| 134 std::string(), | 152 gfx::Image(), |
| 135 NULL, | 153 string16(), |
| 136 NULL); | 154 std::string(), |
| 155 NULL, |
| 156 NULL)); |
| 157 center_->AddNotification(notification.Pass()); |
| 137 [tray_ onMessageCenterTrayChanged]; | 158 [tray_ onMessageCenterTrayChanged]; |
| 138 EXPECT_FALSE([[tray_ clearAllButton] isHidden]); | 159 EXPECT_FALSE([[tray_ clearAllButton] isHidden]); |
| 139 EXPECT_GT(NSMinX([[tray_ clearAllButton] frame]), | 160 EXPECT_GT(NSMinX([[tray_ clearAllButton] frame]), |
| 140 NSMinX([[tray_ pauseButton] frame])); | 161 NSMinX([[tray_ pauseButton] frame])); |
| 141 | 162 |
| 142 // Clear all notifications. | 163 // Clear all notifications. |
| 143 [tray_ clearAllNotifications:nil]; | 164 [tray_ clearAllNotifications:nil]; |
| 144 [tray_ onMessageCenterTrayChanged]; | 165 [tray_ onMessageCenterTrayChanged]; |
| 145 | 166 |
| 146 // The button should be hidden again. | 167 // The button should be hidden again. |
| 147 EXPECT_TRUE([[tray_ clearAllButton] isHidden]); | 168 EXPECT_TRUE([[tray_ clearAllButton] isHidden]); |
| 148 EXPECT_LT(NSMinX([[tray_ clearAllButton] frame]), | 169 EXPECT_LT(NSMinX([[tray_ clearAllButton] frame]), |
| 149 NSMinX([[tray_ pauseButton] frame])); | 170 NSMinX([[tray_ pauseButton] frame])); |
| 150 } | 171 } |
| OLD | NEW |