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

Unified Diff: chrome/browser/chromeos/notifications/notification_browsertest.cc

Issue 1164004: Add KEEP_SIZE state to notification panel and fixed misc bugs. (Closed)
Patch Set: " Created 10 years, 9 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
Index: chrome/browser/chromeos/notifications/notification_browsertest.cc
diff --git a/chrome/browser/chromeos/notifications/notification_browsertest.cc b/chrome/browser/chromeos/notifications/notification_browsertest.cc
index c2c83ac74126198ecdefb0dc3854480cf264a67e..e0b2048979d440397fa95916b6469c16adc8ec2e 100644
--- a/chrome/browser/chromeos/notifications/notification_browsertest.cc
+++ b/chrome/browser/chromeos/notifications/notification_browsertest.cc
@@ -16,9 +16,9 @@
namespace chromeos {
-class SystemNotificationDelegate : public NotificationDelegate {
+class MockNotificationDelegate : public NotificationDelegate {
public:
- explicit SystemNotificationDelegate(const std::string id) : id_(id) {}
+ explicit MockNotificationDelegate(const std::string& id) : id_(id) {}
virtual void Display() {}
virtual void Error() {}
@@ -28,7 +28,7 @@ class SystemNotificationDelegate : public NotificationDelegate {
private:
std::string id_;
- DISALLOW_COPY_AND_ASSIGN(SystemNotificationDelegate);
+ DISALLOW_COPY_AND_ASSIGN(MockNotificationDelegate);
};
class NotificationTest : public InProcessBrowserTest {
@@ -46,38 +46,120 @@ class NotificationTest : public InProcessBrowserTest {
return static_cast<NotificationPanel*>(
GetBalloonCollectionImpl()->notification_ui());
}
+
+ Notification NewMockNotification(const std::string& id) {
+ return NewMockNotification(new MockNotificationDelegate(id));
+ }
+
+ Notification NewMockNotification(NotificationDelegate* delegate) {
+ return SystemNotificationFactory::Create(
+ GURL(), ASCIIToUTF16(""), ASCIIToUTF16(""),
+ delegate);
+ }
+
+ void RunAllPending() {
+ MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
+ ui_test_utils::RunMessageLoop();
+ }
};
+IN_PROC_BROWSER_TEST_F(NotificationTest, TestBasic) {
+ BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
+ NotificationPanel* panel = GetNotificationPanel();
+ NotificationPanelTester* tester = panel->GetTester();
+
+ // Using system notification as regular notification.
+ collection->Add(NewMockNotification("1"), browser()->profile());
+
+ EXPECT_EQ(1, tester->GetNewNotificationCount());
+ EXPECT_EQ(1, tester->GetNotificationCount());
+ EXPECT_EQ(0, tester->GetStickyNotificationCount());
+ EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
+
+ collection->Add(NewMockNotification("2"), browser()->profile());
+
+ EXPECT_EQ(2, tester->GetNewNotificationCount());
+ EXPECT_EQ(2, tester->GetNotificationCount());
+ EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
+
+ collection->Remove(NewMockNotification("1"));
+ RunAllPending();
+
+ EXPECT_EQ(1, tester->GetNewNotificationCount());
+ EXPECT_EQ(1, tester->GetNotificationCount());
+ EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
+
+ collection->Remove(NewMockNotification("2"));
+ RunAllPending();
+ EXPECT_EQ(0, tester->GetNewNotificationCount());
+ EXPECT_EQ(0, tester->GetNotificationCount());
+ EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
+}
+
+IN_PROC_BROWSER_TEST_F(NotificationTest, TestMouseMotion) {
+ BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
+ NotificationPanel* panel = GetNotificationPanel();
+ NotificationPanelTester* tester = panel->GetTester();
+
+ // Using system notification as regular notification.
+ collection->Add(NewMockNotification("1"), browser()->profile());
+ collection->Add(NewMockNotification("2"), browser()->profile());
+
+ EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
+
+ panel->OnMouseMotion();
+ EXPECT_EQ(NotificationPanel::KEEP_SIZE, tester->state());
+
+ collection->Remove(NewMockNotification("1"));
+ RunAllPending();
+
+ EXPECT_EQ(1, tester->GetNewNotificationCount());
+ EXPECT_EQ(1, tester->GetNotificationCount());
+ EXPECT_EQ(NotificationPanel::KEEP_SIZE, tester->state());
+
+ collection->Remove(NewMockNotification("2"));
+ RunAllPending();
+ EXPECT_EQ(0, tester->GetNotificationCount());
+ EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
+
+ collection->Add(NewMockNotification("3"), browser()->profile());
+ EXPECT_EQ(NotificationPanel::STICKY_AND_NEW, tester->state());
+ collection->Remove(NewMockNotification("3"));
+
+ RunAllPending();
+ EXPECT_EQ(0, tester->GetNotificationCount());
+ EXPECT_EQ(NotificationPanel::CLOSED, tester->state());
+}
+
IN_PROC_BROWSER_TEST_F(NotificationTest, TestSystemNotification) {
BalloonCollectionImpl* collection = GetBalloonCollectionImpl();
NotificationPanel* panel = GetNotificationPanel();
- scoped_refptr<SystemNotificationDelegate> delegate(
- new SystemNotificationDelegate("power"));
+ scoped_refptr<MockNotificationDelegate> delegate(
+ new MockNotificationDelegate("power"));
+ NotificationPanelTester* tester = panel->GetTester();
- Notification notify = SystemNotificationFactory::Create(
- GURL(), ASCIIToUTF16("Title"), ASCIIToUTF16("test"), delegate.get());
+ Notification notify = NewMockNotification(delegate.get());
collection->AddSystemNotification(notify, browser()->profile(), true, false);
- EXPECT_EQ(1, panel->GetNewNotificationCount());
- EXPECT_EQ(1, panel->GetStickyNotificationCount());
+ EXPECT_EQ(1, tester->GetNewNotificationCount());
+ EXPECT_EQ(1, tester->GetStickyNotificationCount());
Notification update = SystemNotificationFactory::Create(
GURL(), ASCIIToUTF16("Title"), ASCIIToUTF16("updated"), delegate.get());
collection->UpdateNotification(update);
- EXPECT_EQ(1, panel->GetStickyNotificationCount());
+ EXPECT_EQ(1, tester->GetStickyNotificationCount());
// Dismiss the notification.
// TODO(oshima): Consider updating API to Remove(NotificationDelegate)
// or Remove(std::string id);
collection->Remove(Notification(GURL(), GURL(),
std::wstring(), delegate.get()));
+ RunAllPending();
- MessageLoop::current()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
- ui_test_utils::RunMessageLoop();
-
- EXPECT_EQ(0, panel->GetStickyNotificationCount());
- EXPECT_EQ(0, panel->GetNewNotificationCount());
+ EXPECT_EQ(0, tester->GetStickyNotificationCount());
+ EXPECT_EQ(0, tester->GetNewNotificationCount());
// TODO(oshima): check content, etc..
}
+
} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/notifications/balloon_view.cc ('k') | chrome/browser/chromeos/notifications/notification_panel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698