OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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 #include "ui/message_center/views/message_center_view.h" | 5 #include "ui/message_center/views/message_center_view.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <memory> | 8 #include <memory> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
100 const NotificationList::Notifications& GetVisibleNotifications() override { | 100 const NotificationList::Notifications& GetVisibleNotifications() override { |
101 return visible_notifications_; | 101 return visible_notifications_; |
102 } | 102 } |
103 void SetVisibleNotifications(NotificationList::Notifications notifications) { | 103 void SetVisibleNotifications(NotificationList::Notifications notifications) { |
104 visible_notifications_ = notifications; | 104 visible_notifications_ = notifications; |
105 } | 105 } |
106 void RemoveAllNotifications(bool by_user, RemoveType type) override { | 106 void RemoveAllNotifications(bool by_user, RemoveType type) override { |
107 if (type == RemoveType::NON_PINNED) | 107 if (type == RemoveType::NON_PINNED) |
108 remove_all_closable_notification_called_ = true; | 108 remove_all_closable_notification_called_ = true; |
109 } | 109 } |
110 bool IsLockedState() const override { return locked_; } | |
110 bool remove_all_closable_notification_called_ = false; | 111 bool remove_all_closable_notification_called_ = false; |
111 NotificationList::Notifications visible_notifications_; | 112 NotificationList::Notifications visible_notifications_; |
113 bool locked_ = false; | |
112 }; | 114 }; |
113 | 115 |
114 /* Test fixture ***************************************************************/ | 116 /* Test fixture ***************************************************************/ |
115 | 117 |
116 class MessageCenterViewTest : public views::ViewsTestBase, | 118 class MessageCenterViewTest : public views::ViewsTestBase, |
117 public MockNotificationView::Test, | 119 public MockNotificationView::Test, |
118 public MessageCenterController { | 120 public MessageCenterController { |
119 public: | 121 public: |
120 // Expose the private enum class MessageCenter::Mode for this test. | 122 // Expose the private enum class MessageCenter::Mode for this test. |
121 typedef MessageCenterView::Mode Mode; | 123 typedef MessageCenterView::Mode Mode; |
122 | 124 |
123 MessageCenterViewTest(); | 125 MessageCenterViewTest(); |
124 ~MessageCenterViewTest() override; | 126 ~MessageCenterViewTest() override; |
125 | 127 |
126 void SetUp() override; | 128 void SetUp() override; |
127 void TearDown() override; | 129 void TearDown() override; |
128 | 130 |
129 MessageCenterView* GetMessageCenterView(); | 131 MessageCenterView* GetMessageCenterView(); |
130 MessageListView* GetMessageListView(); | 132 MessageListView* GetMessageListView(); |
131 FakeMessageCenterImpl* GetMessageCenter() const; | 133 FakeMessageCenterImpl* GetMessageCenter() const; |
132 MessageView* GetNotificationView(const std::string& id); | 134 MessageView* GetNotificationView(const std::string& id); |
133 views::BoundsAnimator* GetAnimator(); | 135 views::BoundsAnimator* GetAnimator(); |
134 int GetNotificationCount(); | 136 int GetNotificationCount(); |
135 int GetCallCount(CallType type); | 137 int GetCallCount(CallType type); |
136 int GetCalculatedMessageListViewHeight(); | 138 int GetCalculatedMessageListViewHeight(); |
139 void SetLockedState(bool locked); | |
137 Mode GetMessageCenterViewInternalMode(); | 140 Mode GetMessageCenterViewInternalMode(); |
138 void AddNotification(std::unique_ptr<Notification> notification); | 141 void AddNotification(std::unique_ptr<Notification> notification); |
139 void UpdateNotification(const std::string& notification_id, | 142 void UpdateNotification(const std::string& notification_id, |
140 std::unique_ptr<Notification> notification); | 143 std::unique_ptr<Notification> notification); |
141 | 144 |
142 // Overridden from MessageCenterController: | 145 // Overridden from MessageCenterController: |
143 void ClickOnNotification(const std::string& notification_id) override; | 146 void ClickOnNotification(const std::string& notification_id) override; |
144 void RemoveNotification(const std::string& notification_id, | 147 void RemoveNotification(const std::string& notification_id, |
145 bool by_user) override; | 148 bool by_user) override; |
146 std::unique_ptr<ui::MenuModel> CreateMenuModel( | 149 std::unique_ptr<ui::MenuModel> CreateMenuModel( |
(...skipping 12 matching lines...) Expand all Loading... | |
159 void LogBounds(int depth, views::View* view); | 162 void LogBounds(int depth, views::View* view); |
160 | 163 |
161 MessageCenterButtonBar* GetButtonBar() const; | 164 MessageCenterButtonBar* GetButtonBar() const; |
162 | 165 |
163 void RemoveDefaultNotifications(); | 166 void RemoveDefaultNotifications(); |
164 | 167 |
165 private: | 168 private: |
166 views::View* MakeParent(views::View* child1, views::View* child2); | 169 views::View* MakeParent(views::View* child1, views::View* child2); |
167 | 170 |
168 NotificationList::Notifications notifications_; | 171 NotificationList::Notifications notifications_; |
172 std::unique_ptr<views::Widget> widget_; | |
169 std::unique_ptr<MessageCenterView> message_center_view_; | 173 std::unique_ptr<MessageCenterView> message_center_view_; |
170 std::unique_ptr<FakeMessageCenterImpl> message_center_; | 174 std::unique_ptr<FakeMessageCenterImpl> message_center_; |
171 std::map<CallType,int> callCounts_; | 175 std::map<CallType,int> callCounts_; |
172 | 176 |
173 DISALLOW_COPY_AND_ASSIGN(MessageCenterViewTest); | 177 DISALLOW_COPY_AND_ASSIGN(MessageCenterViewTest); |
174 }; | 178 }; |
175 | 179 |
176 MessageCenterViewTest::MessageCenterViewTest() { | 180 MessageCenterViewTest::MessageCenterViewTest() { |
177 } | 181 } |
178 | 182 |
179 MessageCenterViewTest::~MessageCenterViewTest() { | 183 MessageCenterViewTest::~MessageCenterViewTest() { |
180 } | 184 } |
181 | 185 |
182 void MessageCenterViewTest::SetUp() { | 186 void MessageCenterViewTest::SetUp() { |
183 views::ViewsTestBase::SetUp(); | 187 views::ViewsTestBase::SetUp(); |
188 MessageCenterView::disable_animation_for_testing = true; | |
184 message_center_.reset(new FakeMessageCenterImpl()); | 189 message_center_.reset(new FakeMessageCenterImpl()); |
185 | 190 |
186 // Create a dummy notification. | 191 // Create a dummy notification. |
187 Notification* notification1 = new Notification( | 192 Notification* notification1 = new Notification( |
188 NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1), | 193 NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1), |
189 base::UTF8ToUTF16("title"), base::UTF8ToUTF16("message1"), gfx::Image(), | 194 base::UTF8ToUTF16("title"), base::UTF8ToUTF16("message1"), gfx::Image(), |
190 base::UTF8ToUTF16("display source"), GURL(), | 195 base::UTF8ToUTF16("display source"), GURL(), |
191 NotifierId(NotifierId::APPLICATION, "extension_id"), | 196 NotifierId(NotifierId::APPLICATION, "extension_id"), |
192 message_center::RichNotificationData(), NULL); | 197 message_center::RichNotificationData(), NULL); |
193 | 198 |
194 Notification* notification2 = new Notification( | 199 Notification* notification2 = new Notification( |
195 NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId2), | 200 NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId2), |
196 base::UTF8ToUTF16("title2"), base::UTF8ToUTF16("message2"), gfx::Image(), | 201 base::UTF8ToUTF16("title2"), base::UTF8ToUTF16("message2"), gfx::Image(), |
197 base::UTF8ToUTF16("display source"), GURL(), | 202 base::UTF8ToUTF16("display source"), GURL(), |
198 NotifierId(NotifierId::APPLICATION, "extension_id"), | 203 NotifierId(NotifierId::APPLICATION, "extension_id"), |
199 message_center::RichNotificationData(), NULL); | 204 message_center::RichNotificationData(), NULL); |
200 | 205 |
201 // ...and a list for it. | 206 // ...and a list for it. |
202 notifications_.insert(notification1); | 207 notifications_.insert(notification1); |
203 notifications_.insert(notification2); | 208 notifications_.insert(notification2); |
204 message_center_->SetVisibleNotifications(notifications_); | 209 message_center_->SetVisibleNotifications(notifications_); |
205 | 210 |
206 // Then create a new MessageCenterView with that single notification. | 211 // Then create a new MessageCenterView with that single notification. |
207 message_center_view_.reset(new MessageCenterView( | 212 message_center_view_.reset(new MessageCenterView( |
208 message_center_.get(), NULL, 100, false, /*top_down =*/false)); | 213 message_center_.get(), NULL, 100, false, /*top_down =*/false)); |
209 GetMessageListView()->quit_message_loop_after_animation_for_test_ = true; | 214 GetMessageListView()->quit_message_loop_after_animation_for_test_ = true; |
210 GetMessageCenterView()->SetBounds(0, 0, 380, 600); | 215 GetMessageCenterView()->SetBounds(0, 0, 380, 600); |
211 message_center_view_->SetNotifications(notifications_); | 216 message_center_view_->SetNotifications(notifications_); |
217 message_center_view_->set_owned_by_client(); | |
218 | |
219 widget_.reset(new views::Widget()); | |
yoshiki
2016/05/16 19:04:46
Widget is necessary to use View::IsDrawn().
| |
220 views::Widget::InitParams params = | |
221 CreateParams(views::Widget::InitParams::TYPE_POPUP); | |
222 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | |
223 params.bounds = gfx::Rect(50, 50, 650, 650); | |
224 widget_->Init(params); | |
225 views::View* root = widget_->GetRootView(); | |
226 root->AddChildView(message_center_view_.get()); | |
227 widget_->Show(); | |
228 widget_->Activate(); | |
212 | 229 |
213 // Wait until the animation finishes if available. | 230 // Wait until the animation finishes if available. |
214 if (GetAnimator()->IsAnimating()) | 231 if (GetAnimator()->IsAnimating()) |
215 base::MessageLoop::current()->Run(); | 232 base::MessageLoop::current()->Run(); |
216 } | 233 } |
217 | 234 |
218 void MessageCenterViewTest::TearDown() { | 235 void MessageCenterViewTest::TearDown() { |
236 widget_->CloseNow(); | |
237 widget_.reset(); | |
219 message_center_view_.reset(); | 238 message_center_view_.reset(); |
220 STLDeleteElements(¬ifications_); | 239 STLDeleteElements(¬ifications_); |
221 views::ViewsTestBase::TearDown(); | 240 views::ViewsTestBase::TearDown(); |
222 } | 241 } |
223 | 242 |
224 MessageCenterView* MessageCenterViewTest::GetMessageCenterView() { | 243 MessageCenterView* MessageCenterViewTest::GetMessageCenterView() { |
225 return message_center_view_.get(); | 244 return message_center_view_.get(); |
226 } | 245 } |
227 | 246 |
228 MessageListView* MessageCenterViewTest::GetMessageListView() { | 247 MessageListView* MessageCenterViewTest::GetMessageListView() { |
(...skipping 22 matching lines...) Expand all Loading... | |
251 } | 270 } |
252 | 271 |
253 int MessageCenterViewTest::GetNotificationCount() { | 272 int MessageCenterViewTest::GetNotificationCount() { |
254 return 2; | 273 return 2; |
255 } | 274 } |
256 | 275 |
257 int MessageCenterViewTest::GetCallCount(CallType type) { | 276 int MessageCenterViewTest::GetCallCount(CallType type) { |
258 return callCounts_[type]; | 277 return callCounts_[type]; |
259 } | 278 } |
260 | 279 |
280 void MessageCenterViewTest::SetLockedState(bool locked) { | |
281 GetMessageCenterView()->OnLockedStateChanged(locked); | |
282 } | |
283 | |
261 void MessageCenterViewTest::ClickOnNotification( | 284 void MessageCenterViewTest::ClickOnNotification( |
262 const std::string& notification_id) { | 285 const std::string& notification_id) { |
263 // For this test, this method should not be invoked. | 286 // For this test, this method should not be invoked. |
264 NOTREACHED(); | 287 NOTREACHED(); |
265 } | 288 } |
266 | 289 |
267 void MessageCenterViewTest::AddNotification( | 290 void MessageCenterViewTest::AddNotification( |
268 std::unique_ptr<Notification> notification) { | 291 std::unique_ptr<Notification> notification) { |
269 std::string notification_id = notification->id(); | 292 std::string notification_id = notification->id(); |
270 notifications_.insert(notification.release()); | 293 notifications_.insert(notification.release()); |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
700 message_center::RichNotificationData(), NULL); | 723 message_center::RichNotificationData(), NULL); |
701 AddNotification( | 724 AddNotification( |
702 std::unique_ptr<Notification>(new Notification(normal_notification))); | 725 std::unique_ptr<Notification>(new Notification(normal_notification))); |
703 EXPECT_EQ(Mode::SETTINGS, GetMessageCenterViewInternalMode()); | 726 EXPECT_EQ(Mode::SETTINGS, GetMessageCenterViewInternalMode()); |
704 | 727 |
705 // Hide the settings. | 728 // Hide the settings. |
706 GetMessageCenterView()->SetSettingsVisible(false); | 729 GetMessageCenterView()->SetSettingsVisible(false); |
707 EXPECT_EQ(Mode::NOTIFICATIONS, GetMessageCenterViewInternalMode()); | 730 EXPECT_EQ(Mode::NOTIFICATIONS, GetMessageCenterViewInternalMode()); |
708 } | 731 } |
709 | 732 |
733 TEST_F(MessageCenterViewTest, LockScreen) { | |
734 const int kLockedMessageCenterViewHeight = 50; | |
735 | |
736 EXPECT_TRUE(GetNotificationView(kNotificationId1)->IsDrawn()); | |
737 EXPECT_TRUE(GetNotificationView(kNotificationId2)->IsDrawn()); | |
738 | |
739 // Lock! | |
740 SetLockedState(true); | |
741 | |
742 EXPECT_FALSE(GetNotificationView(kNotificationId1)->IsDrawn()); | |
743 EXPECT_FALSE(GetNotificationView(kNotificationId2)->IsDrawn()); | |
744 | |
745 GetMessageCenterView()->SizeToPreferredSize(); | |
746 EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); | |
747 | |
748 RemoveNotification(kNotificationId1, false); | |
749 | |
750 GetMessageCenterView()->SizeToPreferredSize(); | |
751 EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); | |
752 | |
753 RemoveNotification(kNotificationId2, false); | |
754 | |
755 GetMessageCenterView()->SizeToPreferredSize(); | |
756 EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); | |
757 | |
758 AddNotification(std::unique_ptr<Notification>(new Notification( | |
759 NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1), | |
760 base::UTF8ToUTF16("title1"), | |
761 base::UTF8ToUTF16("message"), | |
762 gfx::Image(), base::UTF8ToUTF16("display source"), GURL(), | |
763 NotifierId(NotifierId::APPLICATION, "extension_id"), | |
764 message_center::RichNotificationData(), NULL))); | |
765 EXPECT_FALSE(GetNotificationView(kNotificationId1)->IsDrawn()); | |
766 | |
767 GetMessageCenterView()->SizeToPreferredSize(); | |
768 EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); | |
769 | |
770 // Unlock! | |
771 SetLockedState(false); | |
772 | |
773 EXPECT_TRUE(GetNotificationView(kNotificationId1)->IsDrawn()); | |
774 | |
775 GetMessageCenterView()->SizeToPreferredSize(); | |
776 EXPECT_NE(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); | |
777 | |
778 // Lock! | |
779 SetLockedState(true); | |
780 | |
781 EXPECT_FALSE(GetNotificationView(kNotificationId1)->IsDrawn()); | |
782 | |
783 GetMessageCenterView()->SizeToPreferredSize(); | |
784 EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); | |
785 } | |
786 | |
787 TEST_F(MessageCenterViewTest, NoNotification) { | |
788 const int kEmptyMessageCenterViewHeight = 50; | |
789 | |
790 GetMessageCenterView()->SizeToPreferredSize(); | |
791 EXPECT_NE(kEmptyMessageCenterViewHeight, GetMessageCenterView()->height()); | |
792 RemoveNotification(kNotificationId1, false); | |
793 GetMessageCenterView()->SizeToPreferredSize(); | |
794 EXPECT_NE(kEmptyMessageCenterViewHeight, GetMessageCenterView()->height()); | |
795 RemoveNotification(kNotificationId2, false); | |
796 GetMessageCenterView()->SizeToPreferredSize(); | |
797 EXPECT_EQ(kEmptyMessageCenterViewHeight, GetMessageCenterView()->height()); | |
798 | |
799 AddNotification(std::unique_ptr<Notification>(new Notification( | |
800 NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1), | |
801 base::UTF8ToUTF16("title1"), | |
802 base::UTF8ToUTF16("message"), | |
803 gfx::Image(), base::UTF8ToUTF16("display source"), GURL(), | |
804 NotifierId(NotifierId::APPLICATION, "extension_id"), | |
805 message_center::RichNotificationData(), NULL))); | |
806 | |
807 GetMessageCenterView()->SizeToPreferredSize(); | |
808 EXPECT_NE(kEmptyMessageCenterViewHeight, GetMessageCenterView()->height()); | |
809 } | |
810 | |
710 } // namespace message_center | 811 } // namespace message_center |
OLD | NEW |