Index: chrome/renderer/net/net_error_helper_core_unittest.cc |
diff --git a/chrome/renderer/net/net_error_helper_core_unittest.cc b/chrome/renderer/net/net_error_helper_core_unittest.cc |
index 66367bc8052a9df33c98b36900291ab504c7aabb..4dc407374eae8d8cfc40252a6bd0827c1e22c33f 100644 |
--- a/chrome/renderer/net/net_error_helper_core_unittest.cc |
+++ b/chrome/renderer/net/net_error_helper_core_unittest.cc |
@@ -4,17 +4,27 @@ |
#include "chrome/renderer/net/net_error_helper_core.h" |
+#include <map> |
+#include <string> |
+#include <vector> |
+ |
#include "base/json/json_reader.h" |
#include "base/json/json_writer.h" |
#include "base/logging.h" |
+#include "base/metrics/statistics_recorder.h" |
#include "base/strings/stringprintf.h" |
#include "base/timer/mock_timer.h" |
#include "base/timer/timer.h" |
#include "base/values.h" |
#include "chrome/common/net/net_error_info.h" |
+#include "chrome/test/base/uma_histogram_helper.h" |
+#include "content/public/common/url_constants.h" |
#include "net/base/net_errors.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/WebKit/public/platform/WebURLError.h" |
+#include "url/gurl.h" |
+ |
+namespace { |
using blink::WebURLError; |
using chrome_common_net::DnsProbeStatus; |
@@ -121,14 +131,6 @@ WebURLError NetError(net::Error net_error) { |
return error; |
} |
-WebURLError HttpError(int status_code) { |
- WebURLError error; |
- error.unreachableURL = GURL(kFailedUrl); |
- error.domain = blink::WebString::fromUTF8("http"); |
- error.reason = status_code; |
- return error; |
-} |
- |
// Convenience functions that create an error string for a non-POST request. |
std::string ProbeErrorString(DnsProbeStatus status) { |
@@ -142,15 +144,16 @@ std::string NetErrorString(net::Error net_error) { |
class NetErrorHelperCoreTest : public testing::Test, |
public NetErrorHelperCore::Delegate { |
public: |
- NetErrorHelperCoreTest() |
- : timer_(new base::MockTimer(false, false)), |
- core_(this), |
- update_count_(0), |
- error_html_update_count_(0), |
- reload_count_(0), |
- load_stale_count_(0), |
- enable_page_helper_functions_count_(0), |
- tracking_request_count_(0) { |
+ NetErrorHelperCoreTest() : timer_(new base::MockTimer(false, false)), |
+ core_(this), |
+ update_count_(0), |
+ error_html_update_count_(0), |
+ reload_count_(0), |
+ load_stale_count_(0), |
+ enable_page_helper_functions_count_(0), |
+ default_url_(GURL(kFailedUrl)), |
+ error_url_(GURL(content::kUnreachableWebDataURL)), |
+ tracking_request_count_(0) { |
core_.set_auto_reload_enabled(false); |
core_.set_timer_for_testing(scoped_ptr<base::Timer>(timer_)); |
} |
@@ -160,6 +163,10 @@ class NetErrorHelperCoreTest : public testing::Test, |
EXPECT_FALSE(is_url_being_fetched()); |
} |
+ virtual void SetUp() OVERRIDE { |
+ base::StatisticsRecorder::Initialize(); |
+ } |
+ |
NetErrorHelperCore& core() { return core_; } |
const GURL& url_being_fetched() const { return url_being_fetched_; } |
@@ -177,6 +184,14 @@ class NetErrorHelperCoreTest : public testing::Test, |
return load_stale_url_; |
} |
+ const GURL& default_url() const { |
+ return default_url_; |
+ } |
+ |
+ const GURL& error_url() const { |
+ return error_url_; |
+ } |
+ |
int enable_page_helper_functions_count() const { |
return enable_page_helper_functions_count_; |
} |
@@ -225,14 +240,15 @@ class NetErrorHelperCoreTest : public testing::Test, |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, |
+ error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
} |
void DoSuccessLoad() { |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::NON_ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, default_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
} |
@@ -384,6 +400,9 @@ class NetErrorHelperCoreTest : public testing::Test, |
int enable_page_helper_functions_count_; |
+ const GURL default_url_; |
+ const GURL error_url_; |
+ |
GURL last_tracking_url_; |
std::string last_tracking_request_body_; |
int tracking_request_count_; |
@@ -400,7 +419,7 @@ TEST_F(NetErrorHelperCoreTest, Null) { |
TEST_F(NetErrorHelperCoreTest, SuccessfulPageLoad) { |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::NON_ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, default_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
EXPECT_EQ(0, error_html_update_count()); |
@@ -410,7 +429,7 @@ TEST_F(NetErrorHelperCoreTest, SuccessfulPageLoadWithNavigationCorrections) { |
EnableNavigationCorrections(); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::NON_ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, default_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
EXPECT_EQ(0, error_html_update_count()); |
@@ -433,7 +452,7 @@ TEST_F(NetErrorHelperCoreTest, MainFrameNonDnsError) { |
EXPECT_EQ(0, enable_page_helper_functions_count()); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
EXPECT_EQ(0, error_html_update_count()); |
@@ -458,7 +477,7 @@ TEST_F(NetErrorHelperCoreTest, MainFrameNonDnsErrorWithCorrections) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
EXPECT_EQ(0, error_html_update_count()); |
@@ -489,7 +508,7 @@ TEST_F(NetErrorHelperCoreTest, MainFrameNonDnsErrorSpuriousStatus) { |
NetErrorHelperCore::ERROR_PAGE); |
core().OnNetErrorInfo(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnNetErrorInfo(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
@@ -515,7 +534,7 @@ TEST_F(NetErrorHelperCoreTest, SubFrameDnsError) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::SUB_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::SUB_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::SUB_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::SUB_FRAME); |
EXPECT_EQ(0, update_count()); |
EXPECT_EQ(0, error_html_update_count()); |
@@ -539,7 +558,7 @@ TEST_F(NetErrorHelperCoreTest, SubFrameDnsErrorWithCorrections) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::SUB_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::SUB_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::SUB_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::SUB_FRAME); |
EXPECT_EQ(0, update_count()); |
EXPECT_EQ(0, error_html_update_count()); |
@@ -569,7 +588,7 @@ TEST_F(NetErrorHelperCoreTest, SubFrameDnsErrorSpuriousStatus) { |
NetErrorHelperCore::ERROR_PAGE); |
core().OnNetErrorInfo(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
- core().OnCommitLoad(NetErrorHelperCore::SUB_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::SUB_FRAME, error_url()); |
core().OnNetErrorInfo(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
core().OnFinishLoad(NetErrorHelperCore::SUB_FRAME); |
@@ -602,7 +621,7 @@ TEST_F(NetErrorHelperCoreTest, FinishedBeforeProbe) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
@@ -640,7 +659,7 @@ TEST_F(NetErrorHelperCoreTest, FinishedBeforeProbeNotRun) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
@@ -674,7 +693,7 @@ TEST_F(NetErrorHelperCoreTest, FinishedBeforeProbeInconclusive) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
@@ -712,7 +731,7 @@ TEST_F(NetErrorHelperCoreTest, FinishedBeforeProbeNoInternet) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
@@ -751,7 +770,7 @@ TEST_F(NetErrorHelperCoreTest, FinishedBeforeProbeBadConfig) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
@@ -791,7 +810,7 @@ TEST_F(NetErrorHelperCoreTest, FinishedAfterStartProbe) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
// Nothing should be done when a probe status comes in before loading |
// finishes. |
@@ -838,7 +857,7 @@ TEST_F(NetErrorHelperCoreTest, FinishedBeforeProbePost) { |
EXPECT_EQ(0, enable_page_helper_functions_count()); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, update_count()); |
EXPECT_EQ(1, enable_page_helper_functions_count()); |
@@ -882,7 +901,7 @@ TEST_F(NetErrorHelperCoreTest, ProbeFinishesEarly) { |
core().OnNetErrorInfo(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN); |
EXPECT_EQ(0, update_count()); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
EXPECT_EQ(0, update_count()); |
// When loading finishes, however, the buffered probe status should be sent |
@@ -916,7 +935,7 @@ TEST_F(NetErrorHelperCoreTest, TwoErrorsWithProbes) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Probe results come in. |
@@ -942,7 +961,7 @@ TEST_F(NetErrorHelperCoreTest, TwoErrorsWithProbes) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(2, update_count()); |
@@ -978,7 +997,7 @@ TEST_F(NetErrorHelperCoreTest, TwoErrorsWithProbesAfterSecondStarts) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// The process starts again. |
@@ -1006,7 +1025,7 @@ TEST_F(NetErrorHelperCoreTest, TwoErrorsWithProbesAfterSecondStarts) { |
last_error_html()); |
// Second page finishes loading, and is updated using the same probe result. |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(3, update_count()); |
EXPECT_EQ(ProbeErrorString(chrome_common_net::DNS_PROBE_FINISHED_NXDOMAIN), |
@@ -1052,7 +1071,7 @@ TEST_F(NetErrorHelperCoreTest, ErrorPageLoadInterrupted) { |
EXPECT_EQ(ProbeErrorString(chrome_common_net::DNS_PROBE_POSSIBLE), html); |
// Error page finishes loading. |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Probe results come in. |
@@ -1095,7 +1114,7 @@ TEST_F(NetErrorHelperCoreTest, NoCorrectionsForHttps) { |
// The blank page loads, no error page is loaded. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_FALSE(is_url_being_fetched()); |
EXPECT_FALSE(last_error_page_params()); |
@@ -1132,7 +1151,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsReceivedBeforeProbe) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
// Corrections retrieval starts when the error page finishes loading. |
EXPECT_FALSE(is_url_being_fetched()); |
@@ -1152,7 +1171,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsReceivedBeforeProbe) { |
// Corrections load. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Any probe statuses should be ignored. |
@@ -1181,7 +1200,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsRetrievedAfterProbes) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
EXPECT_FALSE(last_error_page_params()); |
@@ -1205,7 +1224,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsRetrievedAfterProbes) { |
// Corrections load. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(1, error_html_update_count()); |
EXPECT_EQ(0, update_count()); |
@@ -1229,7 +1248,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsFailLoadNoProbes) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Corrections request fails, final error page is shown. |
@@ -1244,7 +1263,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsFailLoadNoProbes) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// If probe statuses come in last from another page load, they should be |
@@ -1273,7 +1292,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsFailLoadBeforeProbe) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Corrections request fails, probe pending page shown. |
@@ -1288,7 +1307,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsFailLoadBeforeProbe) { |
// Probe page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Probe statuses comes in, and page is updated. |
@@ -1325,7 +1344,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsFailAfterProbe) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Results come in, but end up being ignored. |
@@ -1345,7 +1364,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsFailAfterProbe) { |
// Probe page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Probe statuses comes in, and page is updated. |
@@ -1385,7 +1404,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsInterruptedBeforeCommit) { |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::NON_ERROR_PAGE); |
EXPECT_FALSE(is_url_being_fetched()); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, default_url()); |
EXPECT_FALSE(is_url_being_fetched()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
@@ -1412,14 +1431,14 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsInterruptedBeforeLoad) { |
// The blank page starts loading and is committed. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
// A new page load interrupts the original load. |
EXPECT_FALSE(is_url_being_fetched()); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::NON_ERROR_PAGE); |
EXPECT_FALSE(is_url_being_fetched()); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, default_url()); |
EXPECT_FALSE(is_url_being_fetched()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
@@ -1446,7 +1465,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsInterrupted) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
@@ -1467,7 +1486,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsInterrupted) { |
EXPECT_TRUE(html.empty()); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
EXPECT_FALSE(is_url_being_fetched()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
@@ -1505,7 +1524,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsStopped) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
@@ -1530,7 +1549,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsStopped) { |
// The blank page loads again. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
@@ -1544,7 +1563,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsStopped) { |
// Probe page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Probe statuses comes in, and page is updated. |
@@ -1580,7 +1599,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsDisabledBeforeFetch) { |
NetErrorHelperCore::ERROR_PAGE); |
// Corrections is disabled. |
DisableNavigationCorrections(); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
EXPECT_FALSE(last_error_page_params()); |
@@ -1596,7 +1615,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsDisabledBeforeFetch) { |
// Corrections load. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(1, error_html_update_count()); |
EXPECT_EQ(0, update_count()); |
@@ -1620,7 +1639,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsDisabledDuringFetch) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
EXPECT_FALSE(last_error_page_params()); |
@@ -1639,7 +1658,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsDisabledDuringFetch) { |
// Corrections load. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(1, error_html_update_count()); |
EXPECT_EQ(0, update_count()); |
@@ -1666,7 +1685,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsWithoutSearch) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
EXPECT_FALSE(last_error_page_params()); |
@@ -1687,7 +1706,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsWithoutSearch) { |
// Corrections load. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(1, error_html_update_count()); |
EXPECT_EQ(0, update_count()); |
@@ -1714,7 +1733,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsOnlySearchSuggestion) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_TRUE(is_url_being_fetched()); |
EXPECT_FALSE(last_error_page_params()); |
@@ -1735,7 +1754,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionsOnlySearchSuggestion) { |
// Corrections load. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(1, error_html_update_count()); |
EXPECT_EQ(0, update_count()); |
@@ -1758,7 +1777,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionServiceReturnsNonJsonResult) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Corrections request fails, final error page is shown. |
@@ -1773,7 +1792,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionServiceReturnsNonJsonResult) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
} |
@@ -1795,7 +1814,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionServiceReturnsInvalidJsonResult) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
// Corrections request fails, final error page is shown. |
@@ -1810,7 +1829,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionServiceReturnsInvalidJsonResult) { |
// Error page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
} |
@@ -1834,7 +1853,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionClickTracking) { |
// The blank page loads. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
// Corrections retrieval starts when the error page finishes loading. |
EXPECT_FALSE(is_url_being_fetched()); |
@@ -1854,7 +1873,7 @@ TEST_F(NetErrorHelperCoreTest, CorrectionClickTracking) { |
// Corrections load. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_EQ(0, tracking_request_count()); |
@@ -2000,6 +2019,8 @@ TEST_F(NetErrorHelperCoreTest, AutoReloadRestartsOnOnline) { |
DoErrorLoad(net::ERR_CONNECTION_RESET); |
EXPECT_TRUE(timer()->IsRunning()); |
EXPECT_NE(delay, timer()->GetCurrentDelay()); |
+ core().NetworkStateChanged(false); |
+ EXPECT_FALSE(timer()->IsRunning()); |
core().NetworkStateChanged(true); |
EXPECT_TRUE(timer()->IsRunning()); |
EXPECT_EQ(delay, timer()->GetCurrentDelay()); |
@@ -2015,24 +2036,13 @@ TEST_F(NetErrorHelperCoreTest, AutoReloadDoesNotStartOnOnline) { |
EXPECT_FALSE(timer()->IsRunning()); |
} |
-TEST_F(NetErrorHelperCoreTest, AutoReloadStopsOnOffline) { |
+TEST_F(NetErrorHelperCoreTest, AutoReloadDoesNotStartOffline) { |
core().set_auto_reload_enabled(true); |
- DoErrorLoad(net::ERR_CONNECTION_RESET); |
- EXPECT_TRUE(timer()->IsRunning()); |
core().NetworkStateChanged(false); |
- EXPECT_FALSE(timer()->IsRunning()); |
- EXPECT_EQ(0, core().auto_reload_count()); |
-} |
- |
-TEST_F(NetErrorHelperCoreTest, AutoReloadStopsOnOfflineThenRestartsOnOnline) { |
- core().set_auto_reload_enabled(true); |
DoErrorLoad(net::ERR_CONNECTION_RESET); |
- EXPECT_TRUE(timer()->IsRunning()); |
- core().NetworkStateChanged(false); |
EXPECT_FALSE(timer()->IsRunning()); |
core().NetworkStateChanged(true); |
EXPECT_TRUE(timer()->IsRunning()); |
- EXPECT_EQ(0, core().auto_reload_count()); |
} |
TEST_F(NetErrorHelperCoreTest, AutoReloadDoesNotRestartOnOnlineAfterStop) { |
@@ -2078,7 +2088,7 @@ TEST_F(NetErrorHelperCoreTest, AutoReloadSlowError) { |
NetError(net::ERR_CONNECTION_RESET), false, &html); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
EXPECT_FALSE(timer()->IsRunning()); |
// Start a new non-error page load. |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
@@ -2087,7 +2097,7 @@ TEST_F(NetErrorHelperCoreTest, AutoReloadSlowError) { |
// Finish the error page load. |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_FALSE(timer()->IsRunning()); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_FALSE(timer()->IsRunning()); |
} |
@@ -2102,7 +2112,7 @@ TEST_F(NetErrorHelperCoreTest, AutoReloadOnlineSlowError) { |
NetError(net::ERR_CONNECTION_RESET), false, &html); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
EXPECT_FALSE(timer()->IsRunning()); |
core().NetworkStateChanged(true); |
EXPECT_FALSE(timer()->IsRunning()); |
@@ -2127,7 +2137,7 @@ TEST_F(NetErrorHelperCoreTest, AutoReloadOnlinePendingError) { |
core().NetworkStateChanged(true); |
EXPECT_FALSE(timer()->IsRunning()); |
core().NetworkStateChanged(false); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
EXPECT_FALSE(timer()->IsRunning()); |
core().NetworkStateChanged(true); |
@@ -2144,7 +2154,7 @@ TEST_F(NetErrorHelperCoreTest, AutoReloadOnlinePartialErrorReplacement) { |
NetError(net::ERR_CONNECTION_RESET), false, &html); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::ERROR_PAGE); |
- core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, error_url()); |
core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
NetErrorHelperCore::NON_ERROR_PAGE); |
@@ -2157,6 +2167,238 @@ TEST_F(NetErrorHelperCoreTest, AutoReloadOnlinePartialErrorReplacement) { |
EXPECT_FALSE(timer()->IsRunning()); |
} |
+// Return the count for the named histogram, or 0 if there is no histogram by |
+// that name. This function is error-tolerant because histograms that have no |
+// data points may not be registered, and the unit tests below still need to be |
+// able to check that they haven't changed. |
+int GetHistogramCount(const char *name) { |
+ base::HistogramBase* histogram = |
+ base::StatisticsRecorder::FindHistogram(name); |
+ if (!histogram) |
+ return 0; |
+ scoped_ptr<base::HistogramSamples> samples = histogram->SnapshotSamples(); |
+ if (!samples) |
+ return 0; |
+ return samples->TotalCount(); |
+} |
+ |
+void ExpectHistogramDelta(const char *name, int old_count, int delta) { |
+ int new_count = GetHistogramCount(name); |
+ EXPECT_EQ(old_count + delta, new_count) << "For histogram " << name; |
+} |
+ |
+class NetErrorHelperCoreHistogramTest : public NetErrorHelperCoreTest { |
+ public: |
+ virtual void SetUp() OVERRIDE { |
+ NetErrorHelperCoreTest::SetUp(); |
+ StoreOldCounts(); |
+ core().set_auto_reload_enabled(true); |
+ } |
+ |
+ void ExpectDelta(const char *name, int delta) { |
+ DCHECK(old_counts_.count(name) == 1); |
+ ExpectHistogramDelta(name, old_counts_[name], delta); |
+ } |
+ |
+ static const char kCountAtStop[]; |
+ static const char kErrorAtStop[]; |
+ static const char kCountAtSuccess[]; |
+ static const char kErrorAtSuccess[]; |
+ static const char kErrorAtFirstSuccess[]; |
+ |
+ private: |
+ void StoreOldCounts() { |
+ for (size_t i = 0; kHistogramNames[i]; i++) |
+ old_counts_[kHistogramNames[i]] = GetHistogramCount(kHistogramNames[i]); |
+ } |
+ |
+ static const char *kHistogramNames[]; |
+ |
+ std::map<std::string, int> old_counts_; |
+}; |
+ |
+const char NetErrorHelperCoreHistogramTest::kCountAtStop[] = |
+ "Net.AutoReload.CountAtStop"; |
+const char NetErrorHelperCoreHistogramTest::kErrorAtStop[] = |
+ "Net.AutoReload.ErrorAtStop"; |
+const char NetErrorHelperCoreHistogramTest::kCountAtSuccess[] = |
+ "Net.AutoReload.CountAtSuccess"; |
+const char NetErrorHelperCoreHistogramTest::kErrorAtSuccess[] = |
+ "Net.AutoReload.ErrorAtSuccess"; |
+const char NetErrorHelperCoreHistogramTest::kErrorAtFirstSuccess[] = |
+ "Net.AutoReload.ErrorAtFirstSuccess"; |
+const char *NetErrorHelperCoreHistogramTest::kHistogramNames[] = { |
+ kCountAtStop, |
+ kErrorAtStop, |
+ kCountAtSuccess, |
+ kErrorAtSuccess, |
+ kErrorAtFirstSuccess, |
+ NULL |
+}; |
+ |
+// Test that the success histograms are updated when auto-reload succeeds at the |
+// first attempt, and that the failure histograms are not updated. |
+TEST_F(NetErrorHelperCoreHistogramTest, SuccessAtFirstAttempt) { |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ timer()->Fire(); |
+ DoSuccessLoad(); |
+ |
+ // All of CountAtSuccess, ErrorAtSuccess, and ErrorAtFirstSuccess should |
+ // reflect this successful load. The failure histograms should be unchanged. |
+ ExpectDelta(kCountAtSuccess, 1); |
+ ExpectDelta(kErrorAtSuccess, 1); |
+ ExpectDelta(kErrorAtFirstSuccess, 1); |
+ ExpectDelta(kCountAtStop, 0); |
+ ExpectDelta(kErrorAtStop, 0); |
+} |
+ |
+// Test that the success histograms are updated when auto-reload succeeds but |
+// not on the first attempt, and that the first-success histogram is not |
+// updated. |
+TEST_F(NetErrorHelperCoreHistogramTest, SuccessAtSecondAttempt) { |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ timer()->Fire(); |
+ EXPECT_TRUE(core().ShouldSuppressErrorPage(NetErrorHelperCore::MAIN_FRAME, |
+ default_url())); |
+// DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ timer()->Fire(); |
+ DoSuccessLoad(); |
+ |
+ // CountAtSuccess and ErrorAtSuccess should reflect this successful load, but |
+ // not ErrorAtFirstSuccess since it wasn't a first success. |
+ ExpectDelta(kCountAtSuccess, 1); |
+ ExpectDelta(kErrorAtSuccess, 1); |
+ ExpectDelta(kErrorAtFirstSuccess, 0); |
+ ExpectDelta(kCountAtStop, 0); |
+ ExpectDelta(kErrorAtStop, 0); |
+} |
+ |
+// Test that a user stop (caused by the user pressing the 'Stop' button) |
+// registers as an auto-reload failure if an auto-reload attempt is in flight. |
+// Note that "user stop" is also caused by a cross-process navigation, for which |
+// the browser process will send an OnStop to the old process. |
+TEST_F(NetErrorHelperCoreHistogramTest, UserStop) { |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ timer()->Fire(); |
+ core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
+ NetErrorHelperCore::NON_ERROR_PAGE); |
+ core().OnStop(); |
+ |
+ // CountAtStop and ErrorAtStop should reflect the failure. |
+ ExpectDelta(kCountAtSuccess, 0); |
+ ExpectDelta(kErrorAtSuccess, 0); |
+ ExpectDelta(kErrorAtFirstSuccess, 0); |
+ ExpectDelta(kCountAtStop, 1); |
+ ExpectDelta(kErrorAtStop, 1); |
+} |
+ |
+// Test that a user stop (caused by the user pressing the 'Stop' button) |
+// registers as an auto-reload failure even if an auto-reload attempt has not |
+// been launched yet (i.e., if the timer is running, but no reload is in |
+// flight), because this means auto-reload didn't successfully replace the error |
+// page. |
+TEST_F(NetErrorHelperCoreHistogramTest, OtherPageLoaded) { |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
+ NetErrorHelperCore::NON_ERROR_PAGE); |
+ core().OnStop(); |
+ |
+ ExpectDelta(kCountAtSuccess, 0); |
+ ExpectDelta(kErrorAtSuccess, 0); |
+ ExpectDelta(kErrorAtFirstSuccess, 0); |
+ ExpectDelta(kCountAtStop, 1); |
+ ExpectDelta(kErrorAtStop, 1); |
+} |
+ |
+// Test that a commit of a different URL (caused by the user navigating to a |
+// different page) with an auto-reload attempt in flight registers as an |
+// auto-reload failure. |
+TEST_F(NetErrorHelperCoreHistogramTest, OtherPageLoadedAfterTimerFires) { |
+ const GURL kTestUrl("https://anotherurl"); |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ timer()->Fire(); |
+ core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
+ NetErrorHelperCore::NON_ERROR_PAGE); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, |
+ kTestUrl); |
+ core().OnFinishLoad(NetErrorHelperCore::MAIN_FRAME); |
+ |
+ ExpectDelta(kCountAtSuccess, 0); |
+ ExpectDelta(kErrorAtSuccess, 0); |
+ ExpectDelta(kErrorAtFirstSuccess, 0); |
+ ExpectDelta(kCountAtStop, 1); |
+ ExpectDelta(kErrorAtStop, 1); |
+} |
+ |
+// Test that a commit of the same URL with an auto-reload attempt in flight |
+// registers as an auto-reload success. |
+TEST_F(NetErrorHelperCoreHistogramTest, SamePageLoadedAfterTimerFires) { |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ timer()->Fire(); |
+ DoSuccessLoad(); |
+ |
+ ExpectDelta(kCountAtSuccess, 1); |
+ ExpectDelta(kErrorAtSuccess, 1); |
+ ExpectDelta(kErrorAtFirstSuccess, 1); |
+ ExpectDelta(kCountAtStop, 0); |
+ ExpectDelta(kErrorAtStop, 0); |
+} |
+ |
+TEST_F(NetErrorHelperCoreHistogramTest, SamePageLoadedAfterLoadStarts) { |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ timer()->Fire(); |
+ // Autoreload attempt starts |
+ core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
+ NetErrorHelperCore::NON_ERROR_PAGE); |
+ // User does a manual reload |
+ DoSuccessLoad(); |
+ |
+ ExpectDelta(kCountAtSuccess, 1); |
+ ExpectDelta(kErrorAtSuccess, 1); |
+ ExpectDelta(kErrorAtFirstSuccess, 1); |
+ ExpectDelta(kCountAtStop, 0); |
+ ExpectDelta(kErrorAtStop, 0); |
+} |
+ |
+// In this test case, the user presses the reload button manually after an |
+// auto-reload fails and the error page is suppressed. |
+TEST_F(NetErrorHelperCoreHistogramTest, ErrorPageLoadedAfterTimerFires) { |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ timer()->Fire(); |
+ core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
+ NetErrorHelperCore::NON_ERROR_PAGE); |
+ EXPECT_TRUE(core().ShouldSuppressErrorPage(NetErrorHelperCore::MAIN_FRAME, |
+ default_url())); |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ |
+ ExpectDelta(kCountAtSuccess, 0); |
+ ExpectDelta(kErrorAtSuccess, 0); |
+ ExpectDelta(kErrorAtFirstSuccess, 0); |
+ ExpectDelta(kCountAtStop, 0); |
+ ExpectDelta(kErrorAtStop, 0); |
+} |
+ |
+TEST_F(NetErrorHelperCoreHistogramTest, SuccessPageLoadedBeforeTimerFires) { |
+ DoErrorLoad(net::ERR_CONNECTION_RESET); |
+ core().OnStartLoad(NetErrorHelperCore::MAIN_FRAME, |
+ NetErrorHelperCore::NON_ERROR_PAGE); |
+ core().OnCommitLoad(NetErrorHelperCore::MAIN_FRAME, |
+ GURL(kFailedHttpsUrl)); |
+ |
+ ExpectDelta(kCountAtSuccess, 0); |
+ ExpectDelta(kErrorAtSuccess, 0); |
+ ExpectDelta(kErrorAtFirstSuccess, 0); |
+ ExpectDelta(kCountAtStop, 1); |
+ ExpectDelta(kErrorAtStop, 1); |
+} |
+ |
+TEST_F(NetErrorHelperCoreTest, ShouldSuppressNonReloadableErrorPage) { |
mmenke
2014/05/13 18:41:11
I suggest renaming this...Yes, it tests ShouldSupp
|
+ core().set_auto_reload_enabled(true); |
+ DoErrorLoad(net::ERR_ABORTED); |
+ EXPECT_FALSE(core().ShouldSuppressErrorPage(NetErrorHelperCore::MAIN_FRAME, |
+ GURL(kFailedUrl))); |
+} |
+ |
TEST_F(NetErrorHelperCoreTest, ShouldSuppressErrorPage) { |
// Set up the environment to test ShouldSuppressErrorPage: auto-reload is |
// enabled, an error page is loaded, and the auto-reload callback is running. |
@@ -2186,3 +2428,5 @@ TEST_F(NetErrorHelperCoreTest, ExplicitLoadStaleSucceeds) { |
EXPECT_EQ(1, load_stale_count()); |
EXPECT_EQ(GURL(kFailedUrl), load_stale_url()); |
} |
+ |
+} // namespace |