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

Unified Diff: chrome/browser/net/net_error_tab_helper_unittest.cc

Issue 2345913002: Fix NetErrorTabHelper with PlzNavigate. (Closed)
Patch Set: fix NavigationHandle::IsErrorPage for reloads of error pages 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 side-by-side diff with in-line comments
Download patch
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());
}

Powered by Google App Engine
This is Rietveld 408576698