1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "content/child/notifications/notification_data_conversions.h"
9 #include "base/strings/utf_string_conversions.h"
10 #include "content/public/common/platform_notification_data.h"
11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/WebKit/public/platform/WebString.h"
14 #include "third_party/WebKit/public/platform/WebURL.h"
15 #include "third_party/WebKit/public/platform/modules/notifications/WebNotificationData.h"
19 const char kNotificationTitle
[] = "My Notification";
20 const char kNotificationLang
[] = "nl";
21 const char kNotificationBody
[] = "Hello, world!";
22 const char kNotificationTag
[] = "my_tag";
23 const char kNotificationIconUrl
[] = "https://example.com/icon.png";
24 const int kNotificationVibrationPattern
[] = { 100, 200, 300 };
25 const unsigned char kNotificationData
[] = { 0xdf, 0xff, 0x0, 0x0, 0xff, 0xdf };
27 TEST(NotificationDataConversionsTest
, ToPlatformNotificationData
) {
28 std::vector
<int> vibration_pattern(
29 kNotificationVibrationPattern
,
30 kNotificationVibrationPattern
+ arraysize(kNotificationVibrationPattern
));
32 std::vector
<char> developer_data(
33 kNotificationData
, kNotificationData
+ arraysize(kNotificationData
));
35 blink::WebNotificationData
web_data(
36 blink::WebString::fromUTF8(kNotificationTitle
),
37 blink::WebNotificationData::DirectionLeftToRight
,
38 blink::WebString::fromUTF8(kNotificationLang
),
39 blink::WebString::fromUTF8(kNotificationBody
),
40 blink::WebString::fromUTF8(kNotificationTag
),
41 blink::WebURL(GURL(kNotificationIconUrl
)),
42 blink::WebVector
<int>(vibration_pattern
),
44 blink::WebVector
<char>(developer_data
));
46 PlatformNotificationData platform_data
= ToPlatformNotificationData(web_data
);
47 EXPECT_EQ(base::ASCIIToUTF16(kNotificationTitle
), platform_data
.title
);
48 EXPECT_EQ(PlatformNotificationData::NotificationDirectionLeftToRight
,
49 platform_data
.direction
);
50 EXPECT_EQ(kNotificationLang
, platform_data
.lang
);
51 EXPECT_EQ(base::ASCIIToUTF16(kNotificationBody
), platform_data
.body
);
52 EXPECT_EQ(kNotificationTag
, platform_data
.tag
);
53 EXPECT_EQ(kNotificationIconUrl
, platform_data
.icon
.spec());
54 EXPECT_TRUE(platform_data
.silent
);
56 EXPECT_THAT(platform_data
.vibration_pattern
,
57 testing::ElementsAreArray(kNotificationVibrationPattern
));
59 ASSERT_EQ(developer_data
.size(), platform_data
.data
.size());
60 for (size_t i
= 0; i
< developer_data
.size(); ++i
)
61 EXPECT_EQ(developer_data
[i
], platform_data
.data
[i
]);
64 TEST(NotificationDataConversionsTest
,
65 ToPlatformNotificationDataDirectionality
) {
66 blink::WebNotificationData web_data
;
67 web_data
.direction
= blink::WebNotificationData::DirectionLeftToRight
;
69 PlatformNotificationData platform_data
= ToPlatformNotificationData(web_data
);
70 EXPECT_EQ(PlatformNotificationData::NotificationDirectionLeftToRight
,
71 platform_data
.direction
);
73 web_data
.direction
= blink::WebNotificationData::DirectionRightToLeft
;
75 platform_data
= ToPlatformNotificationData(web_data
);
76 EXPECT_EQ(PlatformNotificationData::NotificationDirectionRightToLeft
,
77 platform_data
.direction
);
80 TEST(NotificationDataConversionsTest
, ToWebNotificationData
) {
81 std::vector
<int> vibration_pattern(
82 kNotificationVibrationPattern
,
83 kNotificationVibrationPattern
+ arraysize(kNotificationVibrationPattern
));
85 std::vector
<char> developer_data(
86 kNotificationData
, kNotificationData
+ arraysize(kNotificationData
));
88 PlatformNotificationData platform_data
;
89 platform_data
.title
= base::ASCIIToUTF16(kNotificationTitle
);
90 platform_data
.direction
=
91 PlatformNotificationData::NotificationDirectionLeftToRight
;
92 platform_data
.lang
= kNotificationLang
;
93 platform_data
.body
= base::ASCIIToUTF16(kNotificationBody
);
94 platform_data
.tag
= kNotificationTag
;
95 platform_data
.icon
= GURL(kNotificationIconUrl
);
96 platform_data
.vibration_pattern
= vibration_pattern
;
97 platform_data
.silent
= true;
98 platform_data
.data
= developer_data
;
100 blink::WebNotificationData web_data
= ToWebNotificationData(platform_data
);
101 EXPECT_EQ(kNotificationTitle
, web_data
.title
);
102 EXPECT_EQ(blink::WebNotificationData::DirectionLeftToRight
,
104 EXPECT_EQ(kNotificationLang
, web_data
.lang
);
105 EXPECT_EQ(kNotificationBody
, web_data
.body
);
106 EXPECT_EQ(kNotificationTag
, web_data
.tag
);
107 EXPECT_EQ(kNotificationIconUrl
, web_data
.icon
.string());
109 ASSERT_EQ(vibration_pattern
.size(), web_data
.vibrate
.size());
110 for (size_t i
= 0; i
< vibration_pattern
.size(); ++i
)
111 EXPECT_EQ(vibration_pattern
[i
], web_data
.vibrate
[i
]);
113 EXPECT_TRUE(web_data
.silent
);
115 ASSERT_EQ(developer_data
.size(), web_data
.data
.size());
116 for (size_t i
= 0; i
< developer_data
.size(); ++i
)
117 EXPECT_EQ(developer_data
[i
], web_data
.data
[i
]);
120 TEST(NotificationDataConversionsTest
, ToWebNotificationDataDirectionality
) {
121 PlatformNotificationData platform_data
;
122 platform_data
.direction
=
123 PlatformNotificationData::NotificationDirectionLeftToRight
;
125 blink::WebNotificationData web_data
= ToWebNotificationData(platform_data
);
126 EXPECT_EQ(blink::WebNotificationData::DirectionLeftToRight
,
129 platform_data
.direction
=
130 PlatformNotificationData::NotificationDirectionRightToLeft
;
132 web_data
= ToWebNotificationData(platform_data
);
133 EXPECT_EQ(blink::WebNotificationData::DirectionRightToLeft
,
137 } // namespace content