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

Side by Side Diff: chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer_unittest.cc

Issue 2874663005: [Page Load Metrics] Add mojom file to page load metrics. (Closed)
Patch Set: Remove unnecessary variable Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_obser ver.h" 5 #include "chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_obser ver.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/metrics/metrics_hashes.h" 8 #include "base/metrics/metrics_hashes.h"
9 #include "base/optional.h" 9 #include "base/optional.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 TEST_F(UkmPageLoadMetricsObserverTest, NoMetrics) { 169 TEST_F(UkmPageLoadMetricsObserverTest, NoMetrics) {
170 EXPECT_EQ(0ul, ukm_source_count()); 170 EXPECT_EQ(0ul, ukm_source_count());
171 EXPECT_EQ(0ul, ukm_entry_count()); 171 EXPECT_EQ(0ul, ukm_entry_count());
172 } 172 }
173 173
174 TEST_F(UkmPageLoadMetricsObserverTest, Basic) { 174 TEST_F(UkmPageLoadMetricsObserverTest, Basic) {
175 // PageLoadTiming with all recorded metrics other than FMP. This allows us to 175 // PageLoadTiming with all recorded metrics other than FMP. This allows us to
176 // verify both that all metrics are logged, and that we don't log metrics that 176 // verify both that all metrics are logged, and that we don't log metrics that
177 // aren't present in the PageLoadTiming struct. Logging of FMP is verified in 177 // aren't present in the PageLoadTiming struct. Logging of FMP is verified in
178 // the FirstMeaningfulPaint test below. 178 // the FirstMeaningfulPaint test below.
179 page_load_metrics::PageLoadTiming timing; 179 page_load_metrics::mojom::PageLoadTiming timing;
180 page_load_metrics::InitPageLoadTimingForTest(&timing);
180 timing.navigation_start = base::Time::FromDoubleT(1); 181 timing.navigation_start = base::Time::FromDoubleT(1);
181 timing.parse_timing.parse_start = base::TimeDelta::FromMilliseconds(100); 182 timing.parse_timing->parse_start = base::TimeDelta::FromMilliseconds(100);
182 timing.document_timing.dom_content_loaded_event_start = 183 timing.document_timing->dom_content_loaded_event_start =
183 base::TimeDelta::FromMilliseconds(200); 184 base::TimeDelta::FromMilliseconds(200);
184 timing.paint_timing.first_contentful_paint = 185 timing.paint_timing->first_contentful_paint =
185 base::TimeDelta::FromMilliseconds(300); 186 base::TimeDelta::FromMilliseconds(300);
186 timing.document_timing.load_event_start = 187 timing.document_timing->load_event_start =
187 base::TimeDelta::FromMilliseconds(500); 188 base::TimeDelta::FromMilliseconds(500);
188 PopulateRequiredTimingFields(&timing); 189 PopulateRequiredTimingFields(&timing);
189 190
190 NavigateAndCommit(GURL(kTestUrl1)); 191 NavigateAndCommit(GURL(kTestUrl1));
191 SimulateTimingUpdate(timing); 192 SimulateTimingUpdate(timing);
192 193
193 // Simulate closing the tab. 194 // Simulate closing the tab.
194 DeleteContents(); 195 DeleteContents();
195 196
196 EXPECT_EQ(1ul, ukm_source_count()); 197 EXPECT_EQ(1ul, ukm_source_count());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 ExpectMetric(internal::kUkmNetErrorCode, 252 ExpectMetric(internal::kUkmNetErrorCode,
252 static_cast<int64_t>(net::ERR_TIMED_OUT) * -1, 253 static_cast<int64_t>(net::ERR_TIMED_OUT) * -1,
253 entry_proto.metrics()); 254 entry_proto.metrics());
254 EXPECT_TRUE( 255 EXPECT_TRUE(
255 HasMetric(internal::kUkmForegroundDurationName, entry_proto.metrics())); 256 HasMetric(internal::kUkmForegroundDurationName, entry_proto.metrics()));
256 EXPECT_TRUE( 257 EXPECT_TRUE(
257 HasMetric(internal::kUkmFailedProvisionaLoadName, entry_proto.metrics())); 258 HasMetric(internal::kUkmFailedProvisionaLoadName, entry_proto.metrics()));
258 } 259 }
259 260
260 TEST_F(UkmPageLoadMetricsObserverTest, FirstMeaningfulPaint) { 261 TEST_F(UkmPageLoadMetricsObserverTest, FirstMeaningfulPaint) {
261 page_load_metrics::PageLoadTiming timing; 262 page_load_metrics::mojom::PageLoadTiming timing;
263 page_load_metrics::InitPageLoadTimingForTest(&timing);
262 timing.navigation_start = base::Time::FromDoubleT(1); 264 timing.navigation_start = base::Time::FromDoubleT(1);
263 timing.paint_timing.first_meaningful_paint = 265 timing.paint_timing->first_meaningful_paint =
264 base::TimeDelta::FromMilliseconds(600); 266 base::TimeDelta::FromMilliseconds(600);
265 PopulateRequiredTimingFields(&timing); 267 PopulateRequiredTimingFields(&timing);
266 268
267 NavigateAndCommit(GURL(kTestUrl1)); 269 NavigateAndCommit(GURL(kTestUrl1));
268 SimulateTimingUpdate(timing); 270 SimulateTimingUpdate(timing);
269 271
270 // Simulate closing the tab. 272 // Simulate closing the tab.
271 DeleteContents(); 273 DeleteContents();
272 274
273 EXPECT_EQ(1ul, ukm_source_count()); 275 EXPECT_EQ(1ul, ukm_source_count());
274 const ukm::UkmSource* source = GetUkmSourceForUrl(kTestUrl1); 276 const ukm::UkmSource* source = GetUkmSourceForUrl(kTestUrl1);
275 EXPECT_EQ(GURL(kTestUrl1), source->url()); 277 EXPECT_EQ(GURL(kTestUrl1), source->url());
276 278
277 EXPECT_GE(ukm_entry_count(), 1ul); 279 EXPECT_GE(ukm_entry_count(), 1ul);
278 ukm::Entry entry_proto = GetMergedEntryProtoForSourceID(source->id()); 280 ukm::Entry entry_proto = GetMergedEntryProtoForSourceID(source->id());
279 EXPECT_EQ(entry_proto.source_id(), source->id()); 281 EXPECT_EQ(entry_proto.source_id(), source->id());
280 EXPECT_EQ(entry_proto.event_hash(), 282 EXPECT_EQ(entry_proto.event_hash(),
281 base::HashMetricName(internal::kUkmPageLoadEventName)); 283 base::HashMetricName(internal::kUkmPageLoadEventName));
282 EXPECT_FALSE(entry_proto.metrics().empty()); 284 EXPECT_FALSE(entry_proto.metrics().empty());
283 ExpectMetric(internal::kUkmFirstMeaningfulPaintName, 600, 285 ExpectMetric(internal::kUkmFirstMeaningfulPaintName, 600,
284 entry_proto.metrics()); 286 entry_proto.metrics());
285 EXPECT_TRUE( 287 EXPECT_TRUE(
286 HasMetric(internal::kUkmForegroundDurationName, entry_proto.metrics())); 288 HasMetric(internal::kUkmForegroundDurationName, entry_proto.metrics()));
287 } 289 }
288 290
289 TEST_F(UkmPageLoadMetricsObserverTest, MultiplePageLoads) { 291 TEST_F(UkmPageLoadMetricsObserverTest, MultiplePageLoads) {
290 page_load_metrics::PageLoadTiming timing1; 292 page_load_metrics::mojom::PageLoadTiming timing1;
293 page_load_metrics::InitPageLoadTimingForTest(&timing1);
291 timing1.navigation_start = base::Time::FromDoubleT(1); 294 timing1.navigation_start = base::Time::FromDoubleT(1);
292 timing1.paint_timing.first_contentful_paint = 295 timing1.paint_timing->first_contentful_paint =
293 base::TimeDelta::FromMilliseconds(200); 296 base::TimeDelta::FromMilliseconds(200);
294 PopulateRequiredTimingFields(&timing1); 297 PopulateRequiredTimingFields(&timing1);
295 298
296 // Second navigation reports no timing metrics. 299 // Second navigation reports no timing metrics.
297 page_load_metrics::PageLoadTiming timing2; 300 page_load_metrics::mojom::PageLoadTiming timing2;
301 page_load_metrics::InitPageLoadTimingForTest(&timing2);
298 timing2.navigation_start = base::Time::FromDoubleT(1); 302 timing2.navigation_start = base::Time::FromDoubleT(1);
299 PopulateRequiredTimingFields(&timing2); 303 PopulateRequiredTimingFields(&timing2);
300 304
301 NavigateAndCommit(GURL(kTestUrl1)); 305 NavigateAndCommit(GURL(kTestUrl1));
302 SimulateTimingUpdate(timing1); 306 SimulateTimingUpdate(timing1);
303 307
304 NavigateAndCommit(GURL(kTestUrl2)); 308 NavigateAndCommit(GURL(kTestUrl2));
305 SimulateTimingUpdate(timing2); 309 SimulateTimingUpdate(timing2);
306 310
307 // Simulate closing the tab. 311 // Simulate closing the tab.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 390
387 EXPECT_GE(ukm_entry_count(), 1ul); 391 EXPECT_GE(ukm_entry_count(), 1ul);
388 ukm::Entry entry_proto = GetMergedEntryProtoForSourceID(source->id()); 392 ukm::Entry entry_proto = GetMergedEntryProtoForSourceID(source->id());
389 EXPECT_EQ(entry_proto.source_id(), source->id()); 393 EXPECT_EQ(entry_proto.source_id(), source->id());
390 EXPECT_EQ(entry_proto.event_hash(), 394 EXPECT_EQ(entry_proto.event_hash(),
391 base::HashMetricName(internal::kUkmPageLoadEventName)); 395 base::HashMetricName(internal::kUkmPageLoadEventName));
392 EXPECT_FALSE(entry_proto.metrics().empty()); 396 EXPECT_FALSE(entry_proto.metrics().empty());
393 ExpectMetric(internal::kUkmPageTransition, ui::PAGE_TRANSITION_RELOAD, 397 ExpectMetric(internal::kUkmPageTransition, ui::PAGE_TRANSITION_RELOAD,
394 entry_proto.metrics()); 398 entry_proto.metrics());
395 } 399 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698