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

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

Issue 14113053: chrome: Use base::MessageLoop. (Part 3) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/notifications/desktop_notifications_unittest.h" 5 #include "chrome/browser/notifications/desktop_notifications_unittest.h"
6 6
7 #include "base/prefs/testing_pref_service.h" 7 #include "base/prefs/testing_pref_service.h"
8 #include "base/string_util.h" 8 #include "base/string_util.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "chrome/browser/notifications/balloon_notification_ui_manager.h" 10 #include "chrome/browser/notifications/balloon_notification_ui_manager.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 return params; 166 return params;
167 } 167 }
168 168
169 TEST_F(DesktopNotificationsTest, TestShow) { 169 TEST_F(DesktopNotificationsTest, TestShow) {
170 content::ShowDesktopNotificationHostMsgParams params = 170 content::ShowDesktopNotificationHostMsgParams params =
171 StandardTestNotification(); 171 StandardTestNotification();
172 params.notification_id = 1; 172 params.notification_id = 1;
173 173
174 EXPECT_TRUE(service_->ShowDesktopNotification( 174 EXPECT_TRUE(service_->ShowDesktopNotification(
175 params, 0, 0, DesktopNotificationService::PageNotification)); 175 params, 0, 0, DesktopNotificationService::PageNotification));
176 MessageLoopForUI::current()->RunUntilIdle(); 176 base::MessageLoopForUI::current()->RunUntilIdle();
177 EXPECT_EQ(1, balloon_collection_->count()); 177 EXPECT_EQ(1, balloon_collection_->count());
178 178
179 content::ShowDesktopNotificationHostMsgParams params2; 179 content::ShowDesktopNotificationHostMsgParams params2;
180 params2.origin = GURL("http://www.google.com"); 180 params2.origin = GURL("http://www.google.com");
181 params2.is_html = true; 181 params2.is_html = true;
182 params2.contents_url = GURL("http://www.google.com/notification.html"); 182 params2.contents_url = GURL("http://www.google.com/notification.html");
183 params2.notification_id = 2; 183 params2.notification_id = 2;
184 184
185 EXPECT_TRUE(service_->ShowDesktopNotification( 185 EXPECT_TRUE(service_->ShowDesktopNotification(
186 params2, 0, 0, DesktopNotificationService::PageNotification)); 186 params2, 0, 0, DesktopNotificationService::PageNotification));
187 MessageLoopForUI::current()->RunUntilIdle(); 187 base::MessageLoopForUI::current()->RunUntilIdle();
188 EXPECT_EQ(2, balloon_collection_->count()); 188 EXPECT_EQ(2, balloon_collection_->count());
189 189
190 EXPECT_EQ("notification displayed\n" 190 EXPECT_EQ("notification displayed\n"
191 "notification displayed\n", 191 "notification displayed\n",
192 log_output_); 192 log_output_);
193 } 193 }
194 194
195 TEST_F(DesktopNotificationsTest, TestClose) { 195 TEST_F(DesktopNotificationsTest, TestClose) {
196 content::ShowDesktopNotificationHostMsgParams params = 196 content::ShowDesktopNotificationHostMsgParams params =
197 StandardTestNotification(); 197 StandardTestNotification();
198 params.notification_id = 1; 198 params.notification_id = 1;
199 199
200 // Request a notification; should open a balloon. 200 // Request a notification; should open a balloon.
201 EXPECT_TRUE(service_->ShowDesktopNotification( 201 EXPECT_TRUE(service_->ShowDesktopNotification(
202 params, 0, 0, DesktopNotificationService::PageNotification)); 202 params, 0, 0, DesktopNotificationService::PageNotification));
203 MessageLoopForUI::current()->RunUntilIdle(); 203 base::MessageLoopForUI::current()->RunUntilIdle();
204 EXPECT_EQ(1, balloon_collection_->count()); 204 EXPECT_EQ(1, balloon_collection_->count());
205 205
206 // Close all the open balloons. 206 // Close all the open balloons.
207 while (balloon_collection_->count() > 0) { 207 while (balloon_collection_->count() > 0) {
208 (*(balloon_collection_->GetActiveBalloons().begin()))->OnClose(true); 208 (*(balloon_collection_->GetActiveBalloons().begin()))->OnClose(true);
209 } 209 }
210 210
211 EXPECT_EQ("notification displayed\n" 211 EXPECT_EQ("notification displayed\n"
212 "notification closed by user\n", 212 "notification closed by user\n",
213 log_output_); 213 log_output_);
214 } 214 }
215 215
216 TEST_F(DesktopNotificationsTest, TestCancel) { 216 TEST_F(DesktopNotificationsTest, TestCancel) {
217 int process_id = 0; 217 int process_id = 0;
218 int route_id = 0; 218 int route_id = 0;
219 int notification_id = 1; 219 int notification_id = 1;
220 220
221 content::ShowDesktopNotificationHostMsgParams params = 221 content::ShowDesktopNotificationHostMsgParams params =
222 StandardTestNotification(); 222 StandardTestNotification();
223 params.notification_id = notification_id; 223 params.notification_id = notification_id;
224 224
225 // Request a notification; should open a balloon. 225 // Request a notification; should open a balloon.
226 EXPECT_TRUE(service_->ShowDesktopNotification( 226 EXPECT_TRUE(service_->ShowDesktopNotification(
227 params, process_id, route_id, 227 params, process_id, route_id,
228 DesktopNotificationService::PageNotification)); 228 DesktopNotificationService::PageNotification));
229 MessageLoopForUI::current()->RunUntilIdle(); 229 base::MessageLoopForUI::current()->RunUntilIdle();
230 EXPECT_EQ(1, balloon_collection_->count()); 230 EXPECT_EQ(1, balloon_collection_->count());
231 231
232 // Cancel the same notification 232 // Cancel the same notification
233 service_->CancelDesktopNotification(process_id, 233 service_->CancelDesktopNotification(process_id,
234 route_id, 234 route_id,
235 notification_id); 235 notification_id);
236 MessageLoopForUI::current()->RunUntilIdle(); 236 base::MessageLoopForUI::current()->RunUntilIdle();
237 // Verify that the balloon collection is now empty. 237 // Verify that the balloon collection is now empty.
238 EXPECT_EQ(0, balloon_collection_->count()); 238 EXPECT_EQ(0, balloon_collection_->count());
239 239
240 EXPECT_EQ("notification displayed\n" 240 EXPECT_EQ("notification displayed\n"
241 "notification closed by script\n", 241 "notification closed by script\n",
242 log_output_); 242 log_output_);
243 } 243 }
244 244
245 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS) 245 #if defined(OS_WIN) || defined(TOOLKIT_VIEWS)
246 TEST_F(DesktopNotificationsTest, TestPositioning) { 246 TEST_F(DesktopNotificationsTest, TestPositioning) {
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 334
335 // |kLotsOfToasts| must be large enough to trigger a resize of the underlying 335 // |kLotsOfToasts| must be large enough to trigger a resize of the underlying
336 // std::deque while we're clearing it. 336 // std::deque while we're clearing it.
337 const int kLotsOfToasts = 20; 337 const int kLotsOfToasts = 20;
338 for (int id = 2; id <= kLotsOfToasts; ++id) { 338 for (int id = 2; id <= kLotsOfToasts; ++id) {
339 params.notification_id = id; 339 params.notification_id = id;
340 EXPECT_TRUE(second_service->ShowDesktopNotification( 340 EXPECT_TRUE(second_service->ShowDesktopNotification(
341 params, process_id, route_id, 341 params, process_id, route_id,
342 DesktopNotificationService::PageNotification)); 342 DesktopNotificationService::PageNotification));
343 } 343 }
344 MessageLoopForUI::current()->RunUntilIdle(); 344 base::MessageLoopForUI::current()->RunUntilIdle();
345 345
346 ui_manager_->CancelAllByProfile(second_profile); 346 ui_manager_->CancelAllByProfile(second_profile);
347 347
348 // Verify that the balloon collection only contains the single 348 // Verify that the balloon collection only contains the single
349 // notification from the first profile. 349 // notification from the first profile.
350 EXPECT_EQ(1, balloon_collection_->count()); 350 EXPECT_EQ(1, balloon_collection_->count());
351 } 351 }
352 352
353 TEST_F(DesktopNotificationsTest, TestCancelBySourceOrigin) { 353 TEST_F(DesktopNotificationsTest, TestCancelBySourceOrigin) {
354 int process_id = 0; 354 int process_id = 0;
(...skipping 16 matching lines...) Expand all
371 371
372 // |kLotsOfToasts| must be large enough to trigger a resize of the underlying 372 // |kLotsOfToasts| must be large enough to trigger a resize of the underlying
373 // std::deque while we're clearing it. 373 // std::deque while we're clearing it.
374 const int kLotsOfToasts = 20; 374 const int kLotsOfToasts = 20;
375 for (int id = 2; id <= kLotsOfToasts; ++id) { 375 for (int id = 2; id <= kLotsOfToasts; ++id) {
376 odd_params.notification_id = id; 376 odd_params.notification_id = id;
377 EXPECT_TRUE(service_->ShowDesktopNotification( 377 EXPECT_TRUE(service_->ShowDesktopNotification(
378 odd_params, process_id, route_id, 378 odd_params, process_id, route_id,
379 DesktopNotificationService::PageNotification)); 379 DesktopNotificationService::PageNotification));
380 } 380 }
381 MessageLoopForUI::current()->RunUntilIdle(); 381 base::MessageLoopForUI::current()->RunUntilIdle();
382 382
383 ui_manager_->CancelAllBySourceOrigin(odd_params.origin); 383 ui_manager_->CancelAllBySourceOrigin(odd_params.origin);
384 384
385 // Verify that the balloon collection only contains the single 385 // Verify that the balloon collection only contains the single
386 // notification which is not from the canceled origin. 386 // notification which is not from the canceled origin.
387 EXPECT_EQ(1, balloon_collection_->count()); 387 EXPECT_EQ(1, balloon_collection_->count());
388 } 388 }
389 389
390 TEST_F(DesktopNotificationsTest, TestQueueing) { 390 TEST_F(DesktopNotificationsTest, TestQueueing) {
391 int process_id = 0; 391 int process_id = 0;
392 int route_id = 0; 392 int route_id = 0;
393 393
394 // Request lots of identical notifications. 394 // Request lots of identical notifications.
395 content::ShowDesktopNotificationHostMsgParams params = 395 content::ShowDesktopNotificationHostMsgParams params =
396 StandardTestNotification(); 396 StandardTestNotification();
397 const int kLotsOfToasts = 20; 397 const int kLotsOfToasts = 20;
398 for (int id = 1; id <= kLotsOfToasts; ++id) { 398 for (int id = 1; id <= kLotsOfToasts; ++id) {
399 params.notification_id = id; 399 params.notification_id = id;
400 EXPECT_TRUE(service_->ShowDesktopNotification( 400 EXPECT_TRUE(service_->ShowDesktopNotification(
401 params, process_id, route_id, 401 params, process_id, route_id,
402 DesktopNotificationService::PageNotification)); 402 DesktopNotificationService::PageNotification));
403 } 403 }
404 MessageLoopForUI::current()->RunUntilIdle(); 404 base::MessageLoopForUI::current()->RunUntilIdle();
405 405
406 // Build up an expected log of what should be happening. 406 // Build up an expected log of what should be happening.
407 std::string expected_log; 407 std::string expected_log;
408 for (int i = 0; i < balloon_collection_->max_balloon_count(); ++i) { 408 for (int i = 0; i < balloon_collection_->max_balloon_count(); ++i) {
409 expected_log.append("notification displayed\n"); 409 expected_log.append("notification displayed\n");
410 } 410 }
411 411
412 // The max number that our balloon collection can hold should be 412 // The max number that our balloon collection can hold should be
413 // shown. 413 // shown.
414 EXPECT_EQ(balloon_collection_->max_balloon_count(), 414 EXPECT_EQ(balloon_collection_->max_balloon_count(),
415 balloon_collection_->count()); 415 balloon_collection_->count());
416 EXPECT_EQ(expected_log, log_output_); 416 EXPECT_EQ(expected_log, log_output_);
417 417
418 // Cancel the notifications from the start; the balloon space should 418 // Cancel the notifications from the start; the balloon space should
419 // remain full. 419 // remain full.
420 { 420 {
421 int id; 421 int id;
422 for (id = 1; 422 for (id = 1;
423 id <= kLotsOfToasts - balloon_collection_->max_balloon_count(); 423 id <= kLotsOfToasts - balloon_collection_->max_balloon_count();
424 ++id) { 424 ++id) {
425 service_->CancelDesktopNotification(process_id, route_id, id); 425 service_->CancelDesktopNotification(process_id, route_id, id);
426 MessageLoopForUI::current()->RunUntilIdle(); 426 base::MessageLoopForUI::current()->RunUntilIdle();
427 expected_log.append("notification closed by script\n"); 427 expected_log.append("notification closed by script\n");
428 expected_log.append("notification displayed\n"); 428 expected_log.append("notification displayed\n");
429 EXPECT_EQ(balloon_collection_->max_balloon_count(), 429 EXPECT_EQ(balloon_collection_->max_balloon_count(),
430 balloon_collection_->count()); 430 balloon_collection_->count());
431 EXPECT_EQ(expected_log, log_output_); 431 EXPECT_EQ(expected_log, log_output_);
432 } 432 }
433 433
434 // Now cancel the rest. It should empty the balloon space. 434 // Now cancel the rest. It should empty the balloon space.
435 for (; id <= kLotsOfToasts; ++id) { 435 for (; id <= kLotsOfToasts; ++id) {
436 service_->CancelDesktopNotification(process_id, route_id, id); 436 service_->CancelDesktopNotification(process_id, route_id, id);
437 expected_log.append("notification closed by script\n"); 437 expected_log.append("notification closed by script\n");
438 MessageLoopForUI::current()->RunUntilIdle(); 438 base::MessageLoopForUI::current()->RunUntilIdle();
439 EXPECT_EQ(expected_log, log_output_); 439 EXPECT_EQ(expected_log, log_output_);
440 } 440 }
441 } 441 }
442 442
443 // Verify that the balloon collection is now empty. 443 // Verify that the balloon collection is now empty.
444 EXPECT_EQ(0, balloon_collection_->count()); 444 EXPECT_EQ(0, balloon_collection_->count());
445 } 445 }
446 446
447 TEST_F(DesktopNotificationsTest, TestEarlyDestruction) { 447 TEST_F(DesktopNotificationsTest, TestEarlyDestruction) {
448 // Create some toasts and then prematurely delete the notification service, 448 // Create some toasts and then prematurely delete the notification service,
(...skipping 12 matching lines...) Expand all
461 // Create a test script with some HTML; assert that it doesn't get into the 461 // Create a test script with some HTML; assert that it doesn't get into the
462 // data:// URL that's produced for the balloon. 462 // data:// URL that's produced for the balloon.
463 content::ShowDesktopNotificationHostMsgParams params = 463 content::ShowDesktopNotificationHostMsgParams params =
464 StandardTestNotification(); 464 StandardTestNotification();
465 params.title = ASCIIToUTF16("<script>window.alert('uh oh');</script>"); 465 params.title = ASCIIToUTF16("<script>window.alert('uh oh');</script>");
466 params.body = ASCIIToUTF16("<i>this text is in italics</i>"); 466 params.body = ASCIIToUTF16("<i>this text is in italics</i>");
467 params.notification_id = 1; 467 params.notification_id = 1;
468 EXPECT_TRUE(service_->ShowDesktopNotification( 468 EXPECT_TRUE(service_->ShowDesktopNotification(
469 params, 0, 0, DesktopNotificationService::PageNotification)); 469 params, 0, 0, DesktopNotificationService::PageNotification));
470 470
471 MessageLoopForUI::current()->RunUntilIdle(); 471 base::MessageLoopForUI::current()->RunUntilIdle();
472 EXPECT_EQ(1, balloon_collection_->count()); 472 EXPECT_EQ(1, balloon_collection_->count());
473 Balloon* balloon = (*balloon_collection_->balloons().begin()); 473 Balloon* balloon = (*balloon_collection_->balloons().begin());
474 GURL data_url = balloon->notification().content_url(); 474 GURL data_url = balloon->notification().content_url();
475 EXPECT_EQ(std::string::npos, data_url.spec().find("<script>")); 475 EXPECT_EQ(std::string::npos, data_url.spec().find("<script>"));
476 EXPECT_EQ(std::string::npos, data_url.spec().find("<i>")); 476 EXPECT_EQ(std::string::npos, data_url.spec().find("<i>"));
477 // URL-encoded versions of tags should also not be found. 477 // URL-encoded versions of tags should also not be found.
478 EXPECT_EQ(std::string::npos, data_url.spec().find("%3cscript%3e")); 478 EXPECT_EQ(std::string::npos, data_url.spec().find("%3cscript%3e"));
479 EXPECT_EQ(std::string::npos, data_url.spec().find("%3ci%3e")); 479 EXPECT_EQ(std::string::npos, data_url.spec().find("%3ci%3e"));
480 } 480 }
481 481
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 } 580 }
581 581
582 // Now change the position to upper left. Confirm that the X value for the 582 // Now change the position to upper left. Confirm that the X value for the
583 // balloons gets smaller. 583 // balloons gets smaller.
584 local_state_.SetInteger(prefs::kDesktopNotificationPosition, 584 local_state_.SetInteger(prefs::kDesktopNotificationPosition,
585 BalloonCollection::UPPER_LEFT); 585 BalloonCollection::UPPER_LEFT);
586 586
587 int current_x = (*balloons.begin())->GetPosition().x(); 587 int current_x = (*balloons.begin())->GetPosition().x();
588 EXPECT_LT(current_x, last_x); 588 EXPECT_LT(current_x, last_x);
589 } 589 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698