Index: chrome/browser/notifications/notification_browsertest.cc |
diff --git a/chrome/browser/notifications/notification_browsertest.cc b/chrome/browser/notifications/notification_browsertest.cc |
index f524d34ea88b16ac233f3d40b6dcc187adb3e348..4a3179655aebd5146e08a17da8d9c7ef354465d9 100644 |
--- a/chrome/browser/notifications/notification_browsertest.cc |
+++ b/chrome/browser/notifications/notification_browsertest.cc |
@@ -7,6 +7,7 @@ |
#include "base/bind.h" |
#include "base/callback.h" |
+#include "base/command_line.h" |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
#include "base/run_loop.h" |
@@ -44,25 +45,14 @@ |
#include "net/test/spawned_test_server/spawned_test_server.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "ui/base/window_open_disposition.h" |
- |
-// TODO(kbr): remove: http://crbug.com/222296 |
-#if defined(OS_MACOSX) |
-#import "base/mac/mac_util.h" |
-#endif |
- |
-#if defined(ENABLE_MESSAGE_CENTER) |
-#include "base/command_line.h" |
#include "ui/message_center/message_center.h" |
#include "ui/message_center/message_center_observer.h" |
#include "ui/message_center/message_center_switches.h" |
-#endif |
+#include "ui/message_center/message_center_util.h" |
-// Mac implementation of message_center is incomplete. The code builds, but |
-// the tests do not pass <http://crbug.com/179904>. |
-#if defined(ENABLE_MESSAGE_CENTER) && !defined(OS_MACOSX) |
-#define ENABLE_MESSAGE_CENTER_TESTING 1 |
-#else |
-#define ENABLE_MESSAGE_CENTER_TESTING 0 |
+// TODO(kbr): remove: http://crbug.com/222296 |
+#if defined(OS_MACOSX) |
+#import "base/mac/mac_util.h" |
#endif |
namespace { |
@@ -75,9 +65,15 @@ enum InfobarAction { |
DENY, |
}; |
-#if ENABLE_MESSAGE_CENTER_TESTING |
+class NotificationChangeObserver { |
+public: |
+ virtual ~NotificationChangeObserver() {} |
+ virtual bool Wait() = 0; |
+}; |
+ |
class MessageCenterChangeObserver |
- : public message_center::MessageCenterObserver { |
+ : public message_center::MessageCenterObserver, |
+ public NotificationChangeObserver { |
public: |
MessageCenterChangeObserver() |
: notification_received_(false) { |
@@ -88,7 +84,8 @@ class MessageCenterChangeObserver |
message_center::MessageCenter::Get()->RemoveObserver(this); |
} |
- bool Wait() { |
+ // NotificationChangeObserver: |
+ virtual bool Wait() OVERRIDE { |
if (notification_received_) |
return true; |
@@ -97,15 +94,17 @@ class MessageCenterChangeObserver |
return notification_received_; |
} |
- // overridden from message_center::MessageCenterObserver: |
+ // message_center::MessageCenterObserver: |
virtual void OnNotificationAdded( |
const std::string& notification_id) OVERRIDE { |
OnMessageCenterChanged(); |
} |
+ |
virtual void OnNotificationRemoved(const std::string& notification_id, |
bool by_user) OVERRIDE { |
OnMessageCenterChanged(); |
} |
+ |
virtual void OnNotificationUpdated( |
const std::string& notification_id) OVERRIDE { |
OnMessageCenterChanged(); |
@@ -123,11 +122,9 @@ class MessageCenterChangeObserver |
DISALLOW_COPY_AND_ASSIGN(MessageCenterChangeObserver); |
}; |
-typedef MessageCenterChangeObserver NotificationChangeObserver; |
- |
-#else |
- |
-class NotificationBalloonChangeObserver : public content::NotificationObserver { |
+class NotificationBalloonChangeObserver |
+ : public content::NotificationObserver, |
+ public NotificationChangeObserver { |
public: |
NotificationBalloonChangeObserver() |
: collection_(BalloonNotificationUIManager::GetInstanceForTesting()-> |
@@ -149,7 +146,8 @@ class NotificationBalloonChangeObserver : public content::NotificationObserver { |
collection_->set_on_collection_changed_callback(base::Closure()); |
} |
- bool Wait() { |
+ // NotificationChangeObserver: |
+ virtual bool Wait() OVERRIDE { |
if (!Check()) { |
running_ = true; |
message_loop_runner_ = new content::MessageLoopRunner; |
@@ -178,7 +176,7 @@ class NotificationBalloonChangeObserver : public content::NotificationObserver { |
Check(); |
} |
- // Overridden from content::NotificationObserver: |
+ // content::NotificationObserver: |
virtual void Observe(int type, |
const content::NotificationSource& source, |
const content::NotificationDetails& details) OVERRIDE { |
@@ -201,10 +199,6 @@ class NotificationBalloonChangeObserver : public content::NotificationObserver { |
DISALLOW_COPY_AND_ASSIGN(NotificationBalloonChangeObserver); |
}; |
-typedef NotificationBalloonChangeObserver NotificationChangeObserver; |
- |
-#endif // ENABLE_MESSAGE_CENTER |
- |
} // namespace |
class NotificationsTest : public InProcessBrowserTest { |
@@ -217,15 +211,13 @@ class NotificationsTest : public InProcessBrowserTest { |
int GetNotificationCount(); |
+ NotificationChangeObserver* CreateObserver(); |
+ |
void CloseBrowserWindow(Browser* browser); |
void CrashTab(Browser* browser, int index); |
-#if ENABLE_MESSAGE_CENTER_TESTING |
- virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE; |
-#else |
const std::deque<Balloon*>& GetActiveBalloons(); |
void CrashNotification(Balloon* balloon); |
bool CloseNotificationAndWait(const Notification& notification); |
-#endif |
void SetDefaultPermissionSetting(ContentSetting setting); |
void DenyOrigin(const GURL& origin); |
@@ -270,12 +262,19 @@ void NotificationsTest::SetUpInProcessBrowserTestFixture() { |
} |
int NotificationsTest::GetNotificationCount() { |
-#if ENABLE_MESSAGE_CENTER_TESTING |
- return message_center::MessageCenter::Get()->NotificationCount(); |
-#else |
- return BalloonNotificationUIManager::GetInstanceForTesting()-> |
- balloon_collection()->GetActiveBalloons().size(); |
-#endif // ENABLE_MESSAGE_CENTER_TESTING |
+ if (message_center::IsRichNotificationEnabled()) { |
+ return message_center::MessageCenter::Get()->NotificationCount(); |
+ } else { |
+ return BalloonNotificationUIManager::GetInstanceForTesting()-> |
+ balloon_collection()->GetActiveBalloons().size(); |
+ } |
+} |
+ |
+NotificationChangeObserver* NotificationsTest::CreateObserver() { |
+ if (message_center::IsRichNotificationEnabled()) |
+ return new MessageCenterChangeObserver(); |
+ else |
+ return new NotificationBalloonChangeObserver(); |
} |
void NotificationsTest::CloseBrowserWindow(Browser* browser) { |
@@ -290,15 +289,6 @@ void NotificationsTest::CrashTab(Browser* browser, int index) { |
content::CrashTab(browser->tab_strip_model()->GetWebContentsAt(index)); |
} |
-#if ENABLE_MESSAGE_CENTER_TESTING |
-// Overriden from InProcessBrowserTest: |
-void NotificationsTest::SetUpCommandLine(CommandLine* command_line) { |
- InProcessBrowserTest::SetUpCommandLine(command_line); |
- command_line->AppendSwitch( |
- message_center::switches::kEnableRichNotifications); |
-} |
-#else |
- |
const std::deque<Balloon*>& NotificationsTest::GetActiveBalloons() { |
return BalloonNotificationUIManager::GetInstanceForTesting()-> |
balloon_collection()->GetActiveBalloons(); |
@@ -310,16 +300,14 @@ void NotificationsTest::CrashNotification(Balloon* balloon) { |
bool NotificationsTest::CloseNotificationAndWait( |
const Notification& notification) { |
- NotificationChangeObserver observer; |
+ scoped_ptr<NotificationChangeObserver> observer(CreateObserver()); |
bool success = g_browser_process->notification_ui_manager()-> |
CancelById(notification.notification_id()); |
if (success) |
- return observer.Wait(); |
+ return observer->Wait(); |
return false; |
} |
-#endif // !ENABLE_MESSAGE_CENTER_TESTING |
- |
void NotificationsTest::SetDefaultPermissionSetting(ContentSetting setting) { |
DesktopNotificationService* service = GetDesktopNotificationService(); |
service->SetDefaultContentSetting(setting); |
@@ -365,14 +353,14 @@ std::string NotificationsTest::CreateNotification( |
"createNotification('%s', '%s', '%s', '%s');", |
icon, title, body, replace_id); |
- NotificationChangeObserver observer; |
+ scoped_ptr<NotificationChangeObserver> observer(CreateObserver()); |
std::string result; |
bool success = content::ExecuteScriptAndExtractString( |
browser->tab_strip_model()->GetActiveWebContents(), |
script, |
&result); |
if (success && result != "-1" && wait_for_new_balloon) |
- success = observer.Wait(); |
+ success = observer->Wait(); |
EXPECT_TRUE(success); |
return result; |
@@ -410,7 +398,7 @@ bool NotificationsTest::CancelNotification( |
"cancelNotification('%s');", |
notification_id); |
- NotificationChangeObserver observer; |
+ scoped_ptr<NotificationChangeObserver> observer(CreateObserver()); |
std::string result; |
bool success = content::ExecuteScriptAndExtractString( |
browser->tab_strip_model()->GetActiveWebContents(), |
@@ -418,7 +406,7 @@ bool NotificationsTest::CancelNotification( |
&result); |
if (!success || result != "1") |
return false; |
- return observer.Wait(); |
+ return observer->Wait(); |
} |
bool NotificationsTest::PerformActionOnInfobar( |
@@ -542,20 +530,20 @@ IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCreateSimpleNotification) { |
GURL EXPECTED_ICON_URL = test_server()->GetURL(kExpectedIconUrl); |
ASSERT_EQ(1, GetNotificationCount()); |
-#if ENABLE_MESSAGE_CENTER_TESTING |
- message_center::NotificationList::Notifications notifications = |
- message_center::MessageCenter::Get()->GetNotifications(); |
- EXPECT_EQ(ASCIIToUTF16("My Title"), (*notifications.rbegin())->title()); |
- EXPECT_EQ(ASCIIToUTF16("My Body"), (*notifications.rbegin())->message()); |
-#else |
- const std::deque<Balloon*>& balloons = GetActiveBalloons(); |
- ASSERT_EQ(1U, balloons.size()); |
- Balloon* balloon = balloons[0]; |
- const Notification& notification = balloon->notification(); |
- EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url()); |
- EXPECT_EQ(ASCIIToUTF16("My Title"), notification.title()); |
- EXPECT_EQ(ASCIIToUTF16("My Body"), notification.body()); |
-#endif |
+ if (message_center::IsRichNotificationEnabled()) { |
+ message_center::NotificationList::Notifications notifications = |
+ message_center::MessageCenter::Get()->GetNotifications(); |
+ EXPECT_EQ(ASCIIToUTF16("My Title"), (*notifications.rbegin())->title()); |
+ EXPECT_EQ(ASCIIToUTF16("My Body"), (*notifications.rbegin())->message()); |
+ } else { |
+ const std::deque<Balloon*>& balloons = GetActiveBalloons(); |
+ ASSERT_EQ(1U, balloons.size()); |
+ Balloon* balloon = balloons[0]; |
+ const Notification& notification = balloon->notification(); |
+ EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url()); |
+ EXPECT_EQ(ASCIIToUTF16("My Title"), notification.title()); |
+ EXPECT_EQ(ASCIIToUTF16("My Body"), notification.body()); |
+ } |
} |
IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseNotification) { |
@@ -573,16 +561,16 @@ IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCloseNotification) { |
EXPECT_NE("-1", result); |
ASSERT_EQ(1, GetNotificationCount()); |
-#if ENABLE_MESSAGE_CENTER_TESTING |
- message_center::NotificationList::Notifications notifications = |
- message_center::MessageCenter::Get()->GetNotifications(); |
- message_center::MessageCenter::Get()->RemoveNotification( |
- (*notifications.rbegin())->id(), |
- true); // by_user |
-#else |
- const std::deque<Balloon*>& balloons = GetActiveBalloons(); |
- EXPECT_TRUE(CloseNotificationAndWait(balloons[0]->notification())); |
-#endif // ENABLE_MESSAGE_CENTER_TESTING |
+ if (message_center::IsRichNotificationEnabled()) { |
+ message_center::NotificationList::Notifications notifications = |
+ message_center::MessageCenter::Get()->GetNotifications(); |
+ message_center::MessageCenter::Get()->RemoveNotification( |
+ (*notifications.rbegin())->id(), |
+ true); // by_user |
+ } else { |
+ const std::deque<Balloon*>& balloons = GetActiveBalloons(); |
+ EXPECT_TRUE(CloseNotificationAndWait(balloons[0]->notification())); |
+ } |
ASSERT_EQ(0, GetNotificationCount()); |
} |
@@ -765,16 +753,16 @@ IN_PROC_BROWSER_TEST_F(NotificationsTest, TestCreateDenyCloseNotifications) { |
ASSERT_TRUE(CheckOriginInSetting(settings, test_page_url_.GetOrigin())); |
EXPECT_EQ(1, GetNotificationCount()); |
-#if ENABLE_MESSAGE_CENTER_TESTING |
- message_center::NotificationList::Notifications notifications = |
- message_center::MessageCenter::Get()->GetNotifications(); |
- message_center::MessageCenter::Get()->RemoveNotification( |
- (*notifications.rbegin())->id(), |
- true); // by_user |
-#else |
- const std::deque<Balloon*>& balloons = GetActiveBalloons(); |
- ASSERT_TRUE(CloseNotificationAndWait(balloons[0]->notification())); |
-#endif // ENABLE_MESSAGE_CENTER_TESTING |
+ if (message_center::IsRichNotificationEnabled()) { |
+ message_center::NotificationList::Notifications notifications = |
+ message_center::MessageCenter::Get()->GetNotifications(); |
+ message_center::MessageCenter::Get()->RemoveNotification( |
+ (*notifications.rbegin())->id(), |
+ true); // by_user |
+ } else { |
+ const std::deque<Balloon*>& balloons = GetActiveBalloons(); |
+ ASSERT_TRUE(CloseNotificationAndWait(balloons[0]->notification())); |
+ } |
ASSERT_EQ(0, GetNotificationCount()); |
} |
@@ -836,9 +824,11 @@ IN_PROC_BROWSER_TEST_F(NotificationsTest, |
CrashTab(browser(), 0); |
} |
-// Notifications don't have their own process with the message center. |
-#if !ENABLE_MESSAGE_CENTER_TESTING |
IN_PROC_BROWSER_TEST_F(NotificationsTest, TestKillNotificationProcess) { |
+ // Notifications don't have their own process with the message center. |
+ if (message_center::IsRichNotificationEnabled()) |
+ return; |
+ |
#if defined(OS_MACOSX) |
// TODO(kbr): re-enable: http://crbug.com/222296 |
if (base::mac::IsOSMountainLionOrLater()) |
@@ -855,7 +845,6 @@ IN_PROC_BROWSER_TEST_F(NotificationsTest, TestKillNotificationProcess) { |
CrashNotification(balloons[0]); |
ASSERT_EQ(0, GetNotificationCount()); |
} |
-#endif |
IN_PROC_BROWSER_TEST_F(NotificationsTest, TestIncognitoNotification) { |
#if defined(OS_MACOSX) |
@@ -958,20 +947,20 @@ IN_PROC_BROWSER_TEST_F(NotificationsTest, TestNotificationReplacement) { |
browser(), false, "no_such_file.png", "Title2", "Body2", "chat"); |
EXPECT_NE("-1", result); |
-#if ENABLE_MESSAGE_CENTER_TESTING |
- ASSERT_EQ(1, GetNotificationCount()); |
- message_center::NotificationList::Notifications notifications = |
- message_center::MessageCenter::Get()->GetNotifications(); |
- EXPECT_EQ(ASCIIToUTF16("Title2"), (*notifications.rbegin())->title()); |
- EXPECT_EQ(ASCIIToUTF16("Body2"), (*notifications.rbegin())->message()); |
-#else |
- const std::deque<Balloon*>& balloons = GetActiveBalloons(); |
- ASSERT_EQ(1U, balloons.size()); |
- Balloon* balloon = balloons[0]; |
- const Notification& notification = balloon->notification(); |
- GURL EXPECTED_ICON_URL = test_server()->GetURL(kExpectedIconUrl); |
- EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url()); |
- EXPECT_EQ(ASCIIToUTF16("Title2"), notification.title()); |
- EXPECT_EQ(ASCIIToUTF16("Body2"), notification.body()); |
-#endif |
+ if (message_center::IsRichNotificationEnabled()) { |
+ ASSERT_EQ(1, GetNotificationCount()); |
+ message_center::NotificationList::Notifications notifications = |
+ message_center::MessageCenter::Get()->GetNotifications(); |
+ EXPECT_EQ(ASCIIToUTF16("Title2"), (*notifications.rbegin())->title()); |
+ EXPECT_EQ(ASCIIToUTF16("Body2"), (*notifications.rbegin())->message()); |
+ } else { |
+ const std::deque<Balloon*>& balloons = GetActiveBalloons(); |
+ ASSERT_EQ(1U, balloons.size()); |
+ Balloon* balloon = balloons[0]; |
+ const Notification& notification = balloon->notification(); |
+ GURL EXPECTED_ICON_URL = test_server()->GetURL(kExpectedIconUrl); |
+ EXPECT_EQ(EXPECTED_ICON_URL, notification.icon_url()); |
+ EXPECT_EQ(ASCIIToUTF16("Title2"), notification.title()); |
+ EXPECT_EQ(ASCIIToUTF16("Body2"), notification.body()); |
+ } |
} |