| 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) {
|
| + 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
|
|
|