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

Side by Side Diff: third_party/WebKit/Source/modules/notifications/NotificationDataTest.cpp

Issue 1750083004: Add badge to web notifications. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test. Created 4 years, 9 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "modules/notifications/NotificationData.h" 5 #include "modules/notifications/NotificationData.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/modules/v8/UnionTypesModules.h" 8 #include "bindings/modules/v8/UnionTypesModules.h"
9 #include "core/testing/NullExecutionContext.h" 9 #include "core/testing/NullExecutionContext.h"
10 #include "modules/notifications/Notification.h" 10 #include "modules/notifications/Notification.h"
11 #include "modules/notifications/NotificationOptions.h" 11 #include "modules/notifications/NotificationOptions.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "wtf/CurrentTime.h" 13 #include "wtf/CurrentTime.h"
14 #include "wtf/HashMap.h" 14 #include "wtf/HashMap.h"
15 #include "wtf/Vector.h" 15 #include "wtf/Vector.h"
16 16
17 namespace blink { 17 namespace blink {
18 namespace { 18 namespace {
19 19
20 const char kNotificationTitle[] = "My Notification"; 20 const char kNotificationTitle[] = "My Notification";
21 21
22 const char kNotificationDir[] = "rtl"; 22 const char kNotificationDir[] = "rtl";
23 const char kNotificationLang[] = "nl"; 23 const char kNotificationLang[] = "nl";
24 const char kNotificationBody[] = "Hello, world"; 24 const char kNotificationBody[] = "Hello, world";
25 const char kNotificationTag[] = "my_tag"; 25 const char kNotificationTag[] = "my_tag";
26 const char kNotificationEmptyTag[] = ""; 26 const char kNotificationEmptyTag[] = "";
27 const char kNotificationIcon[] = "https://example.com/icon.png"; 27 const char kNotificationIcon[] = "https://example.com/icon.png";
28 const char kNotificationIconInvalid[] = "https://invalid:icon:url"; 28 const char kNotificationIconInvalid[] = "https://invalid:icon:url";
29 const char kNotificationBadge[] = "https://example.com/badge.png";
29 const unsigned kNotificationVibration[] = { 42, 10, 20, 30, 40 }; 30 const unsigned kNotificationVibration[] = { 42, 10, 20, 30, 40 };
30 const unsigned long long kNotificationTimestamp = 621046800ull; 31 const unsigned long long kNotificationTimestamp = 621046800ull;
31 const bool kNotificationRenotify = true; 32 const bool kNotificationRenotify = true;
32 const bool kNotificationSilent = false; 33 const bool kNotificationSilent = false;
33 const bool kNotificationRequireInteraction = true; 34 const bool kNotificationRequireInteraction = true;
34 35
35 const char kNotificationActionAction[] = "my_action"; 36 const char kNotificationActionAction[] = "my_action";
36 const char kNotificationActionTitle[] = "My Action"; 37 const char kNotificationActionTitle[] = "My Action";
37 const char kNotificationActionIcon[] = "https://example.com/action_icon.png"; 38 const char kNotificationActionIcon[] = "https://example.com/action_icon.png";
38 39
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 71
71 actions.append(action); 72 actions.append(action);
72 } 73 }
73 74
74 NotificationOptions options; 75 NotificationOptions options;
75 options.setDir(kNotificationDir); 76 options.setDir(kNotificationDir);
76 options.setLang(kNotificationLang); 77 options.setLang(kNotificationLang);
77 options.setBody(kNotificationBody); 78 options.setBody(kNotificationBody);
78 options.setTag(kNotificationTag); 79 options.setTag(kNotificationTag);
79 options.setIcon(kNotificationIcon); 80 options.setIcon(kNotificationIcon);
81 options.setBadge(kNotificationBadge);
80 options.setVibrate(vibrationSequence); 82 options.setVibrate(vibrationSequence);
81 options.setTimestamp(kNotificationTimestamp); 83 options.setTimestamp(kNotificationTimestamp);
82 options.setRenotify(kNotificationRenotify); 84 options.setRenotify(kNotificationRenotify);
83 options.setSilent(kNotificationSilent); 85 options.setSilent(kNotificationSilent);
84 options.setRequireInteraction(kNotificationRequireInteraction); 86 options.setRequireInteraction(kNotificationRequireInteraction);
85 options.setActions(actions); 87 options.setActions(actions);
86 88
87 // TODO(peter): Test |options.data| and |notificationData.data|. 89 // TODO(peter): Test |options.data| and |notificationData.data|.
88 90
89 TrackExceptionState exceptionState; 91 TrackExceptionState exceptionState;
90 WebNotificationData notificationData = createWebNotificationData(getExecutio nContext(), kNotificationTitle, options, exceptionState); 92 WebNotificationData notificationData = createWebNotificationData(getExecutio nContext(), kNotificationTitle, options, exceptionState);
91 ASSERT_FALSE(exceptionState.hadException()); 93 ASSERT_FALSE(exceptionState.hadException());
92 94
93 EXPECT_EQ(kNotificationTitle, notificationData.title); 95 EXPECT_EQ(kNotificationTitle, notificationData.title);
94 96
95 EXPECT_EQ(WebNotificationData::DirectionRightToLeft, notificationData.direct ion); 97 EXPECT_EQ(WebNotificationData::DirectionRightToLeft, notificationData.direct ion);
96 EXPECT_EQ(kNotificationLang, notificationData.lang); 98 EXPECT_EQ(kNotificationLang, notificationData.lang);
97 EXPECT_EQ(kNotificationBody, notificationData.body); 99 EXPECT_EQ(kNotificationBody, notificationData.body);
98 EXPECT_EQ(kNotificationTag, notificationData.tag); 100 EXPECT_EQ(kNotificationTag, notificationData.tag);
99 101
100 // TODO(peter): Test WebNotificationData.icon and WebNotificationAction.icon when ExecutionContext::completeURL() works in this test. 102 // TODO(peter): Test the various icon properties when ExecutionContext::comp leteURL() works in this test.
101 103
102 ASSERT_EQ(vibrationPattern.size(), notificationData.vibrate.size()); 104 ASSERT_EQ(vibrationPattern.size(), notificationData.vibrate.size());
103 for (size_t i = 0; i < vibrationPattern.size(); ++i) 105 for (size_t i = 0; i < vibrationPattern.size(); ++i)
104 EXPECT_EQ(vibrationPattern[i], static_cast<unsigned>(notificationData.vi brate[i])); 106 EXPECT_EQ(vibrationPattern[i], static_cast<unsigned>(notificationData.vi brate[i]));
105 107
106 EXPECT_EQ(kNotificationTimestamp, notificationData.timestamp); 108 EXPECT_EQ(kNotificationTimestamp, notificationData.timestamp);
107 EXPECT_EQ(kNotificationRenotify, notificationData.renotify); 109 EXPECT_EQ(kNotificationRenotify, notificationData.renotify);
108 EXPECT_EQ(kNotificationSilent, notificationData.silent); 110 EXPECT_EQ(kNotificationSilent, notificationData.silent);
109 EXPECT_EQ(kNotificationRequireInteraction, notificationData.requireInteracti on); 111 EXPECT_EQ(kNotificationRequireInteraction, notificationData.requireInteracti on);
110 EXPECT_EQ(actions.size(), notificationData.actions.size()); 112 EXPECT_EQ(actions.size(), notificationData.actions.size());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 for (size_t i = 0; i < Notification::maxActions(); ++i) { 155 for (size_t i = 0; i < Notification::maxActions(); ++i) {
154 NotificationAction action; 156 NotificationAction action;
155 action.setAction(kNotificationActionAction); 157 action.setAction(kNotificationActionAction);
156 action.setTitle(kNotificationActionTitle); 158 action.setTitle(kNotificationActionTitle);
157 action.setIcon(kNotificationIconInvalid); 159 action.setIcon(kNotificationIconInvalid);
158 actions.append(action); 160 actions.append(action);
159 } 161 }
160 162
161 NotificationOptions options; 163 NotificationOptions options;
162 options.setIcon(kNotificationIconInvalid); 164 options.setIcon(kNotificationIconInvalid);
165 options.setBadge(kNotificationIconInvalid);
163 options.setActions(actions); 166 options.setActions(actions);
164 167
165 TrackExceptionState exceptionState; 168 TrackExceptionState exceptionState;
166 WebNotificationData notificationData = createWebNotificationData(getExecutio nContext(), kNotificationTitle, options, exceptionState); 169 WebNotificationData notificationData = createWebNotificationData(getExecutio nContext(), kNotificationTitle, options, exceptionState);
167 ASSERT_FALSE(exceptionState.hadException()); 170 ASSERT_FALSE(exceptionState.hadException());
168 171
169 EXPECT_TRUE(notificationData.icon.isEmpty()); 172 EXPECT_TRUE(notificationData.icon.isEmpty());
173 EXPECT_TRUE(notificationData.badge.isEmpty());
170 for (const auto& action : notificationData.actions) 174 for (const auto& action : notificationData.actions)
171 EXPECT_TRUE(action.icon.isEmpty()); 175 EXPECT_TRUE(action.icon.isEmpty());
172 } 176 }
173 177
174 TEST_F(NotificationDataTest, VibrationNormalization) 178 TEST_F(NotificationDataTest, VibrationNormalization)
175 { 179 {
176 Vector<unsigned> unnormalizedPattern; 180 Vector<unsigned> unnormalizedPattern;
177 for (size_t i = 0; i < WTF_ARRAY_LENGTH(kNotificationVibrationUnnormalized); ++i) 181 for (size_t i = 0; i < WTF_ARRAY_LENGTH(kNotificationVibrationUnnormalized); ++i)
178 unnormalizedPattern.append(kNotificationVibrationUnnormalized[i]); 182 unnormalizedPattern.append(kNotificationVibrationUnnormalized[i]);
179 183
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 ASSERT_EQ(Notification::maxActions(), notificationData.actions.size()); 257 ASSERT_EQ(Notification::maxActions(), notificationData.actions.size());
254 258
255 for (size_t i = 0; i < Notification::maxActions(); ++i) { 259 for (size_t i = 0; i < Notification::maxActions(); ++i) {
256 WebString expectedAction = String::number(i); 260 WebString expectedAction = String::number(i);
257 EXPECT_EQ(expectedAction, notificationData.actions[i].action); 261 EXPECT_EQ(expectedAction, notificationData.actions[i].action);
258 } 262 }
259 } 263 }
260 264
261 } // namespace 265 } // namespace
262 } // namespace blink 266 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698