Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Side by Side Diff: content/child/notifications/notification_data_conversions_unittest.cc

Issue 2261283002: Add Notification images (Blink + desktop implementation) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Check IPC drawsNothing rather than isNull Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/child/notifications/notification_data_conversions.h" 5 #include "content/child/notifications/notification_data_conversions.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "content/public/common/platform_notification_data.h" 12 #include "content/public/common/platform_notification_data.h"
13 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "third_party/WebKit/public/platform/WebString.h" 15 #include "third_party/WebKit/public/platform/WebString.h"
16 #include "third_party/WebKit/public/platform/WebURL.h" 16 #include "third_party/WebKit/public/platform/WebURL.h"
17 #include "third_party/WebKit/public/platform/modules/notifications/WebNotificati onData.h" 17 #include "third_party/WebKit/public/platform/modules/notifications/WebNotificati onData.h"
18 18
19 namespace content { 19 namespace content {
20 20
21 const char kNotificationTitle[] = "My Notification"; 21 const char kNotificationTitle[] = "My Notification";
22 const char kNotificationLang[] = "nl"; 22 const char kNotificationLang[] = "nl";
23 const char kNotificationBody[] = "Hello, world!"; 23 const char kNotificationBody[] = "Hello, world!";
24 const char kNotificationTag[] = "my_tag"; 24 const char kNotificationTag[] = "my_tag";
25 const char kNotificationImageUrl[] = "https://example.com/image.jpg";
25 const char kNotificationIconUrl[] = "https://example.com/icon.png"; 26 const char kNotificationIconUrl[] = "https://example.com/icon.png";
26 const char kNotificationBadgeUrl[] = "https://example.com/badge.png"; 27 const char kNotificationBadgeUrl[] = "https://example.com/badge.png";
27 const int kNotificationVibrationPattern[] = {100, 200, 300}; 28 const int kNotificationVibrationPattern[] = {100, 200, 300};
28 const double kNotificationTimestamp = 621046800.; 29 const double kNotificationTimestamp = 621046800.;
29 const unsigned char kNotificationData[] = {0xdf, 0xff, 0x0, 0x0, 0xff, 0xdf}; 30 const unsigned char kNotificationData[] = {0xdf, 0xff, 0x0, 0x0, 0xff, 0xdf};
30 const char kAction1Name[] = "btn1"; 31 const char kAction1Name[] = "btn1";
31 const char kAction1Title[] = "Button 1"; 32 const char kAction1Title[] = "Button 1";
32 const char kAction1IconUrl[] = "https://example.com/action_icon_1.png"; 33 const char kAction1IconUrl[] = "https://example.com/action_icon_1.png";
33 const char kAction1Placeholder[] = "Run into the... friendliness pellets."; 34 const char kAction1Placeholder[] = "Run into the... friendliness pellets.";
34 const char kAction2Name[] = "btn2"; 35 const char kAction2Name[] = "btn2";
35 const char kAction2Title[] = "Button 2"; 36 const char kAction2Title[] = "Button 2";
36 const char kAction2IconUrl[] = "https://example.com/action_icon_2.png"; 37 const char kAction2IconUrl[] = "https://example.com/action_icon_2.png";
37 38
38 TEST(NotificationDataConversionsTest, ToPlatformNotificationData) { 39 TEST(NotificationDataConversionsTest, ToPlatformNotificationData) {
39 blink::WebNotificationData web_data; 40 blink::WebNotificationData web_data;
40 web_data.title = blink::WebString::fromUTF8(kNotificationTitle); 41 web_data.title = blink::WebString::fromUTF8(kNotificationTitle);
41 web_data.direction = blink::WebNotificationData::DirectionLeftToRight; 42 web_data.direction = blink::WebNotificationData::DirectionLeftToRight;
42 web_data.lang = blink::WebString::fromUTF8(kNotificationLang); 43 web_data.lang = blink::WebString::fromUTF8(kNotificationLang);
43 web_data.body = blink::WebString::fromUTF8(kNotificationBody); 44 web_data.body = blink::WebString::fromUTF8(kNotificationBody);
44 web_data.tag = blink::WebString::fromUTF8(kNotificationTag); 45 web_data.tag = blink::WebString::fromUTF8(kNotificationTag);
46 web_data.image = blink::WebURL(GURL(kNotificationImageUrl));
45 web_data.icon = blink::WebURL(GURL(kNotificationIconUrl)); 47 web_data.icon = blink::WebURL(GURL(kNotificationIconUrl));
46 web_data.badge = blink::WebURL(GURL(kNotificationBadgeUrl)); 48 web_data.badge = blink::WebURL(GURL(kNotificationBadgeUrl));
47 web_data.vibrate = blink::WebVector<int>( 49 web_data.vibrate = blink::WebVector<int>(
48 kNotificationVibrationPattern, arraysize(kNotificationVibrationPattern)); 50 kNotificationVibrationPattern, arraysize(kNotificationVibrationPattern));
49 web_data.timestamp = kNotificationTimestamp; 51 web_data.timestamp = kNotificationTimestamp;
50 web_data.renotify = true; 52 web_data.renotify = true;
51 web_data.silent = true; 53 web_data.silent = true;
52 web_data.requireInteraction = true; 54 web_data.requireInteraction = true;
53 web_data.data = 55 web_data.data =
54 blink::WebVector<char>(kNotificationData, arraysize(kNotificationData)); 56 blink::WebVector<char>(kNotificationData, arraysize(kNotificationData));
(...skipping 12 matching lines...) Expand all
67 web_data.actions[1].icon = blink::WebURL(GURL(kAction2IconUrl)); 69 web_data.actions[1].icon = blink::WebURL(GURL(kAction2IconUrl));
68 web_data.actions[1].placeholder = blink::WebString(); 70 web_data.actions[1].placeholder = blink::WebString();
69 71
70 PlatformNotificationData platform_data = ToPlatformNotificationData(web_data); 72 PlatformNotificationData platform_data = ToPlatformNotificationData(web_data);
71 EXPECT_EQ(base::ASCIIToUTF16(kNotificationTitle), platform_data.title); 73 EXPECT_EQ(base::ASCIIToUTF16(kNotificationTitle), platform_data.title);
72 EXPECT_EQ(PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT, 74 EXPECT_EQ(PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT,
73 platform_data.direction); 75 platform_data.direction);
74 EXPECT_EQ(kNotificationLang, platform_data.lang); 76 EXPECT_EQ(kNotificationLang, platform_data.lang);
75 EXPECT_EQ(base::ASCIIToUTF16(kNotificationBody), platform_data.body); 77 EXPECT_EQ(base::ASCIIToUTF16(kNotificationBody), platform_data.body);
76 EXPECT_EQ(kNotificationTag, platform_data.tag); 78 EXPECT_EQ(kNotificationTag, platform_data.tag);
79 EXPECT_EQ(kNotificationImageUrl, platform_data.image.spec());
77 EXPECT_EQ(kNotificationIconUrl, platform_data.icon.spec()); 80 EXPECT_EQ(kNotificationIconUrl, platform_data.icon.spec());
78 EXPECT_EQ(kNotificationBadgeUrl, platform_data.badge.spec()); 81 EXPECT_EQ(kNotificationBadgeUrl, platform_data.badge.spec());
79 EXPECT_TRUE(platform_data.renotify); 82 EXPECT_TRUE(platform_data.renotify);
80 EXPECT_TRUE(platform_data.silent); 83 EXPECT_TRUE(platform_data.silent);
81 EXPECT_TRUE(platform_data.require_interaction); 84 EXPECT_TRUE(platform_data.require_interaction);
82 85
83 EXPECT_THAT(platform_data.vibration_pattern, 86 EXPECT_THAT(platform_data.vibration_pattern,
84 testing::ElementsAreArray(kNotificationVibrationPattern)); 87 testing::ElementsAreArray(kNotificationVibrationPattern));
85 88
86 EXPECT_DOUBLE_EQ(kNotificationTimestamp, platform_data.timestamp.ToJsTime()); 89 EXPECT_DOUBLE_EQ(kNotificationTimestamp, platform_data.timestamp.ToJsTime());
(...skipping 24 matching lines...) Expand all
111 114
112 std::vector<char> developer_data( 115 std::vector<char> developer_data(
113 kNotificationData, kNotificationData + arraysize(kNotificationData)); 116 kNotificationData, kNotificationData + arraysize(kNotificationData));
114 117
115 PlatformNotificationData platform_data; 118 PlatformNotificationData platform_data;
116 platform_data.title = base::ASCIIToUTF16(kNotificationTitle); 119 platform_data.title = base::ASCIIToUTF16(kNotificationTitle);
117 platform_data.direction = PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT; 120 platform_data.direction = PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT;
118 platform_data.lang = kNotificationLang; 121 platform_data.lang = kNotificationLang;
119 platform_data.body = base::ASCIIToUTF16(kNotificationBody); 122 platform_data.body = base::ASCIIToUTF16(kNotificationBody);
120 platform_data.tag = kNotificationTag; 123 platform_data.tag = kNotificationTag;
124 platform_data.image = GURL(kNotificationImageUrl);
121 platform_data.icon = GURL(kNotificationIconUrl); 125 platform_data.icon = GURL(kNotificationIconUrl);
122 platform_data.badge = GURL(kNotificationBadgeUrl); 126 platform_data.badge = GURL(kNotificationBadgeUrl);
123 platform_data.vibration_pattern = vibration_pattern; 127 platform_data.vibration_pattern = vibration_pattern;
124 platform_data.timestamp = base::Time::FromJsTime(kNotificationTimestamp); 128 platform_data.timestamp = base::Time::FromJsTime(kNotificationTimestamp);
125 platform_data.renotify = true; 129 platform_data.renotify = true;
126 platform_data.silent = true; 130 platform_data.silent = true;
127 platform_data.require_interaction = true; 131 platform_data.require_interaction = true;
128 platform_data.data = developer_data; 132 platform_data.data = developer_data;
129 platform_data.actions.resize(2); 133 platform_data.actions.resize(2);
130 platform_data.actions[0].type = PLATFORM_NOTIFICATION_ACTION_TYPE_BUTTON; 134 platform_data.actions[0].type = PLATFORM_NOTIFICATION_ACTION_TYPE_BUTTON;
131 platform_data.actions[0].action = kAction1Name; 135 platform_data.actions[0].action = kAction1Name;
132 platform_data.actions[0].title = base::ASCIIToUTF16(kAction1Title); 136 platform_data.actions[0].title = base::ASCIIToUTF16(kAction1Title);
133 platform_data.actions[0].icon = GURL(kAction1IconUrl); 137 platform_data.actions[0].icon = GURL(kAction1IconUrl);
134 platform_data.actions[0].placeholder = 138 platform_data.actions[0].placeholder =
135 base::NullableString16(base::ASCIIToUTF16(kAction1Placeholder), false); 139 base::NullableString16(base::ASCIIToUTF16(kAction1Placeholder), false);
136 platform_data.actions[1].type = PLATFORM_NOTIFICATION_ACTION_TYPE_TEXT; 140 platform_data.actions[1].type = PLATFORM_NOTIFICATION_ACTION_TYPE_TEXT;
137 platform_data.actions[1].action = kAction2Name; 141 platform_data.actions[1].action = kAction2Name;
138 platform_data.actions[1].title = base::ASCIIToUTF16(kAction2Title); 142 platform_data.actions[1].title = base::ASCIIToUTF16(kAction2Title);
139 platform_data.actions[1].icon = GURL(kAction2IconUrl); 143 platform_data.actions[1].icon = GURL(kAction2IconUrl);
140 platform_data.actions[1].placeholder = base::NullableString16(); 144 platform_data.actions[1].placeholder = base::NullableString16();
141 145
142 blink::WebNotificationData web_data = ToWebNotificationData(platform_data); 146 blink::WebNotificationData web_data = ToWebNotificationData(platform_data);
143 EXPECT_EQ(kNotificationTitle, web_data.title); 147 EXPECT_EQ(kNotificationTitle, web_data.title);
144 EXPECT_EQ(blink::WebNotificationData::DirectionLeftToRight, 148 EXPECT_EQ(blink::WebNotificationData::DirectionLeftToRight,
145 web_data.direction); 149 web_data.direction);
146 EXPECT_EQ(kNotificationLang, web_data.lang); 150 EXPECT_EQ(kNotificationLang, web_data.lang);
147 EXPECT_EQ(kNotificationBody, web_data.body); 151 EXPECT_EQ(kNotificationBody, web_data.body);
148 EXPECT_EQ(kNotificationTag, web_data.tag); 152 EXPECT_EQ(kNotificationTag, web_data.tag);
153 EXPECT_EQ(kNotificationImageUrl, web_data.image.string());
149 EXPECT_EQ(kNotificationIconUrl, web_data.icon.string()); 154 EXPECT_EQ(kNotificationIconUrl, web_data.icon.string());
150 EXPECT_EQ(kNotificationBadgeUrl, web_data.badge.string()); 155 EXPECT_EQ(kNotificationBadgeUrl, web_data.badge.string());
151 156
152 ASSERT_EQ(vibration_pattern.size(), web_data.vibrate.size()); 157 ASSERT_EQ(vibration_pattern.size(), web_data.vibrate.size());
153 for (size_t i = 0; i < vibration_pattern.size(); ++i) 158 for (size_t i = 0; i < vibration_pattern.size(); ++i)
154 EXPECT_EQ(vibration_pattern[i], web_data.vibrate[i]); 159 EXPECT_EQ(vibration_pattern[i], web_data.vibrate[i]);
155 160
156 EXPECT_DOUBLE_EQ(kNotificationTimestamp, web_data.timestamp); 161 EXPECT_DOUBLE_EQ(kNotificationTimestamp, web_data.timestamp);
157 EXPECT_TRUE(web_data.renotify); 162 EXPECT_TRUE(web_data.renotify);
158 EXPECT_TRUE(web_data.silent); 163 EXPECT_TRUE(web_data.silent);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 blink::WebNotificationData web_data; 242 blink::WebNotificationData web_data;
238 web_data.timestamp = 0; 243 web_data.timestamp = 0;
239 244
240 blink::WebNotificationData copied_data = 245 blink::WebNotificationData copied_data =
241 ToWebNotificationData(ToPlatformNotificationData(web_data)); 246 ToWebNotificationData(ToPlatformNotificationData(web_data));
242 EXPECT_EQ(web_data.timestamp, copied_data.timestamp); 247 EXPECT_EQ(web_data.timestamp, copied_data.timestamp);
243 } 248 }
244 } 249 }
245 250
246 } // namespace content 251 } // namespace content
OLDNEW
« no previous file with comments | « content/child/notifications/notification_data_conversions.cc ('k') | content/child/notifications/notification_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698