Chromium Code Reviews| Index: ui/message_center/views/message_center_view_unittest.cc |
| diff --git a/ui/message_center/views/message_center_view_unittest.cc b/ui/message_center/views/message_center_view_unittest.cc |
| index b60f144c61c450ac40741aaa150e9cd42f5bedaa..7558b1b542c7040266dadfd7c336090ad555ac24 100644 |
| --- a/ui/message_center/views/message_center_view_unittest.cc |
| +++ b/ui/message_center/views/message_center_view_unittest.cc |
| @@ -107,8 +107,10 @@ class FakeMessageCenterImpl : public FakeMessageCenter { |
| if (type == RemoveType::NON_PINNED) |
| remove_all_closable_notification_called_ = true; |
| } |
| + bool IsLockedState() const override { return locked_; } |
| bool remove_all_closable_notification_called_ = false; |
| NotificationList::Notifications visible_notifications_; |
| + bool locked_ = false; |
| }; |
| /* Test fixture ***************************************************************/ |
| @@ -134,6 +136,7 @@ class MessageCenterViewTest : public views::ViewsTestBase, |
| int GetNotificationCount(); |
| int GetCallCount(CallType type); |
| int GetCalculatedMessageListViewHeight(); |
| + void SetLockedState(bool locked); |
| Mode GetMessageCenterViewInternalMode(); |
| void AddNotification(std::unique_ptr<Notification> notification); |
| void UpdateNotification(const std::string& notification_id, |
| @@ -166,6 +169,7 @@ class MessageCenterViewTest : public views::ViewsTestBase, |
| views::View* MakeParent(views::View* child1, views::View* child2); |
| NotificationList::Notifications notifications_; |
| + std::unique_ptr<views::Widget> widget_; |
| std::unique_ptr<MessageCenterView> message_center_view_; |
| std::unique_ptr<FakeMessageCenterImpl> message_center_; |
| std::map<CallType,int> callCounts_; |
| @@ -181,6 +185,7 @@ MessageCenterViewTest::~MessageCenterViewTest() { |
| void MessageCenterViewTest::SetUp() { |
| views::ViewsTestBase::SetUp(); |
| + MessageCenterView::disable_animation_for_testing = true; |
| message_center_.reset(new FakeMessageCenterImpl()); |
| // Create a dummy notification. |
| @@ -209,6 +214,18 @@ void MessageCenterViewTest::SetUp() { |
| GetMessageListView()->quit_message_loop_after_animation_for_test_ = true; |
| GetMessageCenterView()->SetBounds(0, 0, 380, 600); |
| message_center_view_->SetNotifications(notifications_); |
| + message_center_view_->set_owned_by_client(); |
| + |
| + widget_.reset(new views::Widget()); |
|
yoshiki
2016/05/16 19:04:46
Widget is necessary to use View::IsDrawn().
|
| + views::Widget::InitParams params = |
| + CreateParams(views::Widget::InitParams::TYPE_POPUP); |
| + params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| + params.bounds = gfx::Rect(50, 50, 650, 650); |
| + widget_->Init(params); |
| + views::View* root = widget_->GetRootView(); |
| + root->AddChildView(message_center_view_.get()); |
| + widget_->Show(); |
| + widget_->Activate(); |
| // Wait until the animation finishes if available. |
| if (GetAnimator()->IsAnimating()) |
| @@ -216,6 +233,8 @@ void MessageCenterViewTest::SetUp() { |
| } |
| void MessageCenterViewTest::TearDown() { |
| + widget_->CloseNow(); |
| + widget_.reset(); |
| message_center_view_.reset(); |
| STLDeleteElements(¬ifications_); |
| views::ViewsTestBase::TearDown(); |
| @@ -258,6 +277,10 @@ int MessageCenterViewTest::GetCallCount(CallType type) { |
| return callCounts_[type]; |
| } |
| +void MessageCenterViewTest::SetLockedState(bool locked) { |
| + GetMessageCenterView()->OnLockedStateChanged(locked); |
| +} |
| + |
| void MessageCenterViewTest::ClickOnNotification( |
| const std::string& notification_id) { |
| // For this test, this method should not be invoked. |
| @@ -707,4 +730,82 @@ TEST_F(MessageCenterViewTest, |
| EXPECT_EQ(Mode::NOTIFICATIONS, GetMessageCenterViewInternalMode()); |
| } |
| +TEST_F(MessageCenterViewTest, LockScreen) { |
| + const int kLockedMessageCenterViewHeight = 50; |
| + |
| + EXPECT_TRUE(GetNotificationView(kNotificationId1)->IsDrawn()); |
| + EXPECT_TRUE(GetNotificationView(kNotificationId2)->IsDrawn()); |
| + |
| + // Lock! |
| + SetLockedState(true); |
| + |
| + EXPECT_FALSE(GetNotificationView(kNotificationId1)->IsDrawn()); |
| + EXPECT_FALSE(GetNotificationView(kNotificationId2)->IsDrawn()); |
| + |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); |
| + |
| + RemoveNotification(kNotificationId1, false); |
| + |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); |
| + |
| + RemoveNotification(kNotificationId2, false); |
| + |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); |
| + |
| + AddNotification(std::unique_ptr<Notification>(new Notification( |
| + NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1), |
| + base::UTF8ToUTF16("title1"), |
| + base::UTF8ToUTF16("message"), |
| + gfx::Image(), base::UTF8ToUTF16("display source"), GURL(), |
| + NotifierId(NotifierId::APPLICATION, "extension_id"), |
| + message_center::RichNotificationData(), NULL))); |
| + EXPECT_FALSE(GetNotificationView(kNotificationId1)->IsDrawn()); |
| + |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); |
| + |
| + // Unlock! |
| + SetLockedState(false); |
| + |
| + EXPECT_TRUE(GetNotificationView(kNotificationId1)->IsDrawn()); |
| + |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_NE(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); |
| + |
| + // Lock! |
| + SetLockedState(true); |
| + |
| + EXPECT_FALSE(GetNotificationView(kNotificationId1)->IsDrawn()); |
| + |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_EQ(kLockedMessageCenterViewHeight, GetMessageCenterView()->height()); |
| +} |
| + |
| +TEST_F(MessageCenterViewTest, NoNotification) { |
| + const int kEmptyMessageCenterViewHeight = 50; |
| + |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_NE(kEmptyMessageCenterViewHeight, GetMessageCenterView()->height()); |
| + RemoveNotification(kNotificationId1, false); |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_NE(kEmptyMessageCenterViewHeight, GetMessageCenterView()->height()); |
| + RemoveNotification(kNotificationId2, false); |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_EQ(kEmptyMessageCenterViewHeight, GetMessageCenterView()->height()); |
| + |
| + AddNotification(std::unique_ptr<Notification>(new Notification( |
| + NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1), |
| + base::UTF8ToUTF16("title1"), |
| + base::UTF8ToUTF16("message"), |
| + gfx::Image(), base::UTF8ToUTF16("display source"), GURL(), |
| + NotifierId(NotifierId::APPLICATION, "extension_id"), |
| + message_center::RichNotificationData(), NULL))); |
| + |
| + GetMessageCenterView()->SizeToPreferredSize(); |
| + EXPECT_NE(kEmptyMessageCenterViewHeight, GetMessageCenterView()->height()); |
| +} |
| + |
| } // namespace message_center |