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 a92d231679d2de0d1e0d548deb359675edbb92ef..89cc356e971d1800c3a0378f9e4526bbdb997b28 100644 |
--- a/chrome/browser/notifications/notification_platform_bridge_linux_unittest.cc |
+++ b/chrome/browser/notifications/notification_platform_bridge_linux_unittest.cc |
@@ -53,6 +53,11 @@ class NotificationBuilder { |
return *this; |
} |
+ NotificationBuilder& SetNeverTimeout(bool never_timeout) { |
+ notification_.set_never_timeout(never_timeout); |
+ return *this; |
+ } |
+ |
NotificationBuilder& SetProgress(int progress) { |
notification_.set_progress(progress); |
return *this; |
@@ -75,6 +80,7 @@ class NotificationBuilder { |
struct NotificationRequest { |
std::string summary; |
std::string body; |
+ int32_t expire_timeout; |
Peter Beverloo
2017/05/11 15:47:01
nit: initialize to 0 since it's a scalar
Tom (Use chromium acct)
2017/05/11 18:15:05
Done.
|
}; |
NotificationRequest ParseRequest(dbus::MethodCall* method_call) { |
@@ -85,7 +91,6 @@ NotificationRequest ParseRequest(dbus::MethodCall* method_call) { |
dbus::MessageReader reader(method_call); |
std::string str; |
uint32_t uint32; |
- int32_t int32; |
EXPECT_TRUE(reader.PopString(&str)); // app_name |
EXPECT_TRUE(reader.PopUint32(&uint32)); // replaces_id |
EXPECT_TRUE(reader.PopString(&str)); // app_icon |
@@ -115,7 +120,7 @@ NotificationRequest ParseRequest(dbus::MethodCall* method_call) { |
} |
} |
- EXPECT_TRUE(reader.PopInt32(&int32)); // expire_timeout |
+ EXPECT_TRUE(reader.PopInt32(&request.expire_timeout)); |
EXPECT_FALSE(reader.HasMoreData()); |
return request; |
@@ -299,3 +304,28 @@ TEST_F(NotificationPlatformBridgeLinuxTest, NotificationListItemsInBody) { |
{base::UTF8ToUTF16("def"), base::UTF8ToUTF16("456")}}) |
.GetResult()); |
} |
+ |
+TEST_F(NotificationPlatformBridgeLinuxTest, NotificationTimeouts) { |
+ const int32_t kExpireTimeoutDefault = -1; |
+ const int32_t kExpireTimeoutNever = 0; |
+ EXPECT_CALL(*mock_notification_proxy_.get(), |
+ MockCallMethodAndBlock(Calls("Notify"), _)) |
+ .WillOnce(OnNotify( |
+ [=](const NotificationRequest& request) { |
+ EXPECT_EQ(kExpireTimeoutDefault, request.expire_timeout); |
+ }, |
+ 1)) |
+ .WillOnce(OnNotify( |
+ [=](const NotificationRequest& request) { |
+ EXPECT_EQ(kExpireTimeoutNever, request.expire_timeout); |
+ }, |
+ 2)); |
+ |
+ CreateNotificationBridgeLinux(); |
+ notification_bridge_linux_->Display( |
+ NotificationCommon::PERSISTENT, "", "", false, |
+ NotificationBuilder("1").SetNeverTimeout(false).GetResult()); |
+ notification_bridge_linux_->Display( |
+ NotificationCommon::PERSISTENT, "", "", false, |
+ NotificationBuilder("2").SetNeverTimeout(true).GetResult()); |
+} |