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

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

Issue 1388483002: Implement the Notification `timestamp` property (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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 kNotificationIconUrl[] = "https://example.com/icon.png"; 25 const char kNotificationIconUrl[] = "https://example.com/icon.png";
26 const int kNotificationVibrationPattern[] = {100, 200, 300}; 26 const int kNotificationVibrationPattern[] = {100, 200, 300};
27 const double kNotificationTimestamp = 621046800.;
27 const unsigned char kNotificationData[] = {0xdf, 0xff, 0x0, 0x0, 0xff, 0xdf}; 28 const unsigned char kNotificationData[] = {0xdf, 0xff, 0x0, 0x0, 0xff, 0xdf};
28 const char kAction1Name[] = "btn1"; 29 const char kAction1Name[] = "btn1";
29 const char kAction1Title[] = "Button 1"; 30 const char kAction1Title[] = "Button 1";
30 const char kAction2Name[] = "btn2"; 31 const char kAction2Name[] = "btn2";
31 const char kAction2Title[] = "Button 2"; 32 const char kAction2Title[] = "Button 2";
32 33
33 TEST(NotificationDataConversionsTest, ToPlatformNotificationData) { 34 TEST(NotificationDataConversionsTest, ToPlatformNotificationData) {
34 blink::WebNotificationData web_data; 35 blink::WebNotificationData web_data;
35 web_data.title = blink::WebString::fromUTF8(kNotificationTitle); 36 web_data.title = blink::WebString::fromUTF8(kNotificationTitle);
36 web_data.direction = blink::WebNotificationData::DirectionLeftToRight; 37 web_data.direction = blink::WebNotificationData::DirectionLeftToRight;
37 web_data.lang = blink::WebString::fromUTF8(kNotificationLang); 38 web_data.lang = blink::WebString::fromUTF8(kNotificationLang);
38 web_data.body = blink::WebString::fromUTF8(kNotificationBody); 39 web_data.body = blink::WebString::fromUTF8(kNotificationBody);
39 web_data.tag = blink::WebString::fromUTF8(kNotificationTag); 40 web_data.tag = blink::WebString::fromUTF8(kNotificationTag);
40 web_data.icon = blink::WebURL(GURL(kNotificationIconUrl)); 41 web_data.icon = blink::WebURL(GURL(kNotificationIconUrl));
41 web_data.vibrate = blink::WebVector<int>( 42 web_data.vibrate = blink::WebVector<int>(
42 kNotificationVibrationPattern, arraysize(kNotificationVibrationPattern)); 43 kNotificationVibrationPattern, arraysize(kNotificationVibrationPattern));
44 web_data.timestamp = kNotificationTimestamp;
43 web_data.silent = true; 45 web_data.silent = true;
44 web_data.requireInteraction = true; 46 web_data.requireInteraction = true;
45 web_data.data = 47 web_data.data =
46 blink::WebVector<char>(kNotificationData, arraysize(kNotificationData)); 48 blink::WebVector<char>(kNotificationData, arraysize(kNotificationData));
47 49
48 web_data.actions = 50 web_data.actions =
49 blink::WebVector<blink::WebNotificationAction>(static_cast<size_t>(2)); 51 blink::WebVector<blink::WebNotificationAction>(static_cast<size_t>(2));
50 web_data.actions[0].action = blink::WebString::fromUTF8(kAction1Name); 52 web_data.actions[0].action = blink::WebString::fromUTF8(kAction1Name);
51 web_data.actions[0].title = blink::WebString::fromUTF8(kAction1Title); 53 web_data.actions[0].title = blink::WebString::fromUTF8(kAction1Title);
52 web_data.actions[1].action = blink::WebString::fromUTF8(kAction2Name); 54 web_data.actions[1].action = blink::WebString::fromUTF8(kAction2Name);
53 web_data.actions[1].title = blink::WebString::fromUTF8(kAction2Title); 55 web_data.actions[1].title = blink::WebString::fromUTF8(kAction2Title);
54 56
55 PlatformNotificationData platform_data = ToPlatformNotificationData(web_data); 57 PlatformNotificationData platform_data = ToPlatformNotificationData(web_data);
56 EXPECT_EQ(base::ASCIIToUTF16(kNotificationTitle), platform_data.title); 58 EXPECT_EQ(base::ASCIIToUTF16(kNotificationTitle), platform_data.title);
57 EXPECT_EQ(PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT, 59 EXPECT_EQ(PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT,
58 platform_data.direction); 60 platform_data.direction);
59 EXPECT_EQ(kNotificationLang, platform_data.lang); 61 EXPECT_EQ(kNotificationLang, platform_data.lang);
60 EXPECT_EQ(base::ASCIIToUTF16(kNotificationBody), platform_data.body); 62 EXPECT_EQ(base::ASCIIToUTF16(kNotificationBody), platform_data.body);
61 EXPECT_EQ(kNotificationTag, platform_data.tag); 63 EXPECT_EQ(kNotificationTag, platform_data.tag);
62 EXPECT_EQ(kNotificationIconUrl, platform_data.icon.spec()); 64 EXPECT_EQ(kNotificationIconUrl, platform_data.icon.spec());
63 EXPECT_TRUE(platform_data.silent); 65 EXPECT_TRUE(platform_data.silent);
64 EXPECT_TRUE(platform_data.require_interaction); 66 EXPECT_TRUE(platform_data.require_interaction);
65 67
66 EXPECT_THAT(platform_data.vibration_pattern, 68 EXPECT_THAT(platform_data.vibration_pattern,
67 testing::ElementsAreArray(kNotificationVibrationPattern)); 69 testing::ElementsAreArray(kNotificationVibrationPattern));
68 70
71 EXPECT_DOUBLE_EQ(kNotificationTimestamp, platform_data.timestamp.ToJsTime());
69 ASSERT_EQ(web_data.data.size(), platform_data.data.size()); 72 ASSERT_EQ(web_data.data.size(), platform_data.data.size());
70 for (size_t i = 0; i < web_data.data.size(); ++i) 73 for (size_t i = 0; i < web_data.data.size(); ++i)
71 EXPECT_EQ(web_data.data[i], platform_data.data[i]); 74 EXPECT_EQ(web_data.data[i], platform_data.data[i]);
72 ASSERT_EQ(web_data.actions.size(), platform_data.actions.size()); 75 ASSERT_EQ(web_data.actions.size(), platform_data.actions.size());
73 EXPECT_EQ(kAction1Name, platform_data.actions[0].action); 76 EXPECT_EQ(kAction1Name, platform_data.actions[0].action);
74 EXPECT_EQ(base::ASCIIToUTF16(kAction1Title), platform_data.actions[0].title); 77 EXPECT_EQ(base::ASCIIToUTF16(kAction1Title), platform_data.actions[0].title);
75 EXPECT_EQ(kAction2Name, platform_data.actions[1].action); 78 EXPECT_EQ(kAction2Name, platform_data.actions[1].action);
76 EXPECT_EQ(base::ASCIIToUTF16(kAction2Title), platform_data.actions[1].title); 79 EXPECT_EQ(base::ASCIIToUTF16(kAction2Title), platform_data.actions[1].title);
77 } 80 }
78 81
79 TEST(NotificationDataConversionsTest, ToWebNotificationData) { 82 TEST(NotificationDataConversionsTest, ToWebNotificationData) {
80 std::vector<int> vibration_pattern( 83 std::vector<int> vibration_pattern(
81 kNotificationVibrationPattern, 84 kNotificationVibrationPattern,
82 kNotificationVibrationPattern + arraysize(kNotificationVibrationPattern)); 85 kNotificationVibrationPattern + arraysize(kNotificationVibrationPattern));
83 86
84 std::vector<char> developer_data( 87 std::vector<char> developer_data(
85 kNotificationData, kNotificationData + arraysize(kNotificationData)); 88 kNotificationData, kNotificationData + arraysize(kNotificationData));
86 89
87 PlatformNotificationData platform_data; 90 PlatformNotificationData platform_data;
88 platform_data.title = base::ASCIIToUTF16(kNotificationTitle); 91 platform_data.title = base::ASCIIToUTF16(kNotificationTitle);
89 platform_data.direction = PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT; 92 platform_data.direction = PlatformNotificationData::DIRECTION_LEFT_TO_RIGHT;
90 platform_data.lang = kNotificationLang; 93 platform_data.lang = kNotificationLang;
91 platform_data.body = base::ASCIIToUTF16(kNotificationBody); 94 platform_data.body = base::ASCIIToUTF16(kNotificationBody);
92 platform_data.tag = kNotificationTag; 95 platform_data.tag = kNotificationTag;
93 platform_data.icon = GURL(kNotificationIconUrl); 96 platform_data.icon = GURL(kNotificationIconUrl);
94 platform_data.vibration_pattern = vibration_pattern; 97 platform_data.vibration_pattern = vibration_pattern;
98 platform_data.timestamp = base::Time::FromJsTime(kNotificationTimestamp);
95 platform_data.silent = true; 99 platform_data.silent = true;
96 platform_data.require_interaction = true; 100 platform_data.require_interaction = true;
97 platform_data.data = developer_data; 101 platform_data.data = developer_data;
98 platform_data.actions.resize(2); 102 platform_data.actions.resize(2);
99 platform_data.actions[0].action = kAction1Name; 103 platform_data.actions[0].action = kAction1Name;
100 platform_data.actions[0].title = base::ASCIIToUTF16(kAction1Title); 104 platform_data.actions[0].title = base::ASCIIToUTF16(kAction1Title);
101 platform_data.actions[1].action = kAction2Name; 105 platform_data.actions[1].action = kAction2Name;
102 platform_data.actions[1].title = base::ASCIIToUTF16(kAction2Title); 106 platform_data.actions[1].title = base::ASCIIToUTF16(kAction2Title);
103 107
104 blink::WebNotificationData web_data = ToWebNotificationData(platform_data); 108 blink::WebNotificationData web_data = ToWebNotificationData(platform_data);
105 EXPECT_EQ(kNotificationTitle, web_data.title); 109 EXPECT_EQ(kNotificationTitle, web_data.title);
106 EXPECT_EQ(blink::WebNotificationData::DirectionLeftToRight, 110 EXPECT_EQ(blink::WebNotificationData::DirectionLeftToRight,
107 web_data.direction); 111 web_data.direction);
108 EXPECT_EQ(kNotificationLang, web_data.lang); 112 EXPECT_EQ(kNotificationLang, web_data.lang);
109 EXPECT_EQ(kNotificationBody, web_data.body); 113 EXPECT_EQ(kNotificationBody, web_data.body);
110 EXPECT_EQ(kNotificationTag, web_data.tag); 114 EXPECT_EQ(kNotificationTag, web_data.tag);
111 EXPECT_EQ(kNotificationIconUrl, web_data.icon.string()); 115 EXPECT_EQ(kNotificationIconUrl, web_data.icon.string());
112 116
113 ASSERT_EQ(vibration_pattern.size(), web_data.vibrate.size()); 117 ASSERT_EQ(vibration_pattern.size(), web_data.vibrate.size());
114 for (size_t i = 0; i < vibration_pattern.size(); ++i) 118 for (size_t i = 0; i < vibration_pattern.size(); ++i)
115 EXPECT_EQ(vibration_pattern[i], web_data.vibrate[i]); 119 EXPECT_EQ(vibration_pattern[i], web_data.vibrate[i]);
116 120
121 EXPECT_DOUBLE_EQ(kNotificationTimestamp, web_data.timestamp);
117 EXPECT_TRUE(web_data.silent); 122 EXPECT_TRUE(web_data.silent);
118 EXPECT_TRUE(web_data.requireInteraction); 123 EXPECT_TRUE(web_data.requireInteraction);
119 124
120 ASSERT_EQ(developer_data.size(), web_data.data.size()); 125 ASSERT_EQ(developer_data.size(), web_data.data.size());
121 for (size_t i = 0; i < developer_data.size(); ++i) 126 for (size_t i = 0; i < developer_data.size(); ++i)
122 EXPECT_EQ(developer_data[i], web_data.data[i]); 127 EXPECT_EQ(developer_data[i], web_data.data[i]);
123 128
124 ASSERT_EQ(platform_data.actions.size(), web_data.actions.size()); 129 ASSERT_EQ(platform_data.actions.size(), web_data.actions.size());
125 EXPECT_EQ(kAction1Name, web_data.actions[0].action); 130 EXPECT_EQ(kAction1Name, web_data.actions[0].action);
126 EXPECT_EQ(kAction1Title, web_data.actions[0].title); 131 EXPECT_EQ(kAction1Title, web_data.actions[0].title);
(...skipping 25 matching lines...) Expand all
152 PlatformNotificationData platform_data; 157 PlatformNotificationData platform_data;
153 platform_data.direction = pair.second; 158 platform_data.direction = pair.second;
154 159
155 blink::WebNotificationData web_data = 160 blink::WebNotificationData web_data =
156 ToWebNotificationData(platform_data); 161 ToWebNotificationData(platform_data);
157 EXPECT_EQ(pair.first, web_data.direction); 162 EXPECT_EQ(pair.first, web_data.direction);
158 } 163 }
159 } 164 }
160 } 165 }
161 166
167 TEST(NotificationDataConversionsTest, TimeEdgeCaseValueBehaviour) {
168 {
169 blink::WebNotificationData web_data;
170 web_data.timestamp =
171 static_cast<double>(std::numeric_limits<unsigned long long>::max());
172
173 blink::WebNotificationData copied_data =
174 ToWebNotificationData(ToPlatformNotificationData(web_data));
175 EXPECT_NE(web_data.timestamp, copied_data.timestamp);
176 }
177 {
178 blink::WebNotificationData web_data;
179 web_data.timestamp =
180 static_cast<double>(9211726771200000000ull); // January 1, 293878
181
182 blink::WebNotificationData copied_data =
183 ToWebNotificationData(ToPlatformNotificationData(web_data));
184 EXPECT_NE(web_data.timestamp, copied_data.timestamp);
185 }
186 {
187 blink::WebNotificationData web_data;
188 web_data.timestamp = 0;
189
190 blink::WebNotificationData copied_data =
191 ToWebNotificationData(ToPlatformNotificationData(web_data));
192 EXPECT_EQ(web_data.timestamp, copied_data.timestamp);
193 }
194 {
195 blink::WebNotificationData web_data;
196 web_data.timestamp = 0;
197
198 blink::WebNotificationData copied_data =
199 ToWebNotificationData(ToPlatformNotificationData(web_data));
200 EXPECT_EQ(web_data.timestamp, copied_data.timestamp);
201 }
202 }
203
162 } // namespace content 204 } // namespace content
OLDNEW
« no previous file with comments | « content/child/notifications/notification_data_conversions.cc ('k') | content/common/platform_notification_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698