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

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

Issue 1656243002: Implementation of renotify flag for Notifications. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase 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 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 kNotificationIcon[] = "https://example.com/icon.png"; 27 const char kNotificationIcon[] = "https://example.com/icon.png";
27 const char kNotificationIconInvalid[] = "https://invalid:icon:url"; 28 const char kNotificationIconInvalid[] = "https://invalid:icon:url";
28 const unsigned kNotificationVibration[] = { 42, 10, 20, 30, 40 }; 29 const unsigned kNotificationVibration[] = { 42, 10, 20, 30, 40 };
29 const unsigned long long kNotificationTimestamp = 621046800ull; 30 const unsigned long long kNotificationTimestamp = 621046800ull;
31 const bool kNotificationRenotify = true;
30 const bool kNotificationSilent = false; 32 const bool kNotificationSilent = false;
31 const bool kNotificationRequireInteraction = true; 33 const bool kNotificationRequireInteraction = true;
32 34
33 const char kNotificationActionAction[] = "my_action"; 35 const char kNotificationActionAction[] = "my_action";
34 const char kNotificationActionTitle[] = "My Action"; 36 const char kNotificationActionTitle[] = "My Action";
35 const char kNotificationActionIcon[] = "https://example.com/action_icon.png"; 37 const char kNotificationActionIcon[] = "https://example.com/action_icon.png";
36 38
37 const unsigned kNotificationVibrationUnnormalized[] = { 10, 1000000, 50, 42 }; 39 const unsigned kNotificationVibrationUnnormalized[] = { 10, 1000000, 50, 42 };
38 const int kNotificationVibrationNormalized[] = { 10, 10000, 50 }; 40 const int kNotificationVibrationNormalized[] = { 10, 10000, 50 };
39 41
(...skipping 30 matching lines...) Expand all
70 } 72 }
71 73
72 NotificationOptions options; 74 NotificationOptions options;
73 options.setDir(kNotificationDir); 75 options.setDir(kNotificationDir);
74 options.setLang(kNotificationLang); 76 options.setLang(kNotificationLang);
75 options.setBody(kNotificationBody); 77 options.setBody(kNotificationBody);
76 options.setTag(kNotificationTag); 78 options.setTag(kNotificationTag);
77 options.setIcon(kNotificationIcon); 79 options.setIcon(kNotificationIcon);
78 options.setVibrate(vibrationSequence); 80 options.setVibrate(vibrationSequence);
79 options.setTimestamp(kNotificationTimestamp); 81 options.setTimestamp(kNotificationTimestamp);
82 options.setRenotify(kNotificationRenotify);
80 options.setSilent(kNotificationSilent); 83 options.setSilent(kNotificationSilent);
81 options.setRequireInteraction(kNotificationRequireInteraction); 84 options.setRequireInteraction(kNotificationRequireInteraction);
82 options.setActions(actions); 85 options.setActions(actions);
83 86
84 // TODO(peter): Test |options.data| and |notificationData.data|. 87 // TODO(peter): Test |options.data| and |notificationData.data|.
85 88
86 TrackExceptionState exceptionState; 89 TrackExceptionState exceptionState;
87 WebNotificationData notificationData = createWebNotificationData(executionCo ntext(), kNotificationTitle, options, exceptionState); 90 WebNotificationData notificationData = createWebNotificationData(executionCo ntext(), kNotificationTitle, options, exceptionState);
88 ASSERT_FALSE(exceptionState.hadException()); 91 ASSERT_FALSE(exceptionState.hadException());
89 92
90 EXPECT_EQ(kNotificationTitle, notificationData.title); 93 EXPECT_EQ(kNotificationTitle, notificationData.title);
91 94
92 EXPECT_EQ(WebNotificationData::DirectionRightToLeft, notificationData.direct ion); 95 EXPECT_EQ(WebNotificationData::DirectionRightToLeft, notificationData.direct ion);
93 EXPECT_EQ(kNotificationLang, notificationData.lang); 96 EXPECT_EQ(kNotificationLang, notificationData.lang);
94 EXPECT_EQ(kNotificationBody, notificationData.body); 97 EXPECT_EQ(kNotificationBody, notificationData.body);
95 EXPECT_EQ(kNotificationTag, notificationData.tag); 98 EXPECT_EQ(kNotificationTag, notificationData.tag);
96 99
97 // TODO(peter): Test WebNotificationData.icon and WebNotificationAction.icon when ExecutionContext::completeURL() works in this test. 100 // TODO(peter): Test WebNotificationData.icon and WebNotificationAction.icon when ExecutionContext::completeURL() works in this test.
98 101
99 ASSERT_EQ(vibrationPattern.size(), notificationData.vibrate.size()); 102 ASSERT_EQ(vibrationPattern.size(), notificationData.vibrate.size());
100 for (size_t i = 0; i < vibrationPattern.size(); ++i) 103 for (size_t i = 0; i < vibrationPattern.size(); ++i)
101 EXPECT_EQ(vibrationPattern[i], static_cast<unsigned>(notificationData.vi brate[i])); 104 EXPECT_EQ(vibrationPattern[i], static_cast<unsigned>(notificationData.vi brate[i]));
102 105
103 EXPECT_EQ(kNotificationTimestamp, notificationData.timestamp); 106 EXPECT_EQ(kNotificationTimestamp, notificationData.timestamp);
107 EXPECT_EQ(kNotificationRenotify, notificationData.renotify);
104 EXPECT_EQ(kNotificationSilent, notificationData.silent); 108 EXPECT_EQ(kNotificationSilent, notificationData.silent);
105 EXPECT_EQ(kNotificationRequireInteraction, notificationData.requireInteracti on); 109 EXPECT_EQ(kNotificationRequireInteraction, notificationData.requireInteracti on);
106 EXPECT_EQ(actions.size(), notificationData.actions.size()); 110 EXPECT_EQ(actions.size(), notificationData.actions.size());
107 for (const auto& action : notificationData.actions) { 111 for (const auto& action : notificationData.actions) {
108 EXPECT_EQ(kNotificationActionAction, action.action); 112 EXPECT_EQ(kNotificationActionAction, action.action);
109 EXPECT_EQ(kNotificationActionTitle, action.title); 113 EXPECT_EQ(kNotificationActionTitle, action.title);
110 } 114 }
111 } 115 }
112 116
113 TEST_F(NotificationDataTest, SilentNotificationWithVibration) 117 TEST_F(NotificationDataTest, SilentNotificationWithVibration)
114 { 118 {
115 Vector<unsigned> vibrationPattern; 119 Vector<unsigned> vibrationPattern;
116 for (size_t i = 0; i < WTF_ARRAY_LENGTH(kNotificationVibration); ++i) 120 for (size_t i = 0; i < WTF_ARRAY_LENGTH(kNotificationVibration); ++i)
117 vibrationPattern.append(kNotificationVibration[i]); 121 vibrationPattern.append(kNotificationVibration[i]);
118 122
119 UnsignedLongOrUnsignedLongSequence vibrationSequence; 123 UnsignedLongOrUnsignedLongSequence vibrationSequence;
120 vibrationSequence.setUnsignedLongSequence(vibrationPattern); 124 vibrationSequence.setUnsignedLongSequence(vibrationPattern);
121 125
122 NotificationOptions options; 126 NotificationOptions options;
123 options.setVibrate(vibrationSequence); 127 options.setVibrate(vibrationSequence);
124 options.setSilent(true); 128 options.setSilent(true);
125 129
126 TrackExceptionState exceptionState; 130 TrackExceptionState exceptionState;
127 WebNotificationData notificationData = createWebNotificationData(executionCo ntext(), kNotificationTitle, options, exceptionState); 131 WebNotificationData notificationData = createWebNotificationData(executionCo ntext(), kNotificationTitle, options, exceptionState);
128 ASSERT_TRUE(exceptionState.hadException()); 132 ASSERT_TRUE(exceptionState.hadException());
129 133
130 EXPECT_EQ("Silent notifications must not specify vibration patterns.", excep tionState.message()); 134 EXPECT_EQ("Silent notifications must not specify vibration patterns.", excep tionState.message());
131 } 135 }
132 136
137 TEST_F(NotificationDataTest, RenotifyWithEmptyTag)
138 {
139 NotificationOptions options;
140 options.setTag(kNotificationEmptyTag);
141 options.setRenotify(true);
142
143 TrackExceptionState exceptionState;
144 WebNotificationData notificationData = createWebNotificationData(executionCo ntext(), kNotificationTitle, options, exceptionState);
145 ASSERT_TRUE(exceptionState.hadException());
146
147 EXPECT_EQ("Notifications which set the renotify flag must specify a non-empt y tag.", exceptionState.message());
148 }
149
133 TEST_F(NotificationDataTest, InvalidIconUrls) 150 TEST_F(NotificationDataTest, InvalidIconUrls)
134 { 151 {
135 HeapVector<NotificationAction> actions; 152 HeapVector<NotificationAction> actions;
136 for (size_t i = 0; i < Notification::maxActions(); ++i) { 153 for (size_t i = 0; i < Notification::maxActions(); ++i) {
137 NotificationAction action; 154 NotificationAction action;
138 action.setAction(kNotificationActionAction); 155 action.setAction(kNotificationActionAction);
139 action.setTitle(kNotificationActionTitle); 156 action.setTitle(kNotificationActionTitle);
140 action.setIcon(kNotificationIconInvalid); 157 action.setIcon(kNotificationIconInvalid);
141 actions.append(action); 158 actions.append(action);
142 } 159 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 ASSERT_EQ(Notification::maxActions(), notificationData.actions.size()); 253 ASSERT_EQ(Notification::maxActions(), notificationData.actions.size());
237 254
238 for (size_t i = 0; i < Notification::maxActions(); ++i) { 255 for (size_t i = 0; i < Notification::maxActions(); ++i) {
239 WebString expectedAction = String::number(i); 256 WebString expectedAction = String::number(i);
240 EXPECT_EQ(expectedAction, notificationData.actions[i].action); 257 EXPECT_EQ(expectedAction, notificationData.actions[i].action);
241 } 258 }
242 } 259 }
243 260
244 } // namespace 261 } // namespace
245 } // namespace blink 262 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698