Index: chrome/renderer/net/net_error_helper_unittest.cc |
diff --git a/chrome/renderer/net/net_error_helper_unittest.cc b/chrome/renderer/net/net_error_helper_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8c9043ad9663d3dc99ae6645844be8ff18ef8eb4 |
--- /dev/null |
+++ b/chrome/renderer/net/net_error_helper_unittest.cc |
@@ -0,0 +1,231 @@ |
+// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/renderer/net/net_error_helper.h" |
+ |
+#include "chrome/common/net/net_error_info.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+using chrome_common_net::DnsProbeStatus; |
+ |
+class TestNetErrorHelper : public NetErrorHelper { |
+ public: |
+ TestNetErrorHelper() |
+ : NetErrorHelper(NULL), |
+ mock_update_count_(0), |
+ mock_update_status_(chrome_common_net::DNS_PROBE_MAX) {} |
+ |
+ void StartLoad(bool is_main_frame, bool is_error_page) { |
+ OnStartLoad(is_main_frame, is_error_page); |
+ } |
+ |
+ void FailLoad(bool is_main_frame, bool is_dns_error) { |
+ OnFailLoad(is_main_frame, is_dns_error); |
+ } |
+ |
+ void CommitLoad(bool is_main_frame) { |
+ OnCommitLoad(is_main_frame); |
+ } |
+ |
+ void FinishLoad(bool is_main_frame) { |
+ OnFinishLoad(is_main_frame); |
+ } |
+ |
+ void ReceiveStatus(DnsProbeStatus status) { |
+ OnNetErrorInfo(static_cast<int>(status)); |
+ } |
+ |
+ int mock_update_count() const { return mock_update_count_; } |
+ DnsProbeStatus mock_update_status() const { return mock_update_status_; } |
+ |
+ protected: |
+ virtual void UpdateErrorPage() OVERRIDE { |
+ mock_update_count_++; |
+ mock_update_status_ = last_status_; |
+ } |
+ |
+ private: |
+ int mock_update_count_; |
+ DnsProbeStatus mock_update_status_; |
+}; |
+ |
+class NetErrorHelperTest : public testing::Test { |
+ protected: |
+ enum MainFrame { SUB_FRAME, MAIN_FRAME }; |
+ enum ErrorPage { NORMAL_PAGE, ERROR_PAGE }; |
+ enum ErrorType { OTHER_ERROR, DNS_ERROR }; |
+ |
+ void StartLoad(MainFrame main_frame, ErrorPage error_page) { |
+ helper_.StartLoad(main_frame == MAIN_FRAME, error_page == ERROR_PAGE); |
+ } |
+ |
+ void FailLoad(MainFrame main_frame, ErrorType error_type) { |
+ helper_.FailLoad(main_frame == MAIN_FRAME, error_type == DNS_ERROR); |
+ } |
+ |
+ void CommitLoad(MainFrame main_frame) { |
+ helper_.CommitLoad(main_frame == MAIN_FRAME); |
+ } |
+ |
+ void FinishLoad(MainFrame main_frame) { |
+ helper_.FinishLoad(main_frame == MAIN_FRAME); |
+ } |
+ |
+ void ReceiveStatus(DnsProbeStatus status) { |
+ helper_.ReceiveStatus(status); |
+ } |
+ |
+ int update_count() const { return helper_.mock_update_count(); } |
+ DnsProbeStatus update_status() const { return helper_.mock_update_status(); } |
+ |
+ private: |
+ TestNetErrorHelper helper_; |
+}; |
+ |
+TEST_F(NetErrorHelperTest, Null) { |
+ |
+} |
+ |
+TEST_F(NetErrorHelperTest, SuccessfulPageLoad) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ FinishLoad(MAIN_FRAME); |
+ |
+ EXPECT_EQ(0, update_count()); |
+} |
+ |
+TEST_F(NetErrorHelperTest, MainFrameNonDnsError) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ FailLoad(MAIN_FRAME, OTHER_ERROR); |
+ StartLoad(MAIN_FRAME, ERROR_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ FinishLoad(MAIN_FRAME); |
+ |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ EXPECT_EQ(0, update_count()); |
+} |
+ |
+TEST_F(NetErrorHelperTest, SubFrameDnsError) { |
+ StartLoad(SUB_FRAME, NORMAL_PAGE); |
+ FailLoad(SUB_FRAME, DNS_ERROR); |
+ StartLoad(SUB_FRAME, ERROR_PAGE); |
+ CommitLoad(SUB_FRAME); |
+ FinishLoad(SUB_FRAME); |
+ |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ EXPECT_EQ(0, update_count()); |
+} |
+ |
+TEST_F(NetErrorHelperTest, ProbeResultBeforeStart) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ FailLoad(MAIN_FRAME, DNS_ERROR); |
+ |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ StartLoad(MAIN_FRAME, ERROR_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ EXPECT_EQ(0, update_count()); |
+ |
+ FinishLoad(MAIN_FRAME); |
+ EXPECT_EQ(1, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, update_status()); |
+} |
+ |
+TEST_F(NetErrorHelperTest, ProbeResultBetweenStartAndCommit) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ FailLoad(MAIN_FRAME, DNS_ERROR); |
+ |
+ StartLoad(MAIN_FRAME, ERROR_PAGE); |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ CommitLoad(MAIN_FRAME); |
+ EXPECT_EQ(0, update_count()); |
+ |
+ FinishLoad(MAIN_FRAME); |
+ EXPECT_EQ(1, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, update_status()); |
+} |
+ |
+TEST_F(NetErrorHelperTest, ProbeResultBetweenCommitAndFinish) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ FailLoad(MAIN_FRAME, DNS_ERROR); |
+ |
+ StartLoad(MAIN_FRAME, ERROR_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ EXPECT_EQ(0, update_count()); |
+ |
+ FinishLoad(MAIN_FRAME); |
+ EXPECT_EQ(1, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, update_status()); |
+} |
+ |
+TEST_F(NetErrorHelperTest, ProbeResultAfterFinish) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ FailLoad(MAIN_FRAME, DNS_ERROR); |
+ StartLoad(MAIN_FRAME, ERROR_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ EXPECT_EQ(0, update_count()); |
+ |
+ FinishLoad(MAIN_FRAME); |
+ EXPECT_EQ(1, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_POSSIBLE, update_status()); |
+ |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ EXPECT_EQ(2, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, update_status()); |
+} |
+ |
+TEST_F(NetErrorHelperTest, ProbeResultBetweenNewStartAndCommit) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ FailLoad(MAIN_FRAME, DNS_ERROR); |
+ StartLoad(MAIN_FRAME, ERROR_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ EXPECT_EQ(0, update_count()); |
+ |
+ FinishLoad(MAIN_FRAME); |
+ EXPECT_EQ(1, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_POSSIBLE, update_status()); |
+ |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ EXPECT_EQ(2, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN, update_status()); |
+ |
+ CommitLoad(MAIN_FRAME); |
+ FinishLoad(MAIN_FRAME); |
+} |
+ |
+TEST_F(NetErrorHelperTest, ProbeResultBetweenNewCommitAndFinish) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ FailLoad(MAIN_FRAME, DNS_ERROR); |
+ StartLoad(MAIN_FRAME, ERROR_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ EXPECT_EQ(0, update_count()); |
+ |
+ FinishLoad(MAIN_FRAME); |
+ EXPECT_EQ(1, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_POSSIBLE, update_status()); |
+ |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ FinishLoad(MAIN_FRAME); |
+ EXPECT_EQ(1, update_count()); |
+} |
+TEST_F(NetErrorHelperTest, ProbeResultAfterNewFinish) { |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ FailLoad(MAIN_FRAME, DNS_ERROR); |
+ StartLoad(MAIN_FRAME, ERROR_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ EXPECT_EQ(0, update_count()); |
+ |
+ FinishLoad(MAIN_FRAME); |
+ EXPECT_EQ(1, update_count()); |
+ EXPECT_EQ(chrome_common_net::DNS_PROBE_POSSIBLE, update_status()); |
+ |
+ StartLoad(MAIN_FRAME, NORMAL_PAGE); |
+ CommitLoad(MAIN_FRAME); |
+ FinishLoad(MAIN_FRAME); |
+ ReceiveStatus(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
+ EXPECT_EQ(1, update_count()); |
+} |