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

Side by Side Diff: chrome/browser/unload_browsertest.cc

Issue 26277010: Create content::WebContentsDestroyedWatcher, use it in many tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 7 years, 2 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 #if defined(OS_POSIX) 5 #if defined(OS_POSIX)
6 #include <signal.h> 6 #include <signal.h>
7 #endif 7 #endif
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 content::WindowedNotificationObserver load_stop_observer( 399 content::WindowedNotificationObserver load_stop_observer(
400 content::NOTIFICATION_LOAD_STOP, 400 content::NOTIFICATION_LOAD_STOP,
401 content::NotificationService::AllSources()); 401 content::NotificationService::AllSources());
402 content::SimulateMouseClick( 402 content::SimulateMouseClick(
403 browser()->tab_strip_model()->GetActiveWebContents(), 0, 403 browser()->tab_strip_model()->GetActiveWebContents(), 0,
404 WebKit::WebMouseEvent::ButtonLeft); 404 WebKit::WebMouseEvent::ButtonLeft);
405 observer.Wait(); 405 observer.Wait();
406 load_stop_observer.Wait(); 406 load_stop_observer.Wait();
407 CheckTitle("popup"); 407 CheckTitle("popup");
408 408
409 content::WindowedNotificationObserver tab_close_observer( 409 content::WebContentsDestroyedWatcher destroyed_watcher(
410 content::NOTIFICATION_WEB_CONTENTS_DESTROYED, 410 browser()->tab_strip_model()->GetActiveWebContents());
411 content::NotificationService::AllSources());
412 chrome::CloseTab(browser()); 411 chrome::CloseTab(browser());
413 tab_close_observer.Wait(); 412 destroyed_watcher.Wait();
414 413
415 CheckTitle("only_one_unload"); 414 CheckTitle("only_one_unload");
416 } 415 }
417 416
418 class FastUnloadTest : public UnloadTest { 417 class FastUnloadTest : public UnloadTest {
419 public: 418 public:
420 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { 419 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
421 UnloadTest::SetUpCommandLine(command_line); 420 UnloadTest::SetUpCommandLine(command_line);
422 command_line->AppendSwitch(switches::kEnableFastUnload); 421 command_line->AppendSwitch(switches::kEnableFastUnload);
423 } 422 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 DISABLED_UnloadHidden 486 DISABLED_UnloadHidden
488 #else 487 #else
489 #define MAYBE_UnloadHidden \ 488 #define MAYBE_UnloadHidden \
490 UnloadHidden 489 UnloadHidden
491 #endif 490 #endif
492 IN_PROC_BROWSER_TEST_F(FastUnloadTest, MAYBE_UnloadHidden) { 491 IN_PROC_BROWSER_TEST_F(FastUnloadTest, MAYBE_UnloadHidden) {
493 NavigateToPage("no_listeners"); 492 NavigateToPage("no_listeners");
494 NavigateToPageInNewTab("unload_sets_cookie"); 493 NavigateToPageInNewTab("unload_sets_cookie");
495 EXPECT_EQ("", GetCookies("no_listeners")); 494 EXPECT_EQ("", GetCookies("no_listeners"));
496 495
496 content::WebContentsDestroyedWatcher destroyed_watcher(
497 browser()->tab_strip_model()->GetActiveWebContents());
498
497 { 499 {
498 base::RunLoop run_loop; 500 base::RunLoop run_loop;
499 FastTabCloseTabStripModelObserver observer( 501 FastTabCloseTabStripModelObserver observer(
500 browser()->tab_strip_model(), &run_loop); 502 browser()->tab_strip_model(), &run_loop);
501 chrome::CloseTab(browser()); 503 chrome::CloseTab(browser());
502 run_loop.Run(); 504 run_loop.Run();
503 } 505 }
504 506
505 // Check that the browser only has the original tab. 507 // Check that the browser only has the original tab.
506 CheckTitle("no_listeners"); 508 CheckTitle("no_listeners");
507 EXPECT_EQ(1, browser()->tab_strip_model()->count()); 509 EXPECT_EQ(1, browser()->tab_strip_model()->count());
508 510
509 // Show that the web contents to go away after the was removed. 511 // Wait for the actual destruction.
510 // Without unload-detached, this times-out because it happens earlier. 512 destroyed_watcher.Wait();
511 content::WindowedNotificationObserver contents_destroyed_observer(
512 content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
513 content::NotificationService::AllSources());
514 contents_destroyed_observer.Wait();
515 513
516 // Browser still has the same tab. 514 // Verify that the destruction had the desired effect.
517 CheckTitle("no_listeners");
518 EXPECT_EQ(1, browser()->tab_strip_model()->count());
519 EXPECT_EQ("unloaded=ohyeah", GetCookies("no_listeners")); 515 EXPECT_EQ("unloaded=ohyeah", GetCookies("no_listeners"));
520 } 516 }
521 517
522 // Test that fast-tab-close does not break a solo tab. 518 // Test that fast-tab-close does not break a solo tab.
523 IN_PROC_BROWSER_TEST_F(FastUnloadTest, PRE_ClosingLastTabFinishesUnload) { 519 IN_PROC_BROWSER_TEST_F(FastUnloadTest, PRE_ClosingLastTabFinishesUnload) {
524 // The unload handler sleeps before setting the cookie to catch cases when 520 // The unload handler sleeps before setting the cookie to catch cases when
525 // unload handlers are not allowed to run to completion. (For example, 521 // unload handlers are not allowed to run to completion. (For example,
526 // using the detached handler for the tab and then closing the browser.) 522 // using the detached handler for the tab and then closing the browser.)
527 NavigateToPage("unload_sleep_before_cookie"); 523 NavigateToPage("unload_sleep_before_cookie");
528 EXPECT_EQ(1, browser()->tab_strip_model()->count()); 524 EXPECT_EQ(1, browser()->tab_strip_model()->count());
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
637 content::WindowedNotificationObserver window_observer( 633 content::WindowedNotificationObserver window_observer(
638 chrome::NOTIFICATION_BROWSER_CLOSED, 634 chrome::NOTIFICATION_BROWSER_CLOSED,
639 content::NotificationService::AllSources()); 635 content::NotificationService::AllSources());
640 chrome::CloseWindow(browser()); 636 chrome::CloseWindow(browser());
641 CrashTab(beforeunload_contents); 637 CrashTab(beforeunload_contents);
642 window_observer.Wait(); 638 window_observer.Wait();
643 } 639 }
644 640
645 // TODO(ojan): Add tests for unload/beforeunload that have multiple tabs 641 // TODO(ojan): Add tests for unload/beforeunload that have multiple tabs
646 // and multiple windows. 642 // and multiple windows.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698