OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/protocol_page_load_metrics_
observer.h" | 5 #include "chrome/browser/page_load_metrics/observers/protocol_page_load_metrics_
observer.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 | 9 |
10 class ProtocolPageLoadMetricsObserverTest | 10 class ProtocolPageLoadMetricsObserverTest |
11 : public page_load_metrics::PageLoadMetricsObserverTestHarness { | 11 : public page_load_metrics::PageLoadMetricsObserverTestHarness { |
12 protected: | 12 protected: |
13 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { | 13 void RegisterObservers(page_load_metrics::PageLoadTracker* tracker) override { |
14 std::unique_ptr<ProtocolPageLoadMetricsObserver> observer = | 14 std::unique_ptr<ProtocolPageLoadMetricsObserver> observer = |
15 base::MakeUnique<ProtocolPageLoadMetricsObserver>(); | 15 base::MakeUnique<ProtocolPageLoadMetricsObserver>(); |
16 observer_ = observer.get(); | 16 observer_ = observer.get(); |
17 tracker->AddObserver(std::move(observer)); | 17 tracker->AddObserver(std::move(observer)); |
18 } | 18 } |
19 | 19 |
20 void InitializeTestPageLoadTiming(page_load_metrics::PageLoadTiming* timing) { | 20 void InitializeTestPageLoadTiming( |
| 21 page_load_metrics::mojom::PageLoadTiming* timing) { |
| 22 page_load_metrics::InitPageLoadTimingForTest(timing); |
21 timing->navigation_start = base::Time::FromDoubleT(1); | 23 timing->navigation_start = base::Time::FromDoubleT(1); |
22 timing->parse_timing.parse_start = base::TimeDelta::FromMilliseconds(100); | 24 timing->parse_timing->parse_start = base::TimeDelta::FromMilliseconds(100); |
23 timing->paint_timing.first_paint = base::TimeDelta::FromMilliseconds(200); | 25 timing->paint_timing->first_paint = base::TimeDelta::FromMilliseconds(200); |
24 timing->paint_timing.first_contentful_paint = | 26 timing->paint_timing->first_contentful_paint = |
25 base::TimeDelta::FromMilliseconds(300); | 27 base::TimeDelta::FromMilliseconds(300); |
26 timing->paint_timing.first_meaningful_paint = | 28 timing->paint_timing->first_meaningful_paint = |
27 base::TimeDelta::FromMilliseconds(400); | 29 base::TimeDelta::FromMilliseconds(400); |
28 timing->document_timing.dom_content_loaded_event_start = | 30 timing->document_timing->dom_content_loaded_event_start = |
29 base::TimeDelta::FromMilliseconds(600); | 31 base::TimeDelta::FromMilliseconds(600); |
30 timing->document_timing.load_event_start = | 32 timing->document_timing->load_event_start = |
31 base::TimeDelta::FromMilliseconds(1000); | 33 base::TimeDelta::FromMilliseconds(1000); |
32 PopulateRequiredTimingFields(timing); | 34 PopulateRequiredTimingFields(timing); |
33 } | 35 } |
34 | 36 |
35 void SimulateNavigation( | 37 void SimulateNavigation( |
36 net::HttpResponseInfo::ConnectionInfo connection_info) { | 38 net::HttpResponseInfo::ConnectionInfo connection_info) { |
37 NavigateAndCommit(GURL("http://google.com")); | 39 NavigateAndCommit(GURL("http://google.com")); |
38 | 40 |
39 // Force the ConnectionInfo that the observer received from the | 41 // Force the ConnectionInfo that the observer received from the |
40 // NavigationHandle. | 42 // NavigationHandle. |
41 observer_->connection_info_ = connection_info; | 43 observer_->connection_info_ = connection_info; |
42 | 44 |
43 page_load_metrics::PageLoadTiming timing; | 45 page_load_metrics::mojom::PageLoadTiming timing; |
44 InitializeTestPageLoadTiming(&timing); | 46 InitializeTestPageLoadTiming(&timing); |
45 SimulateTimingUpdate(timing); | 47 SimulateTimingUpdate(timing); |
46 | 48 |
47 // Navigate again to force OnComplete, which happens when a new navigation | 49 // Navigate again to force OnComplete, which happens when a new navigation |
48 // occurs. | 50 // occurs. |
49 NavigateAndCommit(GURL("http://example.com")); | 51 NavigateAndCommit(GURL("http://example.com")); |
50 } | 52 } |
51 | 53 |
52 int CountTotalProtocolMetricsRecorded() { | 54 int CountTotalProtocolMetricsRecorded() { |
53 int count = 0; | 55 int count = 0; |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 | 113 |
112 TEST_F(ProtocolPageLoadMetricsObserverTest, QuicNavigation) { | 114 TEST_F(ProtocolPageLoadMetricsObserverTest, QuicNavigation) { |
113 SimulateNavigation(net::HttpResponseInfo::CONNECTION_INFO_QUIC_35); | 115 SimulateNavigation(net::HttpResponseInfo::CONNECTION_INFO_QUIC_35); |
114 CheckHistograms(7, "QUIC"); | 116 CheckHistograms(7, "QUIC"); |
115 } | 117 } |
116 | 118 |
117 TEST_F(ProtocolPageLoadMetricsObserverTest, UnknownNavigation) { | 119 TEST_F(ProtocolPageLoadMetricsObserverTest, UnknownNavigation) { |
118 SimulateNavigation(net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN); | 120 SimulateNavigation(net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN); |
119 CheckHistograms(0, ""); | 121 CheckHistograms(0, ""); |
120 } | 122 } |
OLD | NEW |