Chromium Code Reviews| Index: chrome/browser/net/net_error_tab_helper_unittest.cc |
| diff --git a/chrome/browser/net/net_error_tab_helper_unittest.cc b/chrome/browser/net/net_error_tab_helper_unittest.cc |
| index 579212ad768bf6c5db71d35a440edb31a375c911..4910426e93b84a20114636df0d7c0b939a537138 100644 |
| --- a/chrome/browser/net/net_error_tab_helper_unittest.cc |
| +++ b/chrome/browser/net/net_error_tab_helper_unittest.cc |
| @@ -8,11 +8,14 @@ |
| #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
| #include "components/error_page/common/net_error_info.h" |
| #include "content/public/browser/browser_thread.h" |
| +#include "content/public/browser/navigation_handle.h" |
| #include "content/public/test/test_renderer_host.h" |
| #include "net/base/net_errors.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "ui/base/page_transition_types.h" |
| +#undef NO_ERROR |
|
Julia Tuttle
2016/09/19 16:23:19
Comment where you're undefining this from?
|
| + |
| using chrome_browser_net::NetErrorTabHelper; |
| using error_page::DnsProbeStatus; |
| @@ -71,8 +74,7 @@ class TestNetErrorTabHelper : public NetErrorTabHelper { |
| class NetErrorTabHelperTest : public ChromeRenderViewHostTestHarness { |
| protected: |
| enum MainFrame { SUB_FRAME, MAIN_FRAME }; |
| - enum ErrorPage { NORMAL_PAGE, ERROR_PAGE }; |
| - enum ErrorType { DNS_ERROR, OTHER_ERROR }; |
| + enum ErrorType { DNS_ERROR, OTHER_ERROR, NO_ERROR }; |
| void SetUp() override { |
| ChromeRenderViewHostTestHarness::SetUp(); |
| @@ -97,35 +99,20 @@ class NetErrorTabHelperTest : public ChromeRenderViewHostTestHarness { |
| ChromeRenderViewHostTestHarness::TearDown(); |
| } |
| - void StartProvisionalLoad(MainFrame main_frame, ErrorPage error_page) { |
| - tab_helper_->DidStartProvisionalLoadForFrame( |
| - (main_frame == MAIN_FRAME) ? main_rfh() : subframe_, |
| - bogus_url_, // validated_url |
| - (error_page == ERROR_PAGE), |
| - false); // is_iframe_srcdoc |
| - } |
| - |
| - void CommitProvisionalLoad(MainFrame main_frame) { |
| - tab_helper_->DidCommitProvisionalLoadForFrame( |
| - (main_frame == MAIN_FRAME) ? main_rfh() : subframe_, |
| - bogus_url_, // url |
| - ui::PAGE_TRANSITION_TYPED); |
| - } |
| - |
| - void FailProvisionalLoad(MainFrame main_frame, ErrorType error_type) { |
| - int net_error; |
| - |
| + void DidFinishNavigation(MainFrame main_frame, |
| + ErrorType error_type) { |
| + net::Error net_error = net::OK; |
| if (error_type == DNS_ERROR) |
| net_error = net::ERR_NAME_NOT_RESOLVED; |
| else |
| net_error = net::ERR_TIMED_OUT; |
| - |
| - tab_helper_->DidFailProvisionalLoad( |
| - (main_frame == MAIN_FRAME) ? main_rfh() : subframe_, |
| - bogus_url_, // validated_url |
| - net_error, |
| - base::string16(), |
| - false); |
| + std::unique_ptr<content::NavigationHandle> navigation_handle( |
| + content::NavigationHandle::CreateNavigationHandleForTesting( |
| + bogus_url_, |
| + (main_frame == MAIN_FRAME) ? main_rfh() : subframe_, |
| + true, |
| + net_error)); |
| + // The destructor will call tab_helper_->DidFinishNavigation. |
| } |
| void FinishProbe(DnsProbeStatus status) { tab_helper_->FinishProbe(status); } |
| @@ -147,15 +134,13 @@ TEST_F(NetErrorTabHelperTest, Null) { |
| } |
| TEST_F(NetErrorTabHelperTest, MainFrameNonDnsError) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, OTHER_ERROR); |
| + DidFinishNavigation(MAIN_FRAME, OTHER_ERROR); |
| EXPECT_FALSE(probe_running()); |
| EXPECT_EQ(0, sent_count()); |
| } |
| TEST_F(NetErrorTabHelperTest, NonMainFrameDnsError) { |
| - StartProvisionalLoad(SUB_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(SUB_FRAME, DNS_ERROR); |
| + DidFinishNavigation(SUB_FRAME, DNS_ERROR); |
| EXPECT_FALSE(probe_running()); |
| EXPECT_EQ(0, sent_count()); |
| } |
| @@ -165,90 +150,16 @@ TEST_F(NetErrorTabHelperTest, NonMainFrameDnsError) { |
| // is going on, then fails over to the normal error page if and when Link |
| // Doctor fails to load or declines to provide a page. |
| -TEST_F(NetErrorTabHelperTest, ProbeResponseBeforeFirstCommit) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - FinishProbe(error_page::DNS_PROBE_FINISHED_NXDOMAIN); |
| - EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| - EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(1, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(1, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| - EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent()); |
| -} |
| - |
| -TEST_F(NetErrorTabHelperTest, ProbeResponseBetweenFirstAndSecondCommit) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| +TEST_F(NetErrorTabHelperTest, ProbeResponse) { |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| EXPECT_EQ(1, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| FinishProbe(error_page::DNS_PROBE_FINISHED_NXDOMAIN); |
| EXPECT_FALSE(probe_running()); |
| EXPECT_EQ(2, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| - EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(3, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent()); |
| -} |
| - |
| -TEST_F(NetErrorTabHelperTest, ProbeResponseAfterSecondCommit) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(1, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(1, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| - FinishProbe(error_page::DNS_PROBE_FINISHED_NXDOMAIN); |
| + DidFinishNavigation(MAIN_FRAME, NO_ERROR); |
| EXPECT_FALSE(probe_running()); |
| EXPECT_EQ(3, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent()); |
| @@ -257,129 +168,87 @@ TEST_F(NetErrorTabHelperTest, ProbeResponseAfterSecondCommit) { |
| // Send result even if a new page load has started; the error page is still |
| // visible, and the user might cancel the load. |
| TEST_F(NetErrorTabHelperTest, ProbeResponseAfterNewStart) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| EXPECT_EQ(1, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(1, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| EXPECT_EQ(2, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| + DidFinishNavigation(MAIN_FRAME, NO_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| + EXPECT_EQ(3, sent_count()); |
| FinishProbe(error_page::DNS_PROBE_FINISHED_NXDOMAIN); |
| EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(3, sent_count()); |
| + EXPECT_EQ(4, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent()); |
| } |
| // Don't send result if a new page has committed; the result would go to the |
| // wrong page, and the error page is gone anyway. |
| TEST_F(NetErrorTabHelperTest, ProbeResponseAfterNewCommit) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| EXPECT_EQ(1, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| - |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(1, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| - EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| - |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, NO_ERROR); |
| EXPECT_TRUE(probe_running()); |
| EXPECT_EQ(2, sent_count()); |
| FinishProbe(error_page::DNS_PROBE_FINISHED_NXDOMAIN); |
| EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| + EXPECT_EQ(3, sent_count()); |
| } |
| TEST_F(NetErrorTabHelperTest, MultipleDnsErrorsWithProbesWithoutErrorPages) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| + EXPECT_EQ(1, sent_count()); |
| FinishProbe(error_page::DNS_PROBE_FINISHED_NXDOMAIN); |
| EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| + EXPECT_EQ(2, sent_count()); |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| + EXPECT_EQ(3, sent_count()); |
| FinishProbe(error_page::DNS_PROBE_FINISHED_NO_INTERNET); |
| EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| + EXPECT_EQ(4, sent_count()); |
| } |
| TEST_F(NetErrorTabHelperTest, MultipleDnsErrorsWithProbesAndErrorPages) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(0, sent_count()); |
| + EXPECT_EQ(1, sent_count()); |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(1, sent_count()); |
| + EXPECT_EQ(2, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| FinishProbe(error_page::DNS_PROBE_FINISHED_NXDOMAIN); |
| EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| + EXPECT_EQ(3, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent()); |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| + EXPECT_EQ(4, sent_count()); |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(3, sent_count()); |
| + EXPECT_EQ(5, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| FinishProbe(error_page::DNS_PROBE_FINISHED_NO_INTERNET); |
| EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(4, sent_count()); |
| + EXPECT_EQ(6, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NO_INTERNET, |
| last_status_sent()); |
| } |
| @@ -387,33 +256,25 @@ TEST_F(NetErrorTabHelperTest, MultipleDnsErrorsWithProbesAndErrorPages) { |
| // If multiple DNS errors occur in a row before a probe result, don't start |
| // multiple probes. |
| TEST_F(NetErrorTabHelperTest, CoalesceFailures) { |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(1, sent_count()); |
| + EXPECT_EQ(2, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(2, sent_count()); |
| + EXPECT_EQ(3, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| - StartProvisionalLoad(MAIN_FRAME, NORMAL_PAGE); |
| - FailProvisionalLoad(MAIN_FRAME, DNS_ERROR); |
| - StartProvisionalLoad(MAIN_FRAME, ERROR_PAGE); |
| - CommitProvisionalLoad(MAIN_FRAME); |
| + DidFinishNavigation(MAIN_FRAME, DNS_ERROR); |
| EXPECT_TRUE(probe_running()); |
| - EXPECT_EQ(3, sent_count()); |
| + EXPECT_EQ(4, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_STARTED, last_status_sent()); |
| FinishProbe(error_page::DNS_PROBE_FINISHED_NXDOMAIN); |
| EXPECT_FALSE(probe_running()); |
| - EXPECT_EQ(4, sent_count()); |
| + EXPECT_EQ(5, sent_count()); |
| EXPECT_EQ(error_page::DNS_PROBE_FINISHED_NXDOMAIN, last_status_sent()); |
| } |