Chromium Code Reviews| Index: chrome/browser/notifications/platform_notification_service_unittest.cc |
| diff --git a/chrome/browser/notifications/platform_notification_service_unittest.cc b/chrome/browser/notifications/platform_notification_service_unittest.cc |
| index 79b01d7bd28e01b5055da88ae3ed1cf0308a67e4..37b827ece37bea252ac76b0cba6775b5fe2b5717 100644 |
| --- a/chrome/browser/notifications/platform_notification_service_unittest.cc |
| +++ b/chrome/browser/notifications/platform_notification_service_unittest.cc |
| @@ -15,8 +15,10 @@ |
| #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| #include "chrome/browser/notifications/message_center_display_service.h" |
| #include "chrome/browser/notifications/notification_delegate.h" |
| +#include "chrome/browser/notifications/notification_display_service_factory.h" |
| #include "chrome/browser/notifications/notification_test_util.h" |
| #include "chrome/browser/notifications/platform_notification_service_impl.h" |
| +#include "chrome/browser/notifications/stub_notification_platform_bridge.h" |
| #include "chrome/test/base/testing_browser_process.h" |
| #include "chrome/test/base/testing_profile.h" |
| #include "chrome/test/base/testing_profile_manager.h" |
| @@ -85,21 +87,22 @@ class MockDesktopNotificationDelegate |
| class PlatformNotificationServiceTest : public testing::Test { |
| public: |
| void SetUp() override { |
| - profile_.reset(new TestingProfile()); |
| - ui_manager_.reset(new StubNotificationUIManager); |
| - display_service_.reset( |
| - new MessageCenterDisplayService(profile_.get(), ui_manager_.get())); |
| - service()->SetNotificationDisplayServiceForTesting(display_service_.get()); |
| profile_manager_.reset( |
| new TestingProfileManager(TestingBrowserProcess::GetGlobal())); |
| ASSERT_TRUE(profile_manager_->SetUp()); |
| + profile_ = profile_manager_->CreateTestingProfile("Miguel"); |
| + std::unique_ptr<NotificationUIManager> ui_manager( |
| + new StubNotificationUIManager); |
| + std::unique_ptr<NotificationPlatformBridge> notification_bridge( |
| + new StubNotificationPlatformBridge()); |
| + |
| + TestingBrowserProcess::GetGlobal()->SetNotificationUIManager( |
| + std::move(ui_manager)); |
| + TestingBrowserProcess::GetGlobal()->SetNotificationPlatformBridge( |
| + std::move(notification_bridge)); |
| } |
| void TearDown() override { |
| - service()->SetNotificationDisplayServiceForTesting(nullptr); |
| - display_service_.reset(); |
| - ui_manager_.reset(); |
| - profile_.reset(); |
| profile_manager_.reset(); |
| TestingBrowserProcess::DeleteInstance(); |
| } |
| @@ -136,24 +139,40 @@ class PlatformNotificationServiceTest : public testing::Test { |
| } |
| // Returns the Profile to be used for these tests. |
| - Profile* profile() const { return profile_.get(); } |
| + Profile* profile() const { return profile_; } |
| - // Returns the UI Manager on which notifications will be displayed. |
| - StubNotificationUIManager* ui_manager() const { return ui_manager_.get(); } |
| + size_t GetNotificationCount() const { |
| + std::set<std::string> notifications; |
| + EXPECT_TRUE(display_service()->GetDisplayed(¬ifications)); |
| + return notifications.size(); |
| + } |
| + |
| + Notification GetDisplayedNotification() { |
| +#if defined(OS_ANDROID) |
| + return static_cast<StubNotificationPlatformBridge*>( |
| + g_browser_process->notification_platform_bridge()) |
| + ->GetNotificationAt(0); |
| +#else |
| + return static_cast<StubNotificationUIManager*>( |
| + g_browser_process->notification_ui_manager()) |
| + ->GetNotificationAt(0); |
| +#endif |
|
Peter Beverloo
2016/04/25 13:37:29
This is why I'd like this test to use a mocked Not
Miguel Garcia
2016/04/25 17:19:59
Yeah I knew you would not like this one. I was hop
|
| + } |
| private: |
| - std::unique_ptr<TestingProfile> profile_; |
| - std::unique_ptr<StubNotificationUIManager> ui_manager_; |
| - std::unique_ptr<MessageCenterDisplayService> display_service_; |
| + NotificationDisplayService* display_service() const { |
| + return NotificationDisplayServiceFactory::GetForProfile(profile_); |
| + } |
| - std::unique_ptr<TestingProfileManager> profile_manager_; |
| + scoped_ptr<TestingProfileManager> profile_manager_; |
| + TestingProfile* profile_; |
| content::TestBrowserThreadBundle thread_bundle_; |
| }; |
| TEST_F(PlatformNotificationServiceTest, DisplayPageDisplayedEvent) { |
| auto* delegate = CreateSimplePageNotification(); |
| - EXPECT_EQ(1u, ui_manager()->GetNotificationCount()); |
| + EXPECT_EQ(1u, GetNotificationCount()); |
| EXPECT_TRUE(delegate->displayed()); |
| } |
| @@ -161,13 +180,12 @@ TEST_F(PlatformNotificationServiceTest, DisplayPageCloseClosure) { |
| base::Closure close_closure; |
| CreateSimplePageNotificationWithCloseClosure(&close_closure); |
| - EXPECT_EQ(1u, ui_manager()->GetNotificationCount()); |
| + EXPECT_EQ(1u, GetNotificationCount()); |
| ASSERT_FALSE(close_closure.is_null()); |
| close_closure.Run(); |
| - EXPECT_EQ(0u, ui_manager()->GetNotificationCount()); |
| - |
| + EXPECT_EQ(0u, GetNotificationCount()); |
| // Note that we cannot verify whether the closed event was called on the |
| // delegate given that it'd result in a use-after-free. |
| } |
| @@ -184,9 +202,9 @@ TEST_F(PlatformNotificationServiceTest, PersistentNotificationDisplay) { |
| profile(), kPersistentNotificationId, GURL("https://chrome.com/"), |
| notification_data, NotificationResources()); |
| - ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); |
| + ASSERT_EQ(1u, GetNotificationCount()); |
| - const Notification& notification = ui_manager()->GetNotificationAt(0); |
| + const Notification& notification = GetDisplayedNotification(); |
|
Peter Beverloo
2016/04/25 13:37:29
nit: no const& (GetDisplayedNotification returns b
Miguel Garcia
2016/04/25 17:19:59
Done.
|
| EXPECT_EQ("https://chrome.com/", notification.origin_url().spec()); |
| EXPECT_EQ("My notification's title", |
| base::UTF16ToUTF8(notification.title())); |
| @@ -194,7 +212,7 @@ TEST_F(PlatformNotificationServiceTest, PersistentNotificationDisplay) { |
| base::UTF16ToUTF8(notification.message())); |
| service()->ClosePersistentNotification(profile(), kPersistentNotificationId); |
| - EXPECT_EQ(0u, ui_manager()->GetNotificationCount()); |
| + EXPECT_EQ(0u, GetNotificationCount()); |
| } |
| #endif // !defined(OS_ANDROID) |
| @@ -215,9 +233,9 @@ TEST_F(PlatformNotificationServiceTest, DisplayPageNotificationMatches) { |
| notification_data, NotificationResources(), |
| base::WrapUnique(delegate), nullptr); |
| - ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); |
| + ASSERT_EQ(1u, GetNotificationCount()); |
| - const Notification& notification = ui_manager()->GetNotificationAt(0); |
| + const Notification& notification = GetDisplayedNotification(); |
| EXPECT_EQ("https://chrome.com/", notification.origin_url().spec()); |
| EXPECT_EQ("My notification's title", |
| base::UTF16ToUTF8(notification.title())); |
| @@ -251,9 +269,9 @@ TEST_F(PlatformNotificationServiceTest, DisplayPersistentNotificationMatches) { |
| profile(), 0u /* persistent notification */, GURL("https://chrome.com/"), |
| notification_data, notification_resources); |
| - ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); |
| + ASSERT_EQ(1u, GetNotificationCount()); |
| - const Notification& notification = ui_manager()->GetNotificationAt(0); |
| + const Notification& notification = GetDisplayedNotification(); |
| EXPECT_EQ("https://chrome.com/", notification.origin_url().spec()); |
| EXPECT_EQ("My notification's title", base::UTF16ToUTF8(notification.title())); |
| EXPECT_EQ("Hello, world!", base::UTF16ToUTF8(notification.message())); |