Index: chrome/browser/notifications/notification_platform_bridge_linux_unittest.cc |
diff --git a/chrome/browser/notifications/notification_platform_bridge_linux_unittest.cc b/chrome/browser/notifications/notification_platform_bridge_linux_unittest.cc |
index 1ff1192a533a0b7c321d3ef5dfc09345d76bd1f1..aeae250f36ad30a3e50d2f4597dea4e09b2bafb3 100644 |
--- a/chrome/browser/notifications/notification_platform_bridge_linux_unittest.cc |
+++ b/chrome/browser/notifications/notification_platform_bridge_linux_unittest.cc |
@@ -193,6 +193,10 @@ ACTION(OnCloseNotification) { |
return dbus::Response::CreateEmpty().release(); |
} |
+ACTION_P(OnNotificationBridgeReady, success) { |
+ EXPECT_EQ(success, arg0); |
+} |
+ |
// Matches a method call to the specified dbus target. |
MATCHER_P(Calls, member, "") { |
return arg->GetMember() == member; |
@@ -210,30 +214,9 @@ class NotificationPlatformBridgeLinuxTest : public testing::Test { |
mock_notification_proxy_ = new StrictMock<dbus::MockObjectProxy>( |
mock_bus_.get(), kFreedesktopNotificationsName, |
dbus::ObjectPath(kFreedesktopNotificationsPath)); |
- |
- EXPECT_CALL(*mock_bus_.get(), |
- GetObjectProxy(kFreedesktopNotificationsName, |
- dbus::ObjectPath(kFreedesktopNotificationsPath))) |
- .WillOnce(Return(mock_notification_proxy_.get())); |
- |
- EXPECT_CALL(*mock_notification_proxy_.get(), |
- MockCallMethodAndBlock(Calls("GetCapabilities"), _)) |
- .WillOnce(OnGetCapabilities(std::vector<std::string>{ |
- "body", "body-hyperlinks", "body-images", "body-markup"})); |
- |
- EXPECT_CALL( |
- *mock_notification_proxy_.get(), |
- ConnectToSignal(kFreedesktopNotificationsName, "ActionInvoked", _, _)) |
- .WillOnce(RegisterSignalCallback(&action_invoked_callback_)); |
- |
- EXPECT_CALL(*mock_notification_proxy_.get(), |
- ConnectToSignal(kFreedesktopNotificationsName, |
- "NotificationClosed", _, _)) |
- .WillOnce(RegisterSignalCallback(¬ification_closed_callback_)); |
} |
void TearDown() override { |
- EXPECT_CALL(*mock_bus_.get(), ShutdownAndBlock()); |
notification_bridge_linux_->CleanUp(); |
content::RunAllBlockingPoolTasksUntilIdle(); |
notification_bridge_linux_.reset(); |
@@ -243,11 +226,55 @@ class NotificationPlatformBridgeLinuxTest : public testing::Test { |
protected: |
void CreateNotificationBridgeLinux() { |
+ CreateNotificationBridgeLinux( |
+ std::vector<std::string>{"actions", "body", "body-hyperlinks", |
+ "body-images", "body-markup"}, |
+ true, true, true); |
+ } |
+ |
+ void CreateNotificationBridgeLinux( |
+ const std::vector<std::string>& capabilities, |
+ bool expect_init_success, |
+ bool expect_shutdown, |
+ bool connect_signals) { |
+ EXPECT_CALL(*mock_bus_.get(), |
+ GetObjectProxy(kFreedesktopNotificationsName, |
+ dbus::ObjectPath(kFreedesktopNotificationsPath))) |
+ .WillOnce(Return(mock_notification_proxy_.get())); |
+ |
+ EXPECT_CALL(*mock_notification_proxy_.get(), |
+ MockCallMethodAndBlock(Calls("GetCapabilities"), _)) |
+ .WillOnce(OnGetCapabilities(capabilities)); |
+ |
+ if (connect_signals) { |
+ EXPECT_CALL( |
+ *mock_notification_proxy_.get(), |
+ ConnectToSignal(kFreedesktopNotificationsName, "ActionInvoked", _, _)) |
+ .WillOnce(RegisterSignalCallback(&action_invoked_callback_)); |
+ |
+ EXPECT_CALL(*mock_notification_proxy_.get(), |
+ ConnectToSignal(kFreedesktopNotificationsName, |
+ "NotificationClosed", _, _)) |
+ .WillOnce(RegisterSignalCallback(¬ification_closed_callback_)); |
+ } |
+ |
+ EXPECT_CALL(*this, MockableNotificationBridgeReadyCallback(_)) |
+ .WillOnce(OnNotificationBridgeReady(expect_init_success)); |
+ |
+ if (expect_shutdown) |
+ EXPECT_CALL(*mock_bus_.get(), ShutdownAndBlock()); |
+ |
notification_bridge_linux_ = |
base::WrapUnique(new NotificationPlatformBridgeLinux(mock_bus_)); |
+ notification_bridge_linux_->SetReadyCallback( |
+ base::BindOnce(&NotificationPlatformBridgeLinuxTest:: |
+ MockableNotificationBridgeReadyCallback, |
+ base::Unretained(this))); |
content::RunAllBlockingPoolTasksUntilIdle(); |
} |
+ MOCK_METHOD1(MockableNotificationBridgeReadyCallback, void(bool)); |
+ |
content::TestBrowserThreadBundle thread_bundle_; |
scoped_refptr<dbus::MockBus> mock_bus_; |
@@ -407,3 +434,13 @@ TEST_F(NotificationPlatformBridgeLinuxTest, NotificationAttribution) { |
.SetOriginUrl(GURL("https://google.com/search?q=test&ie=UTF8")) |
.GetResult()); |
} |
+ |
+TEST_F(NotificationPlatformBridgeLinuxTest, MissingActionsCapability) { |
+ CreateNotificationBridgeLinux(std::vector<std::string>{"body"}, false, true, |
+ false); |
+} |
+ |
+TEST_F(NotificationPlatformBridgeLinuxTest, MissingBodyCapability) { |
+ CreateNotificationBridgeLinux(std::vector<std::string>{"actions"}, false, |
+ true, false); |
+} |