Chromium Code Reviews| 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) {} |
|
mmenke
2013/06/13 20:04:55
Per Google style guide, should have virtual destru
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Done.
|
| + |
| + 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) { |
|
mmenke
2013/06/13 20:04:55
Suggest "ReceiveProbeStatus"
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Done.
|
| + 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_; |
|
mmenke
2013/06/13 20:04:55
I think this variable name is rather unclear. I t
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Done.
|
| +}; |
| + |
| +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) { |
| + |
|
mmenke
2013/06/13 20:04:55
nit: Remove blank line.
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Done.
|
| +} |
| + |
| +TEST_F(NetErrorHelperTest, SuccessfulPageLoad) { |
| + StartLoad(MAIN_FRAME, NORMAL_PAGE); |
| + CommitLoad(MAIN_FRAME); |
| + FinishLoad(MAIN_FRAME); |
| + |
|
mmenke
2013/06/13 20:04:55
Suggest throwing in a probe result.
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Done.
|
| + 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()); |
|
mmenke
2013/06/13 20:04:55
Should we update in this case?
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Yes; the initial strings provided to the error pag
|
| + 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); |
|
mmenke
2013/06/13 20:04:55
Make sure no other updates here?
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Done.
|
| +} |
| + |
| +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()); |
| +} |
|
mmenke
2013/06/13 20:04:55
nit: Line break.
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Done.
|
| +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()); |
| +} |
|
mmenke
2013/06/13 20:04:55
Maybe a test with two updated DNS error pages, wit
Deprecated (see juliatuttle)
2013/06/18 19:36:37
Done.
|