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

Side by Side Diff: chrome/browser/notifications/platform_notification_service_unittest.cc

Issue 2300093002: Make //content responsible for generating notification Ids (Closed)
Patch Set: Make //content responsible for generating notification Ids Created 4 years, 3 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 #include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h" 47 #include "chrome/browser/chromeos/login/users/scoped_test_user_manager.h"
48 #include "chrome/browser/chromeos/settings/cros_settings.h" 48 #include "chrome/browser/chromeos/settings/cros_settings.h"
49 #include "chrome/browser/chromeos/settings/device_settings_service.h" 49 #include "chrome/browser/chromeos/settings/device_settings_service.h"
50 #endif 50 #endif
51 51
52 using content::NotificationResources; 52 using content::NotificationResources;
53 using content::PlatformNotificationData; 53 using content::PlatformNotificationData;
54 54
55 namespace { 55 namespace {
56 56
57 const char kNotificationId[] = "my-notification-id";
57 const int kNotificationVibrationPattern[] = { 100, 200, 300 }; 58 const int kNotificationVibrationPattern[] = { 100, 200, 300 };
58 59
59 #if !defined(OS_ANDROID)
60 const int64_t kPersistentNotificationId = 42;
61 #endif
62
63 class MockDesktopNotificationDelegate 60 class MockDesktopNotificationDelegate
64 : public content::DesktopNotificationDelegate { 61 : public content::DesktopNotificationDelegate {
65 public: 62 public:
66 MockDesktopNotificationDelegate() 63 MockDesktopNotificationDelegate()
67 : displayed_(false), 64 : displayed_(false),
68 clicked_(false) {} 65 clicked_(false) {}
69 66
70 ~MockDesktopNotificationDelegate() override {} 67 ~MockDesktopNotificationDelegate() override {}
71 68
72 // content::DesktopNotificationDelegate implementation. 69 // content::DesktopNotificationDelegate implementation.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 // The close closure may be specified if so desired. 116 // The close closure may be specified if so desired.
120 MockDesktopNotificationDelegate* CreateSimplePageNotificationWithCloseClosure( 117 MockDesktopNotificationDelegate* CreateSimplePageNotificationWithCloseClosure(
121 base::Closure* close_closure) const { 118 base::Closure* close_closure) const {
122 PlatformNotificationData notification_data; 119 PlatformNotificationData notification_data;
123 notification_data.title = base::ASCIIToUTF16("My Notification"); 120 notification_data.title = base::ASCIIToUTF16("My Notification");
124 notification_data.body = base::ASCIIToUTF16("Hello, world!"); 121 notification_data.body = base::ASCIIToUTF16("Hello, world!");
125 122
126 MockDesktopNotificationDelegate* delegate = 123 MockDesktopNotificationDelegate* delegate =
127 new MockDesktopNotificationDelegate(); 124 new MockDesktopNotificationDelegate();
128 125
129 service()->DisplayNotification(profile(), GURL("https://chrome.com/"), 126 service()->DisplayNotification(profile(), kNotificationId,
127 GURL("https://chrome.com/"),
130 notification_data, NotificationResources(), 128 notification_data, NotificationResources(),
131 base::WrapUnique(delegate), close_closure); 129 base::WrapUnique(delegate), close_closure);
132 130
133 return delegate; 131 return delegate;
134 } 132 }
135 133
136 // Returns the Platform Notification Service these unit tests are for. 134 // Returns the Platform Notification Service these unit tests are for.
137 PlatformNotificationServiceImpl* service() const { 135 PlatformNotificationServiceImpl* service() const {
138 return PlatformNotificationServiceImpl::GetInstance(); 136 return PlatformNotificationServiceImpl::GetInstance();
139 } 137 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 EXPECT_EQ(1u, GetNotificationCount()); 181 EXPECT_EQ(1u, GetNotificationCount());
184 182
185 ASSERT_FALSE(close_closure.is_null()); 183 ASSERT_FALSE(close_closure.is_null());
186 close_closure.Run(); 184 close_closure.Run();
187 185
188 EXPECT_EQ(0u, GetNotificationCount()); 186 EXPECT_EQ(0u, GetNotificationCount());
189 // Note that we cannot verify whether the closed event was called on the 187 // Note that we cannot verify whether the closed event was called on the
190 // delegate given that it'd result in a use-after-free. 188 // delegate given that it'd result in a use-after-free.
191 } 189 }
192 190
193 // TODO(peter): Re-enable this test when //content is responsible for creating 191 // TODO(peter): Re-enable this test when //content is responsible for creating
johnme 2016/09/02 15:07:44 Can you re-enable this test now?
Peter Beverloo 2016/09/05 15:11:01 I have no idea. Let's try!
194 // the notification delegate ids. 192 // the notification delegate ids.
195 #if !defined(OS_ANDROID) 193 #if !defined(OS_ANDROID)
196 TEST_F(PlatformNotificationServiceTest, PersistentNotificationDisplay) { 194 TEST_F(PlatformNotificationServiceTest, PersistentNotificationDisplay) {
197 PlatformNotificationData notification_data; 195 PlatformNotificationData notification_data;
198 notification_data.title = base::ASCIIToUTF16("My notification's title"); 196 notification_data.title = base::ASCIIToUTF16("My notification's title");
199 notification_data.body = base::ASCIIToUTF16("Hello, world!"); 197 notification_data.body = base::ASCIIToUTF16("Hello, world!");
200 198
201 service()->DisplayPersistentNotification( 199 service()->DisplayPersistentNotification(
202 profile(), kPersistentNotificationId, GURL() /* service_worker_scope */, 200 profile(), kNotificationId, GURL() /* service_worker_scope */,
203 GURL("https://chrome.com/"), notification_data, NotificationResources()); 201 GURL("https://chrome.com/"), notification_data, NotificationResources());
204 202
205 ASSERT_EQ(1u, GetNotificationCount()); 203 ASSERT_EQ(1u, GetNotificationCount());
206 204
207 Notification notification = GetDisplayedNotification(); 205 Notification notification = GetDisplayedNotification();
208 EXPECT_EQ("https://chrome.com/", notification.origin_url().spec()); 206 EXPECT_EQ("https://chrome.com/", notification.origin_url().spec());
209 EXPECT_EQ("My notification's title", 207 EXPECT_EQ("My notification's title",
210 base::UTF16ToUTF8(notification.title())); 208 base::UTF16ToUTF8(notification.title()));
211 EXPECT_EQ("Hello, world!", 209 EXPECT_EQ("Hello, world!",
212 base::UTF16ToUTF8(notification.message())); 210 base::UTF16ToUTF8(notification.message()));
213 211
214 service()->ClosePersistentNotification(profile(), kPersistentNotificationId); 212 service()->ClosePersistentNotification(profile(), kNotificationId);
215 EXPECT_EQ(0u, GetNotificationCount()); 213 EXPECT_EQ(0u, GetNotificationCount());
216 } 214 }
217 #endif // !defined(OS_ANDROID) 215 #endif // !defined(OS_ANDROID)
218 216
219 TEST_F(PlatformNotificationServiceTest, DisplayPageNotificationMatches) { 217 TEST_F(PlatformNotificationServiceTest, DisplayPageNotificationMatches) {
220 std::vector<int> vibration_pattern( 218 std::vector<int> vibration_pattern(
221 kNotificationVibrationPattern, 219 kNotificationVibrationPattern,
222 kNotificationVibrationPattern + arraysize(kNotificationVibrationPattern)); 220 kNotificationVibrationPattern + arraysize(kNotificationVibrationPattern));
223 221
224 PlatformNotificationData notification_data; 222 PlatformNotificationData notification_data;
225 notification_data.title = base::ASCIIToUTF16("My notification's title"); 223 notification_data.title = base::ASCIIToUTF16("My notification's title");
226 notification_data.body = base::ASCIIToUTF16("Hello, world!"); 224 notification_data.body = base::ASCIIToUTF16("Hello, world!");
227 notification_data.vibration_pattern = vibration_pattern; 225 notification_data.vibration_pattern = vibration_pattern;
228 notification_data.silent = true; 226 notification_data.silent = true;
229 227
230 MockDesktopNotificationDelegate* delegate 228 MockDesktopNotificationDelegate* delegate
231 = new MockDesktopNotificationDelegate(); 229 = new MockDesktopNotificationDelegate();
232 service()->DisplayNotification(profile(), GURL("https://chrome.com/"), 230 service()->DisplayNotification(profile(), kNotificationId,
233 notification_data, NotificationResources(), 231 GURL("https://chrome.com/"), notification_data,
232 NotificationResources(),
234 base::WrapUnique(delegate), nullptr); 233 base::WrapUnique(delegate), nullptr);
235 234
236 ASSERT_EQ(1u, GetNotificationCount()); 235 ASSERT_EQ(1u, GetNotificationCount());
237 236
238 Notification notification = GetDisplayedNotification(); 237 Notification notification = GetDisplayedNotification();
239 EXPECT_EQ("https://chrome.com/", notification.origin_url().spec()); 238 EXPECT_EQ("https://chrome.com/", notification.origin_url().spec());
240 EXPECT_EQ("My notification's title", 239 EXPECT_EQ("My notification's title",
241 base::UTF16ToUTF8(notification.title())); 240 base::UTF16ToUTF8(notification.title()));
242 EXPECT_EQ("Hello, world!", 241 EXPECT_EQ("Hello, world!",
243 base::UTF16ToUTF8(notification.message())); 242 base::UTF16ToUTF8(notification.message()));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 297
299 base::Time after_page_notification = 298 base::Time after_page_notification =
300 HostContentSettingsMapFactory::GetForProfile(profile())->GetLastUsage( 299 HostContentSettingsMapFactory::GetForProfile(profile())->GetLastUsage(
301 origin, origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 300 origin, origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
302 EXPECT_GT(after_page_notification, begin_time); 301 EXPECT_GT(after_page_notification, begin_time);
303 302
304 // Ensure that there is at least some time between the two calls. 303 // Ensure that there is at least some time between the two calls.
305 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); 304 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1));
306 305
307 service()->DisplayPersistentNotification( 306 service()->DisplayPersistentNotification(
308 profile(), 42 /* sw_registration_id */, GURL() /* service_worker_scope */, 307 profile(), kNotificationId, GURL() /* service_worker_scope */, origin,
309 origin, PlatformNotificationData(), NotificationResources()); 308 PlatformNotificationData(), NotificationResources());
310 309
311 base::Time after_persistent_notification = 310 base::Time after_persistent_notification =
312 HostContentSettingsMapFactory::GetForProfile(profile())->GetLastUsage( 311 HostContentSettingsMapFactory::GetForProfile(profile())->GetLastUsage(
313 origin, origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 312 origin, origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
314 EXPECT_GT(after_persistent_notification, after_page_notification); 313 EXPECT_GT(after_persistent_notification, after_page_notification);
315 } 314 }
316 315
317 #if defined(ENABLE_EXTENSIONS) 316 #if defined(ENABLE_EXTENSIONS)
318 317
319 TEST_F(PlatformNotificationServiceTest, DisplayNameForContextMessage) { 318 TEST_F(PlatformNotificationServiceTest, DisplayNameForContextMessage) {
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 profile(), 432 profile(),
434 GURL() /* service_worker_scope */, 433 GURL() /* service_worker_scope */,
435 GURL("chrome-extension://honijodknafkokifofgiaalefdiedpko/main.html"), 434 GURL("chrome-extension://honijodknafkokifofgiaalefdiedpko/main.html"),
436 notification_data, NotificationResources(), 435 notification_data, NotificationResources(),
437 new MockNotificationDelegate("hello")); 436 new MockNotificationDelegate("hello"));
438 EXPECT_EQ("NotificationTest", 437 EXPECT_EQ("NotificationTest",
439 base::UTF16ToUTF8(notification.context_message())); 438 base::UTF16ToUTF8(notification.context_message()));
440 } 439 }
441 440
442 #endif // defined(ENABLE_EXTENSIONS) 441 #endif // defined(ENABLE_EXTENSIONS)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698