OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 <string> | 5 #include <string> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 | 537 |
538 IN_PROC_BROWSER_TEST_F(BrowserTest, JavascriptAlertActivatesTab) { | 538 IN_PROC_BROWSER_TEST_F(BrowserTest, JavascriptAlertActivatesTab) { |
539 GURL url(ui_test_utils::GetTestUrl(base::FilePath( | 539 GURL url(ui_test_utils::GetTestUrl(base::FilePath( |
540 base::FilePath::kCurrentDirectory), base::FilePath(kTitle1File))); | 540 base::FilePath::kCurrentDirectory), base::FilePath(kTitle1File))); |
541 ui_test_utils::NavigateToURL(browser(), url); | 541 ui_test_utils::NavigateToURL(browser(), url); |
542 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); | 542 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); |
543 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 543 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
544 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); | 544 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); |
545 WebContents* second_tab = browser()->tab_strip_model()->GetWebContentsAt(1); | 545 WebContents* second_tab = browser()->tab_strip_model()->GetWebContentsAt(1); |
546 ASSERT_TRUE(second_tab); | 546 ASSERT_TRUE(second_tab); |
547 second_tab->GetMainFrame()->ExecuteJavaScriptForTests( | 547 second_tab->GetMainFrame()->ExecuteJavaScript( |
548 ASCIIToUTF16("alert('Activate!');")); | 548 ASCIIToUTF16("alert('Activate!');")); |
549 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); | 549 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); |
550 alert->CloseModalDialog(); | 550 alert->CloseModalDialog(); |
551 EXPECT_EQ(2, browser()->tab_strip_model()->count()); | 551 EXPECT_EQ(2, browser()->tab_strip_model()->count()); |
552 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); | 552 EXPECT_EQ(1, browser()->tab_strip_model()->active_index()); |
553 } | 553 } |
554 | 554 |
555 | 555 |
556 #if defined(OS_WIN) && !defined(NDEBUG) | 556 #if defined(OS_WIN) && !defined(NDEBUG) |
557 // http://crbug.com/114859. Times out frequently on Windows. | 557 // http://crbug.com/114859. Times out frequently on Windows. |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 IN_PROC_BROWSER_TEST_F(BrowserTest, DISABLED_CrossProcessNavCancelsDialogs) { | 644 IN_PROC_BROWSER_TEST_F(BrowserTest, DISABLED_CrossProcessNavCancelsDialogs) { |
645 ASSERT_TRUE(test_server()->Start()); | 645 ASSERT_TRUE(test_server()->Start()); |
646 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 646 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
647 GURL url(test_server()->GetURL("empty.html")); | 647 GURL url(test_server()->GetURL("empty.html")); |
648 ui_test_utils::NavigateToURL(browser(), url); | 648 ui_test_utils::NavigateToURL(browser(), url); |
649 | 649 |
650 // Test this with multiple alert dialogs to ensure that we can navigate away | 650 // Test this with multiple alert dialogs to ensure that we can navigate away |
651 // even if the renderer tries to synchronously create more. | 651 // even if the renderer tries to synchronously create more. |
652 // See http://crbug.com/312490. | 652 // See http://crbug.com/312490. |
653 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); | 653 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); |
654 contents->GetMainFrame()->ExecuteJavaScriptForTests( | 654 contents->GetMainFrame()->ExecuteJavaScript( |
655 ASCIIToUTF16("alert('one'); alert('two');")); | 655 ASCIIToUTF16("alert('one'); alert('two');")); |
656 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); | 656 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); |
657 EXPECT_TRUE(alert->IsValid()); | 657 EXPECT_TRUE(alert->IsValid()); |
658 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); | 658 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); |
659 EXPECT_TRUE(dialog_queue->HasActiveDialog()); | 659 EXPECT_TRUE(dialog_queue->HasActiveDialog()); |
660 | 660 |
661 // A cross-site navigation should force the dialog to close. | 661 // A cross-site navigation should force the dialog to close. |
662 GURL url2("http://www.example.com/empty.html"); | 662 GURL url2("http://www.example.com/empty.html"); |
663 ui_test_utils::NavigateToURL(browser(), url2); | 663 ui_test_utils::NavigateToURL(browser(), url2); |
664 EXPECT_FALSE(dialog_queue->HasActiveDialog()); | 664 EXPECT_FALSE(dialog_queue->HasActiveDialog()); |
665 | 665 |
666 // Make sure input events still work in the renderer process. | 666 // Make sure input events still work in the renderer process. |
667 EXPECT_FALSE(contents->GetRenderProcessHost()->IgnoreInputEvents()); | 667 EXPECT_FALSE(contents->GetRenderProcessHost()->IgnoreInputEvents()); |
668 } | 668 } |
669 | 669 |
670 // Make sure that dialogs are closed after a renderer process dies, and that | 670 // Make sure that dialogs are closed after a renderer process dies, and that |
671 // subsequent navigations work. See http://crbug/com/343265. | 671 // subsequent navigations work. See http://crbug/com/343265. |
672 IN_PROC_BROWSER_TEST_F(BrowserTest, SadTabCancelsDialogs) { | 672 IN_PROC_BROWSER_TEST_F(BrowserTest, SadTabCancelsDialogs) { |
673 ASSERT_TRUE(test_server()->Start()); | 673 ASSERT_TRUE(test_server()->Start()); |
674 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 674 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
675 GURL beforeunload_url(test_server()->GetURL("files/beforeunload.html")); | 675 GURL beforeunload_url(test_server()->GetURL("files/beforeunload.html")); |
676 ui_test_utils::NavigateToURL(browser(), beforeunload_url); | 676 ui_test_utils::NavigateToURL(browser(), beforeunload_url); |
677 | 677 |
678 // Start a navigation to trigger the beforeunload dialog. | 678 // Start a navigation to trigger the beforeunload dialog. |
679 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); | 679 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); |
680 contents->GetMainFrame()->ExecuteJavaScriptForTests( | 680 contents->GetMainFrame()->ExecuteJavaScript( |
681 ASCIIToUTF16("window.location.href = 'data:text/html,foo'")); | 681 ASCIIToUTF16("window.location.href = 'data:text/html,foo'")); |
682 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); | 682 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); |
683 EXPECT_TRUE(alert->IsValid()); | 683 EXPECT_TRUE(alert->IsValid()); |
684 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); | 684 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); |
685 EXPECT_TRUE(dialog_queue->HasActiveDialog()); | 685 EXPECT_TRUE(dialog_queue->HasActiveDialog()); |
686 | 686 |
687 // Crash the renderer process and ensure the dialog is gone. | 687 // Crash the renderer process and ensure the dialog is gone. |
688 content::RenderProcessHost* child_process = contents->GetRenderProcessHost(); | 688 content::RenderProcessHost* child_process = contents->GetRenderProcessHost(); |
689 content::RenderProcessHostWatcher crash_observer( | 689 content::RenderProcessHostWatcher crash_observer( |
690 child_process, | 690 child_process, |
691 content::RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT); | 691 content::RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT); |
692 child_process->Shutdown(0, false); | 692 child_process->Shutdown(0, false); |
693 crash_observer.Wait(); | 693 crash_observer.Wait(); |
694 EXPECT_FALSE(dialog_queue->HasActiveDialog()); | 694 EXPECT_FALSE(dialog_queue->HasActiveDialog()); |
695 | 695 |
696 // Make sure subsequent navigations work. | 696 // Make sure subsequent navigations work. |
697 GURL url2("http://www.example.com/files/empty.html"); | 697 GURL url2("http://www.example.com/files/empty.html"); |
698 ui_test_utils::NavigateToURL(browser(), url2); | 698 ui_test_utils::NavigateToURL(browser(), url2); |
699 } | 699 } |
700 | 700 |
701 // Make sure that dialogs opened by subframes are closed when the process dies. | 701 // Make sure that dialogs opened by subframes are closed when the process dies. |
702 // See http://crbug.com/366510. | 702 // See http://crbug.com/366510. |
703 IN_PROC_BROWSER_TEST_F(BrowserTest, SadTabCancelsSubframeDialogs) { | 703 IN_PROC_BROWSER_TEST_F(BrowserTest, SadTabCancelsSubframeDialogs) { |
704 // Navigate to an iframe that opens an alert dialog. | 704 // Navigate to an iframe that opens an alert dialog. |
705 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); | 705 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); |
706 contents->GetMainFrame()->ExecuteJavaScriptForTests( | 706 contents->GetMainFrame()->ExecuteJavaScript( |
707 ASCIIToUTF16("window.location.href = 'data:text/html," | 707 ASCIIToUTF16("window.location.href = 'data:text/html," |
708 "<iframe srcdoc=\"<script>alert(1)</script>\">'")); | 708 "<iframe srcdoc=\"<script>alert(1)</script>\">'")); |
709 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); | 709 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); |
710 EXPECT_TRUE(alert->IsValid()); | 710 EXPECT_TRUE(alert->IsValid()); |
711 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); | 711 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); |
712 EXPECT_TRUE(dialog_queue->HasActiveDialog()); | 712 EXPECT_TRUE(dialog_queue->HasActiveDialog()); |
713 | 713 |
714 // Crash the renderer process and ensure the dialog is gone. | 714 // Crash the renderer process and ensure the dialog is gone. |
715 content::RenderProcessHost* child_process = contents->GetRenderProcessHost(); | 715 content::RenderProcessHost* child_process = contents->GetRenderProcessHost(); |
716 content::RenderProcessHostWatcher crash_observer( | 716 content::RenderProcessHostWatcher crash_observer( |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
760 // Navigate to another page, but click cancel in the dialog. Make sure that | 760 // Navigate to another page, but click cancel in the dialog. Make sure that |
761 // the throbber stops spinning. | 761 // the throbber stops spinning. |
762 chrome::Reload(browser(), CURRENT_TAB); | 762 chrome::Reload(browser(), CURRENT_TAB); |
763 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); | 763 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); |
764 alert->CloseModalDialog(); | 764 alert->CloseModalDialog(); |
765 EXPECT_FALSE( | 765 EXPECT_FALSE( |
766 browser()->tab_strip_model()->GetActiveWebContents()->IsLoading()); | 766 browser()->tab_strip_model()->GetActiveWebContents()->IsLoading()); |
767 | 767 |
768 // Clear the beforeunload handler so the test can easily exit. | 768 // Clear the beforeunload handler so the test can easily exit. |
769 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame()-> | 769 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame()-> |
770 ExecuteJavaScriptForTests(ASCIIToUTF16("onbeforeunload=null;")); | 770 ExecuteJavaScript(ASCIIToUTF16("onbeforeunload=null;")); |
771 } | 771 } |
772 | 772 |
773 class RedirectObserver : public content::WebContentsObserver { | 773 class RedirectObserver : public content::WebContentsObserver { |
774 public: | 774 public: |
775 explicit RedirectObserver(content::WebContents* web_contents) | 775 explicit RedirectObserver(content::WebContents* web_contents) |
776 : WebContentsObserver(web_contents) { | 776 : WebContentsObserver(web_contents) { |
777 } | 777 } |
778 | 778 |
779 void DidNavigateAnyFrame( | 779 void DidNavigateAnyFrame( |
780 content::RenderFrameHost* render_frame_host, | 780 content::RenderFrameHost* render_frame_host, |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 GetActiveWebContents()->GetController().GetPendingEntry(); | 921 GetActiveWebContents()->GetController().GetPendingEntry(); |
922 EXPECT_EQ(NULL, entry); | 922 EXPECT_EQ(NULL, entry); |
923 | 923 |
924 // Wait for the ShouldClose_ACK to arrive. We can detect it by waiting for | 924 // Wait for the ShouldClose_ACK to arrive. We can detect it by waiting for |
925 // the pending RVH to be destroyed. | 925 // the pending RVH to be destroyed. |
926 host_destroyed_observer.Wait(); | 926 host_destroyed_observer.Wait(); |
927 EXPECT_EQ(url, browser()->toolbar_model()->GetURL()); | 927 EXPECT_EQ(url, browser()->toolbar_model()->GetURL()); |
928 | 928 |
929 // Clear the beforeunload handler so the test can easily exit. | 929 // Clear the beforeunload handler so the test can easily exit. |
930 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame()-> | 930 browser()->tab_strip_model()->GetActiveWebContents()->GetMainFrame()-> |
931 ExecuteJavaScriptForTests(ASCIIToUTF16("onbeforeunload=null;")); | 931 ExecuteJavaScript(ASCIIToUTF16("onbeforeunload=null;")); |
932 } | 932 } |
933 | 933 |
934 // Test for crbug.com/11647. A page closed with window.close() should not have | 934 // Test for crbug.com/11647. A page closed with window.close() should not have |
935 // two beforeunload dialogs shown. | 935 // two beforeunload dialogs shown. |
936 // http://crbug.com/410891 | 936 // http://crbug.com/410891 |
937 IN_PROC_BROWSER_TEST_F(BrowserTest, | 937 IN_PROC_BROWSER_TEST_F(BrowserTest, |
938 DISABLED_SingleBeforeUnloadAfterWindowClose) { | 938 DISABLED_SingleBeforeUnloadAfterWindowClose) { |
939 browser() | 939 browser() |
940 ->tab_strip_model() | 940 ->tab_strip_model() |
941 ->GetActiveWebContents() | 941 ->GetActiveWebContents() |
(...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2061 | 2061 |
2062 // Ensure that creating an interstitial page closes any JavaScript dialogs | 2062 // Ensure that creating an interstitial page closes any JavaScript dialogs |
2063 // that were present on the previous page. See http://crbug.com/295695. | 2063 // that were present on the previous page. See http://crbug.com/295695. |
2064 IN_PROC_BROWSER_TEST_F(BrowserTest, InterstitialClosesDialogs) { | 2064 IN_PROC_BROWSER_TEST_F(BrowserTest, InterstitialClosesDialogs) { |
2065 ASSERT_TRUE(test_server()->Start()); | 2065 ASSERT_TRUE(test_server()->Start()); |
2066 host_resolver()->AddRule("www.example.com", "127.0.0.1"); | 2066 host_resolver()->AddRule("www.example.com", "127.0.0.1"); |
2067 GURL url(test_server()->GetURL("empty.html")); | 2067 GURL url(test_server()->GetURL("empty.html")); |
2068 ui_test_utils::NavigateToURL(browser(), url); | 2068 ui_test_utils::NavigateToURL(browser(), url); |
2069 | 2069 |
2070 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); | 2070 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); |
2071 contents->GetMainFrame()->ExecuteJavaScriptForTests( | 2071 contents->GetMainFrame()->ExecuteJavaScript( |
2072 ASCIIToUTF16("alert('Dialog showing!');")); | 2072 ASCIIToUTF16("alert('Dialog showing!');")); |
2073 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); | 2073 AppModalDialog* alert = ui_test_utils::WaitForAppModalDialog(); |
2074 EXPECT_TRUE(alert->IsValid()); | 2074 EXPECT_TRUE(alert->IsValid()); |
2075 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); | 2075 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); |
2076 EXPECT_TRUE(dialog_queue->HasActiveDialog()); | 2076 EXPECT_TRUE(dialog_queue->HasActiveDialog()); |
2077 | 2077 |
2078 TestInterstitialPage* interstitial = | 2078 TestInterstitialPage* interstitial = |
2079 new TestInterstitialPage(contents, false, GURL()); | 2079 new TestInterstitialPage(contents, false, GURL()); |
2080 content::WaitForInterstitialAttach(contents); | 2080 content::WaitForInterstitialAttach(contents); |
2081 | 2081 |
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2998 // the observer (to make sure that the event fires twice and we don't | 2998 // the observer (to make sure that the event fires twice and we don't |
2999 // just see the previous event's style). | 2999 // just see the previous event's style). |
3000 observer.ClearLatestSecurityStyleAndExplanations(); | 3000 observer.ClearLatestSecurityStyleAndExplanations(); |
3001 | 3001 |
3002 // Other conditions cannot be tested after clicking through because | 3002 // Other conditions cannot be tested after clicking through because |
3003 // once the interstitial is clicked through, all URLs for this host | 3003 // once the interstitial is clicked through, all URLs for this host |
3004 // will remain in a broken state. | 3004 // will remain in a broken state. |
3005 ProceedThroughInterstitial(web_contents); | 3005 ProceedThroughInterstitial(web_contents); |
3006 CheckExpiredSecurityStyle(observer); | 3006 CheckExpiredSecurityStyle(observer); |
3007 } | 3007 } |
OLD | NEW |