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

Unified Diff: chrome/renderer/net/net_error_helper_unittest.cc

Issue 13270005: Display DNS probe results. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Tweak things, clean up unit tests Created 7 years, 6 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/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.

Powered by Google App Engine
This is Rietveld 408576698