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

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

Issue 2717413003: Add support for logging additional metrics in UKM. (Closed)
Patch Set: record URL at nav start 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 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 "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_ test_harness.h" 8 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_ test_harness.h"
9 #include "chrome/test/base/testing_browser_process.h" 9 #include "chrome/test/base/testing_browser_process.h"
10 #include "components/ukm/test_ukm_service.h" 10 #include "components/ukm/test_ukm_service.h"
(...skipping 12 matching lines...) Expand all
23 tracker->AddObserver(base::MakeUnique<UkmPageLoadMetricsObserver>()); 23 tracker->AddObserver(base::MakeUnique<UkmPageLoadMetricsObserver>());
24 } 24 }
25 25
26 void SetUp() override { 26 void SetUp() override {
27 page_load_metrics::PageLoadMetricsObserverTestHarness::SetUp(); 27 page_load_metrics::PageLoadMetricsObserverTestHarness::SetUp();
28 28
29 TestingBrowserProcess::GetGlobal()->SetUkmService( 29 TestingBrowserProcess::GetGlobal()->SetUkmService(
30 ukm_service_test_harness_.test_ukm_service()); 30 ukm_service_test_harness_.test_ukm_service());
31 } 31 }
32 32
33 void InitializeTestPageLoadTiming(page_load_metrics::PageLoadTiming* timing) {
34 timing->navigation_start = base::Time::FromInternalValue(1);
35 timing->first_contentful_paint = base::TimeDelta::FromInternalValue(300);
36 PopulateRequiredTimingFields(timing);
37 }
38
39 size_t ukm_source_count() { 33 size_t ukm_source_count() {
40 return ukm_service_test_harness_.test_ukm_service()->sources_count(); 34 return ukm_service_test_harness_.test_ukm_service()->sources_count();
41 } 35 }
42 36
43 const ukm::UkmSource* GetUkmSource(size_t source_index) { 37 const ukm::UkmSource* GetUkmSource(size_t source_index) {
44 return ukm_service_test_harness_.test_ukm_service()->GetSource( 38 return ukm_service_test_harness_.test_ukm_service()->GetSource(
45 source_index); 39 source_index);
46 } 40 }
47 41
48 private: 42 private:
49 ukm::UkmServiceTestingHarness ukm_service_test_harness_; 43 ukm::UkmServiceTestingHarness ukm_service_test_harness_;
50 }; 44 };
51 45
52 TEST_F(UkmPageLoadMetricsObserverTest, NoMetrics) { 46 TEST_F(UkmPageLoadMetricsObserverTest, NoMetrics) {
53 EXPECT_EQ(0ul, ukm_source_count()); 47 EXPECT_EQ(0ul, ukm_source_count());
54 } 48 }
55 49
56 TEST_F(UkmPageLoadMetricsObserverTest, FirstContentfulPaint) { 50 TEST_F(UkmPageLoadMetricsObserverTest, FirstContentfulPaint) {
57 page_load_metrics::PageLoadTiming timing; 51 page_load_metrics::PageLoadTiming timing;
58 InitializeTestPageLoadTiming(&timing); 52 timing.navigation_start = base::Time::FromInternalValue(1);
53 timing.parse_start = base::TimeDelta::FromInternalValue(100);
54 timing.first_contentful_paint = base::TimeDelta::FromInternalValue(300);
55 PopulateRequiredTimingFields(&timing);
59 56
60 NavigateAndCommit(GURL(kDefaultTestUrl)); 57 NavigateAndCommit(GURL(kDefaultTestUrl));
61 SimulateTimingUpdate(timing); 58 SimulateTimingUpdate(timing);
62 59
63 // Simulate closing the tab. 60 // Simulate closing the tab.
64 DeleteContents(); 61 DeleteContents();
65 62
66 EXPECT_EQ(1ul, ukm_source_count()); 63 EXPECT_EQ(1ul, ukm_source_count());
67 64
68 const ukm::UkmSource* source = GetUkmSource(0); 65 const ukm::UkmSource* source = GetUkmSource(0);
69 ASSERT_TRUE(source); 66 ASSERT_TRUE(source);
70 67
71 EXPECT_EQ(GURL(kDefaultTestUrl), source->committed_url()); 68 EXPECT_EQ(GURL(kDefaultTestUrl), source->url());
69 EXPECT_EQ(base::TimeDelta::FromInternalValue(100), source->parse_start());
72 EXPECT_EQ(base::TimeDelta::FromInternalValue(300), 70 EXPECT_EQ(base::TimeDelta::FromInternalValue(300),
73 source->first_contentful_paint()); 71 source->first_contentful_paint());
72 EXPECT_TRUE(source->total_time().has_value());
73 EXPECT_FALSE(source->first_meaningful_paint().has_value());
74 } 74 }
75
76 TEST_F(UkmPageLoadMetricsObserverTest, FirstMeaningfulPaint) {
77 page_load_metrics::PageLoadTiming timing;
78 timing.navigation_start = base::Time::FromInternalValue(1);
79 timing.parse_start = base::TimeDelta::FromInternalValue(100);
80 timing.first_meaningful_paint = base::TimeDelta::FromInternalValue(500);
81 PopulateRequiredTimingFields(&timing);
82
83 NavigateAndCommit(GURL(kDefaultTestUrl));
84 SimulateTimingUpdate(timing);
85
86 // Simulate closing the tab.
87 DeleteContents();
88
89 EXPECT_EQ(1ul, ukm_source_count());
90
91 const ukm::UkmSource* source = GetUkmSource(0);
92 ASSERT_TRUE(source);
93
94 EXPECT_EQ(GURL(kDefaultTestUrl), source->url());
95 EXPECT_EQ(base::TimeDelta::FromInternalValue(100), source->parse_start());
96 EXPECT_EQ(base::TimeDelta::FromInternalValue(500),
97 source->first_meaningful_paint());
98 EXPECT_TRUE(source->total_time().has_value());
99 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698