| Index: chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
|
| diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
|
| index 263b8a8f78b0db3a4badb011fe876a52a8db84f6..a9a0ab2eeff406f9379303473e0e4f705d9290f2 100644
|
| --- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
|
| +++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer_unittest.cc
|
| @@ -10,6 +10,7 @@
|
|
|
| namespace {
|
| const char kExampleUrl[] = "http://www.example.com/";
|
| +const char kGoogleSearchResultsUrl[] = "https://www.google.com/webhp?q=d";
|
| } // namespace
|
|
|
| class FromGWSPageLoadMetricsObserverTest
|
| @@ -19,6 +20,11 @@ class FromGWSPageLoadMetricsObserverTest
|
| tracker->AddObserver(
|
| base::WrapUnique(new FromGWSPageLoadMetricsObserver()));
|
| }
|
| + void SimulateTimingWithoutPaint() {
|
| + page_load_metrics::PageLoadTiming timing;
|
| + timing.navigation_start = base::Time::FromDoubleT(1);
|
| + SimulateTimingUpdate(timing);
|
| + }
|
| };
|
|
|
| class FromGWSPageLoadMetricsLoggerTest : public testing::Test {};
|
| @@ -350,6 +356,171 @@ TEST_F(FromGWSPageLoadMetricsObserverTest,
|
| timing.first_text_paint.InMilliseconds(), 1);
|
| }
|
|
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, UnknownNavigationBeforeCommit) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + StartNavigation(GURL("http://example.test"));
|
| +
|
| + // Simulate the user performing another navigation before commit.
|
| + StartNavigation(GURL("https://www.example.com"));
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortUnknownNavigationBeforeCommit, 1);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, NewNavigationBeforePaint) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + NavigateAndCommit(GURL("http://example.test"));
|
| + SimulateTimingWithoutPaint();
|
| + // Simulate the user performing another navigation before paint.
|
| + NavigateAndCommit(GURL("https://www.example.com"));
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortNewNavigationBeforePaint, 1);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, StopBeforeCommit) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + StartNavigation(GURL("http://example.test"));
|
| + // Simulate the user pressing the stop button.
|
| + web_contents()->Stop();
|
| + // Now close the tab. This will trigger logging for the prior navigation which
|
| + // was stopped above.
|
| + DeleteContents();
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortStopBeforeCommit, 1);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, StopBeforeCommitNonSearch) {
|
| + NavigateAndCommit(GURL("http://google.com"));
|
| + StartNavigation(GURL("http://example.test"));
|
| + // Simulate the user pressing the stop button.
|
| + web_contents()->Stop();
|
| + // Now close the tab. This will trigger logging for the prior navigation which
|
| + // was stopped above.
|
| + DeleteContents();
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortStopBeforeCommit, 0);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, StopBeforeCommitSearchToSearch) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + StartNavigation(GURL("http://www.google.com/webhp?q=5"));
|
| + // Simulate the user pressing the stop button.
|
| + web_contents()->Stop();
|
| + // Now close the tab. This will trigger logging for the prior navigation which
|
| + // was stopped above.
|
| + DeleteContents();
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortStopBeforeCommit, 0);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, StopBeforePaint) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + NavigateAndCommit(GURL("http://example.test"));
|
| + SimulateTimingWithoutPaint();
|
| + // Simulate the user pressing the stop button.
|
| + web_contents()->Stop();
|
| + // Now close the tab. This will trigger logging for the prior navigation which
|
| + // was stopped above.
|
| + DeleteContents();
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortStopBeforePaint, 1);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, StopBeforeCommitAndBeforePaint) {
|
| + // Commit the first navigation.
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + NavigateAndCommit(GURL("https://example.test"));
|
| + SimulateTimingWithoutPaint();
|
| + // Now start a second navigation, but don't commit it.
|
| + StartNavigation(GURL("https://www.google.com"));
|
| + // Simulate the user pressing the stop button. This should cause us to record
|
| + // stop metrics for the FromGWS committed load, too.
|
| + web_contents()->Stop();
|
| + // Simulate closing the tab.
|
| + DeleteContents();
|
| + // The second navigation was not from GWS.
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortStopBeforeCommit, 0);
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortStopBeforePaint, 1);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, CloseBeforeCommit) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + StartNavigation(GURL("https://example.test"));
|
| + // Simulate closing the tab.
|
| + DeleteContents();
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortCloseBeforeCommit, 1);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, CloseBeforePaint) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + NavigateAndCommit(GURL("https://example.test"));
|
| + SimulateTimingWithoutPaint();
|
| + // Simulate closing the tab.
|
| + DeleteContents();
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortCloseBeforePaint, 1);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest,
|
| + AbortCloseBeforeCommitAndBeforePaint) {
|
| + // Commit the first navigation.
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + NavigateAndCommit(GURL("https://example.test"));
|
| + SimulateTimingWithoutPaint();
|
| + // Now start a second navigation, but don't commit it.
|
| + StartNavigation(GURL("https://example.test2"));
|
| + // Simulate closing the tab.
|
| + DeleteContents();
|
| + // The second navigation was not from GWS.
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortCloseBeforeCommit, 0);
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortCloseBeforePaint, 1);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest,
|
| + AbortStopBeforeCommitAndCloseBeforePaint) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + StartNavigation(GURL("https://example.test"));
|
| + // Simulate the user pressing the stop button.
|
| + web_contents()->Stop();
|
| + NavigateAndCommit(GURL("https://example.test2"));
|
| + SimulateTimingWithoutPaint();
|
| + // Simulate closing the tab.
|
| + DeleteContents();
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortStopBeforeCommit, 1);
|
| + // The second navigation was from GWS, as GWS was the last committed URL.
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortCloseBeforePaint, 1);
|
| +}
|
| +
|
| +// TODO(bmcquade, csharrison): add tests for reload, back/forward, and other
|
| +// aborts.
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, NoAbortNewNavigationFromAboutURL) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + NavigateAndCommit(GURL("about:blank"));
|
| + NavigateAndCommit(GURL("https://www.example.com"));
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortNewNavigationBeforePaint, 0);
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsObserverTest, NoAbortNewNavigationAfterPaint) {
|
| + NavigateAndCommit(GURL(kGoogleSearchResultsUrl));
|
| + page_load_metrics::PageLoadTiming timing;
|
| + timing.navigation_start = base::Time::FromDoubleT(1);
|
| + timing.first_paint = base::TimeDelta::FromMicroseconds(1);
|
| + PopulateRequiredTimingFields(&timing);
|
| + NavigateAndCommit(GURL("https://example.test"));
|
| + SimulateTimingUpdate(timing);
|
| + NavigateAndCommit(GURL("https://example.test2"));
|
| + histogram_tester().ExpectTotalCount(
|
| + internal::kHistogramFromGWSAbortNewNavigationBeforePaint, 0);
|
| +}
|
| +
|
| TEST_F(FromGWSPageLoadMetricsLoggerTest, IsGoogleSearchHostname) {
|
| struct {
|
| bool expected_result;
|
| @@ -527,31 +698,39 @@ TEST_F(FromGWSPageLoadMetricsLoggerTest, Basic) {
|
|
|
| TEST_F(FromGWSPageLoadMetricsLoggerTest, NoPreviousPage) {
|
| FromGWSPageLoadMetricsLogger logger;
|
| - logger.set_previously_committed_url(GURL());
|
| + logger.SetPreviouslyCommittedUrl(GURL());
|
| logger.set_navigation_initiated_via_link(true);
|
| ASSERT_FALSE(logger.ShouldLogMetrics(GURL(kExampleUrl)));
|
| }
|
|
|
| TEST_F(FromGWSPageLoadMetricsLoggerTest, NavigationNotInitiatedViaLink) {
|
| FromGWSPageLoadMetricsLogger logger;
|
| - logger.set_previously_committed_url(
|
| + logger.SetPreviouslyCommittedUrl(
|
| GURL("https://www.google.com/search?q=test"));
|
| logger.set_navigation_initiated_via_link(false);
|
| ASSERT_FALSE(logger.ShouldLogMetrics(GURL(kExampleUrl)));
|
| }
|
|
|
| -TEST_F(FromGWSPageLoadMetricsLoggerTest, NavigationFromSearchToSearch) {
|
| +TEST_F(FromGWSPageLoadMetricsLoggerTest,
|
| + ProvisionalFromGWSNotInitiatedViaLink) {
|
| FromGWSPageLoadMetricsLogger logger;
|
| - logger.set_previously_committed_url(
|
| + logger.SetProvisionalUrl(
|
| GURL("https://www.google.com/search?q=test"));
|
| - logger.set_navigation_initiated_via_link(true);
|
| - ASSERT_FALSE(
|
| - logger.ShouldLogMetrics(GURL("https://www.google.com/search?q=test")));
|
| + logger.set_navigation_initiated_via_link(false);
|
| + ASSERT_FALSE(logger.ShouldLogMetrics(GURL(kExampleUrl)));
|
| +}
|
| +
|
| +TEST_F(FromGWSPageLoadMetricsLoggerTest,
|
| + ProvisionalNotFromGWSNotInitiatedViaLink) {
|
| + FromGWSPageLoadMetricsLogger logger;
|
| + logger.SetProvisionalUrl(GURL("https://example.test/"));
|
| + logger.set_navigation_initiated_via_link(false);
|
| + ASSERT_FALSE(logger.ShouldLogMetrics(GURL(kExampleUrl)));
|
| }
|
|
|
| TEST_F(FromGWSPageLoadMetricsLoggerTest, NavigationFromSearch) {
|
| FromGWSPageLoadMetricsLogger logger;
|
| - logger.set_previously_committed_url(
|
| + logger.SetPreviouslyCommittedUrl(
|
| GURL("https://www.google.com/search?q=test"));
|
| logger.set_navigation_initiated_via_link(true);
|
| ASSERT_TRUE(logger.ShouldLogMetrics(GURL(kExampleUrl)));
|
| @@ -559,7 +738,7 @@ TEST_F(FromGWSPageLoadMetricsLoggerTest, NavigationFromSearch) {
|
|
|
| TEST_F(FromGWSPageLoadMetricsLoggerTest, NavigationFromSearchRedirector) {
|
| FromGWSPageLoadMetricsLogger logger;
|
| - logger.set_previously_committed_url(
|
| + logger.SetPreviouslyCommittedUrl(
|
| GURL("https://www.google.com/url?source=web"));
|
| logger.set_navigation_initiated_via_link(true);
|
| ASSERT_TRUE(logger.ShouldLogMetrics(GURL(kExampleUrl)));
|
|
|