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

Unified Diff: chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc

Issue 2747173003: UKM: log PageTransition and failed provisional load info (Closed)
Patch Set: fix comment Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
diff --git a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
index fe9d7f5e9fc183d5cfa0bf17eef2cf9dfa0ebbf0..a93b8429208d7c9104332b0d9a2b54a0c6cbe801 100644
--- a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc
@@ -190,6 +190,8 @@ TEST_F(UkmPageLoadMetricsObserverTest, Basic) {
EXPECT_EQ(entry_proto.event_hash(),
base::HashMetricName(internal::kUkmPageLoadEventName));
EXPECT_FALSE(entry_proto.metrics().empty());
+ ExpectMetric(internal::kUkmPageTransition, ui::PAGE_TRANSITION_LINK,
+ entry_proto.metrics());
ExpectMetric(internal::kUkmParseStartName, 100, entry_proto.metrics());
ExpectMetric(internal::kUkmDomContentLoadedName, 200, entry_proto.metrics());
ExpectMetric(internal::kUkmFirstContentfulPaintName, 300,
@@ -201,6 +203,47 @@ TEST_F(UkmPageLoadMetricsObserverTest, Basic) {
HasMetric(internal::kUkmForegroundDurationName, entry_proto.metrics()));
}
+TEST_F(UkmPageLoadMetricsObserverTest, FailedProvisionalLoad) {
+ EXPECT_CALL(mock_network_quality_provider(), GetEffectiveConnectionType())
+ .WillRepeatedly(Return(net::EFFECTIVE_CONNECTION_TYPE_2G));
+
+ GURL url(kTestUrl1);
+ content::RenderFrameHostTester* rfh_tester =
+ content::RenderFrameHostTester::For(main_rfh());
+ rfh_tester->SimulateNavigationStart(url);
+ rfh_tester->SimulateNavigationError(url, net::ERR_TIMED_OUT);
+ rfh_tester->SimulateNavigationStop();
+
+ // Simulate closing the tab.
+ DeleteContents();
+
+ EXPECT_EQ(1ul, ukm_source_count());
+ const ukm::UkmSource* source = GetUkmSource(0);
+ EXPECT_EQ(GURL(kTestUrl1), source->url());
+
+ EXPECT_GE(ukm_entry_count(), 1ul);
+ ukm::Entry entry_proto = GetMergedEntryProtoForSourceID(source->id());
+ EXPECT_EQ(entry_proto.source_id(), source->id());
+ EXPECT_EQ(entry_proto.event_hash(),
+ base::HashMetricName(internal::kUkmPageLoadEventName));
+
+ // Make sure that only the following metrics are logged. In particular, no
+ // paint/document/etc timing metrics should be logged for failed provisional
+ // loads.
+ EXPECT_EQ(5, entry_proto.metrics().size());
+ ExpectMetric(internal::kUkmPageTransition, ui::PAGE_TRANSITION_LINK,
+ entry_proto.metrics());
+ ExpectMetric(internal::kUkmEffectiveConnectionType,
+ net::EFFECTIVE_CONNECTION_TYPE_2G, entry_proto.metrics());
+ ExpectMetric(internal::kUkmNetErrorCode,
+ static_cast<int64_t>(net::ERR_TIMED_OUT) * -1,
+ entry_proto.metrics());
+ EXPECT_TRUE(
+ HasMetric(internal::kUkmForegroundDurationName, entry_proto.metrics()));
+ EXPECT_TRUE(
+ HasMetric(internal::kUkmFailedProvisionaLoadName, entry_proto.metrics()));
+}
+
TEST_F(UkmPageLoadMetricsObserverTest, FirstMeaningfulPaint) {
page_load_metrics::PageLoadTiming timing;
timing.navigation_start = base::Time::FromDoubleT(1);
@@ -307,3 +350,25 @@ TEST_F(UkmPageLoadMetricsObserverTest, EffectiveConnectionType) {
ExpectMetric(internal::kUkmEffectiveConnectionType,
net::EFFECTIVE_CONNECTION_TYPE_3G, entry_proto.metrics());
}
+
+TEST_F(UkmPageLoadMetricsObserverTest, PageTransitionReload) {
+ GURL url(kTestUrl1);
+ NavigateWithPageTransitionAndCommit(GURL(kTestUrl1),
+ ui::PAGE_TRANSITION_RELOAD);
+
+ // Simulate closing the tab.
+ DeleteContents();
+
+ EXPECT_EQ(1ul, ukm_source_count());
+ const ukm::UkmSource* source = GetUkmSource(0);
+ EXPECT_EQ(GURL(kTestUrl1), source->url());
+
+ EXPECT_GE(ukm_entry_count(), 1ul);
+ ukm::Entry entry_proto = GetMergedEntryProtoForSourceID(source->id());
+ EXPECT_EQ(entry_proto.source_id(), source->id());
+ EXPECT_EQ(entry_proto.event_hash(),
+ base::HashMetricName(internal::kUkmPageLoadEventName));
+ EXPECT_FALSE(entry_proto.metrics().empty());
+ ExpectMetric(internal::kUkmPageTransition, ui::PAGE_TRANSITION_RELOAD,
+ entry_proto.metrics());
+}
« no previous file with comments | « chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698