Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1305)

Unified Diff: ui/message_center/views/message_center_view_unittest.cc

Issue 1645843003: Implement Non-Closable Notification (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove unnecessary property. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/message_center/views/message_center_view.cc ('k') | ui/message_center/views/message_list_view.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 d412cb044167d77d2fff8f898175825ff41e5a0a..1d592a3312c9f6911fb6616f1f91310f46f30d7e 100644
--- a/ui/message_center/views/message_center_view_unittest.cc
+++ b/ui/message_center/views/message_center_view_unittest.cc
@@ -17,9 +17,11 @@
#include "ui/message_center/notification.h"
#include "ui/message_center/notification_list.h"
#include "ui/message_center/notification_types.h"
+#include "ui/message_center/views/message_center_button_bar.h"
#include "ui/message_center/views/message_center_controller.h"
#include "ui/message_center/views/message_list_view.h"
#include "ui/message_center/views/notification_view.h"
+#include "ui/views/controls/slide_out_view.h"
namespace message_center {
@@ -34,6 +36,12 @@ enum CallType {
LAYOUT
};
+class DummyEvent : public ui::Event {
+ public:
+ DummyEvent() : Event(ui::ET_UNKNOWN, base::TimeDelta(), 0) {}
+ ~DummyEvent() override {}
+};
+
/* Instrumented/Mock NotificationView subclass ********************************/
class MockNotificationView : public NotificationView {
@@ -94,6 +102,11 @@ class FakeMessageCenterImpl : public FakeMessageCenter {
void SetVisibleNotifications(NotificationList::Notifications notifications) {
visible_notifications_ = notifications;
}
+ void RemoveAllNotifications(bool by_user, RemoveType type) override {
+ if (type == RemoveType::NON_PINNED)
+ remove_all_closable_notification_called_ = true;
+ }
+ bool remove_all_closable_notification_called_ = false;
NotificationList::Notifications visible_notifications_;
};
@@ -111,6 +124,7 @@ class MessageCenterViewTest : public testing::Test,
MessageCenterView* GetMessageCenterView();
MessageListView* GetMessageListView();
+ FakeMessageCenterImpl* GetMessageCenter() const;
NotificationView* GetNotificationView(const std::string& id);
views::BoundsAnimator* GetAnimator();
int GetNotificationCount();
@@ -139,6 +153,8 @@ class MessageCenterViewTest : public testing::Test,
void LogBounds(int depth, views::View* view);
+ MessageCenterButtonBar* GetButtonBar() const;
+
private:
views::View* MakeParent(views::View* child1, views::View* child2);
@@ -146,7 +162,7 @@ class MessageCenterViewTest : public testing::Test,
NotificationList::Notifications notifications_;
scoped_ptr<MessageCenterView> message_center_view_;
- FakeMessageCenterImpl message_center_;
+ scoped_ptr<FakeMessageCenterImpl> message_center_;
std::map<CallType,int> callCounts_;
DISALLOW_COPY_AND_ASSIGN(MessageCenterViewTest);
@@ -159,6 +175,8 @@ MessageCenterViewTest::~MessageCenterViewTest() {
}
void MessageCenterViewTest::SetUp() {
+ message_center_.reset(new FakeMessageCenterImpl());
+
// Create a dummy notification.
Notification* notification1 = new Notification(
NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1),
@@ -177,12 +195,12 @@ void MessageCenterViewTest::SetUp() {
// ...and a list for it.
notifications_.insert(notification1);
notifications_.insert(notification2);
- message_center_.SetVisibleNotifications(notifications_);
+ message_center_->SetVisibleNotifications(notifications_);
// Then create a new MessageCenterView with that single notification.
base::string16 title;
message_center_view_.reset(new MessageCenterView(
- &message_center_, NULL, 100, false, /*top_down =*/false, title));
+ message_center_.get(), NULL, 100, false, /*top_down =*/false, title));
GetMessageListView()->quit_message_loop_after_animation_for_test_ = true;
GetMessageCenterView()->SetBounds(0, 0, 380, 600);
message_center_view_->SetNotifications(notifications_);
@@ -205,6 +223,10 @@ MessageListView* MessageCenterViewTest::GetMessageListView() {
return message_center_view_->message_list_view_.get();
}
+FakeMessageCenterImpl* MessageCenterViewTest::GetMessageCenter() const {
+ return message_center_.get();
+}
+
NotificationView* MessageCenterViewTest::GetNotificationView(
const std::string& id) {
return message_center_view_->notification_views_[id];
@@ -236,7 +258,7 @@ void MessageCenterViewTest::AddNotification(
scoped_ptr<Notification> notification) {
std::string notification_id = notification->id();
notifications_.insert(notification.release());
- message_center_.SetVisibleNotifications(notifications_);
+ message_center_->SetVisibleNotifications(notifications_);
message_center_view_->OnNotificationAdded(notification_id);
}
@@ -253,7 +275,7 @@ void MessageCenterViewTest::UpdateNotification(
// |notifications| is a "set" container so we don't need to be aware the
// order.
notifications_.insert(notification.release());
- message_center_.SetVisibleNotifications(notifications_);
+ message_center_->SetVisibleNotifications(notifications_);
message_center_view_->OnNotificationUpdated(notification_id);
}
@@ -267,7 +289,7 @@ void MessageCenterViewTest::RemoveNotification(
break;
}
}
- message_center_.SetVisibleNotifications(notifications_);
+ message_center_->SetVisibleNotifications(notifications_);
message_center_view_->OnNotificationRemoved(notification_id, by_user);
}
@@ -322,6 +344,10 @@ void MessageCenterViewTest::LogBounds(int depth, views::View* view) {
LogBounds(depth + 1, view->child_at(i));
}
+MessageCenterButtonBar* MessageCenterViewTest::GetButtonBar() const {
+ return message_center_view_->button_bar_;
+}
+
/* Unit tests *****************************************************************/
TEST_F(MessageCenterViewTest, CallTest) {
@@ -488,4 +514,89 @@ TEST_F(MessageCenterViewTest, PositionAfterRemove) {
GetMessageListView()->height());
}
+TEST_F(MessageCenterViewTest, CloseButton) {
+ views::Button* close_button = GetButtonBar()->GetCloseAllButtonForTest();
+ EXPECT_NE(nullptr, close_button);
+
+ ((views::ButtonListener*)GetButtonBar())
+ ->ButtonPressed(close_button, DummyEvent());
+ base::MessageLoop::current()->Run();
+ EXPECT_TRUE(GetMessageCenter()->remove_all_closable_notification_called_);
+}
+
+TEST_F(MessageCenterViewTest, CloseButtonEnablity) {
+ views::Button* close_button = GetButtonBar()->GetCloseAllButtonForTest();
+ EXPECT_NE(nullptr, close_button);
+
+ // There should be 2 non-pinned notifications.
+ EXPECT_EQ(2u, GetMessageCenter()->GetVisibleNotifications().size());
+ EXPECT_TRUE(close_button->enabled());
+
+ RemoveNotification(kNotificationId1, false);
+ base::MessageLoop::current()->Run();
+
+ // There should be 1 non-pinned notification.
+ EXPECT_EQ(1u, GetMessageCenter()->GetVisibleNotifications().size());
+ EXPECT_TRUE(close_button->enabled());
+
+ RemoveNotification(kNotificationId2, false);
+ base::MessageLoop::current()->Run();
+
+ // There should be no notification.
+ EXPECT_EQ(0u, GetMessageCenter()->GetVisibleNotifications().size());
+ EXPECT_FALSE(close_button->enabled());
+
+ Notification normal_notification(
+ NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId1),
+ base::UTF8ToUTF16("title2"),
+ base::UTF8ToUTF16("message\nwhich\nis\nvertically\nlong\n."),
+ gfx::Image(), base::UTF8ToUTF16("display source"), GURL(),
+ NotifierId(NotifierId::APPLICATION, "extension_id"),
+ message_center::RichNotificationData(), NULL);
+
+#if defined(OS_CHROMEOS)
+ Notification pinned_notification(
+ NOTIFICATION_TYPE_SIMPLE, std::string(kNotificationId2),
+ base::UTF8ToUTF16("title2"),
+ base::UTF8ToUTF16("message\nwhich\nis\nvertically\nlong\n."),
+ gfx::Image(), base::UTF8ToUTF16("display source"), GURL(),
+ NotifierId(NotifierId::APPLICATION, "extension_id"),
+ message_center::RichNotificationData(), NULL);
+ pinned_notification.set_pinned(true);
+
+ AddNotification(
+ scoped_ptr<Notification>(new Notification(normal_notification)));
+
+ // There should be 1 non-pinned notification.
+ EXPECT_EQ(1u, GetMessageCenter()->GetVisibleNotifications().size());
+ EXPECT_TRUE(close_button->enabled());
+
+ AddNotification(
+ scoped_ptr<Notification>(new Notification(pinned_notification)));
+
+ // There should be 1 normal notification and 1 pinned notification.
+ EXPECT_EQ(2u, GetMessageCenter()->GetVisibleNotifications().size());
+ EXPECT_TRUE(close_button->enabled());
+
+ RemoveNotification(kNotificationId1, false);
+
+ // There should be 1 pinned notification.
+ EXPECT_EQ(1u, GetMessageCenter()->GetVisibleNotifications().size());
+ EXPECT_FALSE(close_button->enabled());
+
+ RemoveNotification(kNotificationId2, false);
+
+ // There should be no notification.
+ EXPECT_EQ(0u, GetMessageCenter()->GetVisibleNotifications().size());
+ EXPECT_FALSE(close_button->enabled());
+
+ AddNotification(
+ scoped_ptr<Notification>(new Notification(pinned_notification)));
+
+ // There should be 1 pinned notification.
+ EXPECT_EQ(1u, GetMessageCenter()->GetVisibleNotifications().size());
+ EXPECT_FALSE(close_button->enabled());
+#endif // defined(OS_CHROMEOS)
+}
+
} // namespace message_center
« no previous file with comments | « ui/message_center/views/message_center_view.cc ('k') | ui/message_center/views/message_list_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698