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

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

Issue 273173003: Notifications: Retain button hover state during content updates. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move to STLDeleteElements. Created 6 years, 7 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/notification_view.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/message_center/views/notification_view_unittest.cc
diff --git a/ui/message_center/views/notification_view_unittest.cc b/ui/message_center/views/notification_view_unittest.cc
index 0ca8e0a389044cbd6773de4a8132d47ac596ec51..596e9ae792829e27cb78fddbb808464bcc9b7e70 100644
--- a/ui/message_center/views/notification_view_unittest.cc
+++ b/ui/message_center/views/notification_view_unittest.cc
@@ -13,12 +13,16 @@
#include "ui/message_center/notification_list.h"
#include "ui/message_center/notification_types.h"
#include "ui/message_center/views/message_center_controller.h"
+#include "ui/message_center/views/notification_button.h"
+#include "ui/views/layout/fill_layout.h"
+#include "ui/views/test/views_test_base.h"
+#include "ui/views/widget/widget_delegate.h"
namespace message_center {
/* Test fixture ***************************************************************/
-class NotificationViewTest : public testing::Test,
+class NotificationViewTest : public views::ViewsTestBase,
public MessageCenterController {
public:
NotificationViewTest();
@@ -27,6 +31,7 @@ class NotificationViewTest : public testing::Test,
virtual void SetUp() OVERRIDE;
virtual void TearDown() OVERRIDE;
+ views::Widget* widget() { return notification_view_->GetWidget(); }
NotificationView* notification_view() { return notification_view_.get(); }
Notification* notification() { return notification_.get(); }
RichNotificationData* data() { return data_.get(); }
@@ -55,6 +60,12 @@ class NotificationViewTest : public testing::Test,
return bitmap;
}
+ std::vector<ButtonInfo> CreateButtons(int number) {
+ ButtonInfo info(base::ASCIIToUTF16("Test button title."));
+ info.icon = CreateTestImage(4, 4);
+ return std::vector<ButtonInfo>(number, info);
+ }
+
private:
scoped_ptr<RichNotificationData> data_;
scoped_ptr<Notification> notification_;
@@ -70,6 +81,7 @@ NotificationViewTest::~NotificationViewTest() {
}
void NotificationViewTest::SetUp() {
+ views::ViewsTestBase::SetUp();
// Create a dummy notification.
SkBitmap bitmap;
data_.reset(new RichNotificationData());
@@ -89,10 +101,20 @@ void NotificationViewTest::SetUp() {
// Then create a new NotificationView with that single notification.
notification_view_.reset(
NotificationView::Create(this, *notification_, true));
+ notification_view_->set_owned_by_client();
+
+ views::Widget::InitParams init_params(
+ CreateParams(views::Widget::InitParams::TYPE_POPUP));
+ views::Widget* widget = new views::Widget();
+ widget->Init(init_params);
+ widget->SetContentsView(notification_view_.get());
+ widget->SetSize(notification_view_->GetPreferredSize());
}
void NotificationViewTest::TearDown() {
+ widget()->Close();
notification_view_.reset();
+ views::ViewsTestBase::TearDown();
}
void NotificationViewTest::ClickOnNotification(
@@ -175,4 +197,84 @@ TEST_F(NotificationViewTest, TestLineLimits) {
EXPECT_EQ(0, notification_view()->GetMessageLineLimit(2, 360));
}
+TEST_F(NotificationViewTest, UpdateButtonsStateTest) {
+ notification()->set_buttons(CreateButtons(2));
+ notification_view()->CreateOrUpdateViews(*notification());
+ widget()->Show();
+
+ EXPECT_TRUE(NULL == notification_view()->action_buttons_[0]->background());
+
+ // Now construct a mouse move event 1 pixel inside the boundary of the action
+ // button.
+ gfx::Point cursor_location(1, 1);
+ views::View::ConvertPointToWidget(notification_view()->action_buttons_[0],
+ &cursor_location);
+ ui::MouseEvent move(ui::ET_MOUSE_MOVED,
+ cursor_location,
+ cursor_location,
+ ui::EF_NONE,
+ ui::EF_NONE);
+ widget()->OnMouseEvent(&move);
+
+ EXPECT_TRUE(NULL != notification_view()->action_buttons_[0]->background());
+
+ notification_view()->CreateOrUpdateViews(*notification());
+
+ EXPECT_TRUE(NULL != notification_view()->action_buttons_[0]->background());
+
+ // Now construct a mouse move event 1 pixel outside the boundary of the
+ // widget.
+ cursor_location = gfx::Point(-1, -1);
+ move = ui::MouseEvent(ui::ET_MOUSE_MOVED,
+ cursor_location,
+ cursor_location,
+ ui::EF_NONE,
+ ui::EF_NONE);
+ widget()->OnMouseEvent(&move);
+
+ EXPECT_TRUE(NULL == notification_view()->action_buttons_[0]->background());
+}
+
+TEST_F(NotificationViewTest, UpdateButtonCountTest) {
+ notification()->set_buttons(CreateButtons(2));
+ notification_view()->CreateOrUpdateViews(*notification());
+ widget()->Show();
+
+ EXPECT_TRUE(NULL == notification_view()->action_buttons_[0]->background());
+ EXPECT_TRUE(NULL == notification_view()->action_buttons_[1]->background());
+
+ // Now construct a mouse move event 1 pixel inside the boundary of the action
+ // button.
+ gfx::Point cursor_location(1, 1);
+ views::View::ConvertPointToWidget(notification_view()->action_buttons_[0],
+ &cursor_location);
+ ui::MouseEvent move(ui::ET_MOUSE_MOVED,
+ cursor_location,
+ cursor_location,
+ ui::EF_NONE,
+ ui::EF_NONE);
+ widget()->OnMouseEvent(&move);
+
+ EXPECT_TRUE(NULL != notification_view()->action_buttons_[0]->background());
+ EXPECT_TRUE(NULL == notification_view()->action_buttons_[1]->background());
+
+ notification()->set_buttons(CreateButtons(1));
+ notification_view()->CreateOrUpdateViews(*notification());
+
+ EXPECT_TRUE(NULL != notification_view()->action_buttons_[0]->background());
+ EXPECT_EQ(1u, notification_view()->action_buttons_.size());
+
+ // Now construct a mouse move event 1 pixel outside the boundary of the
+ // widget.
+ cursor_location = gfx::Point(-1, -1);
+ move = ui::MouseEvent(ui::ET_MOUSE_MOVED,
+ cursor_location,
+ cursor_location,
+ ui::EF_NONE,
+ ui::EF_NONE);
+ widget()->OnMouseEvent(&move);
+
+ EXPECT_TRUE(NULL == notification_view()->action_buttons_[0]->background());
+}
+
} // namespace message_center
« no previous file with comments | « ui/message_center/views/notification_view.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698