OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/page_load_metrics_observer_
test_harness.h" | 5 #include "chrome/browser/page_load_metrics/observers/page_load_metrics_observer_
test_harness.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 | 46 |
47 } // namespace | 47 } // namespace |
48 | 48 |
49 PageLoadMetricsObserverTestHarness::PageLoadMetricsObserverTestHarness() | 49 PageLoadMetricsObserverTestHarness::PageLoadMetricsObserverTestHarness() |
50 : ChromeRenderViewHostTestHarness() {} | 50 : ChromeRenderViewHostTestHarness() {} |
51 | 51 |
52 PageLoadMetricsObserverTestHarness::~PageLoadMetricsObserverTestHarness() {} | 52 PageLoadMetricsObserverTestHarness::~PageLoadMetricsObserverTestHarness() {} |
53 | 53 |
54 // static | 54 // static |
55 void PageLoadMetricsObserverTestHarness::PopulateRequiredTimingFields( | 55 void PageLoadMetricsObserverTestHarness::PopulateRequiredTimingFields( |
56 PageLoadTiming* inout_timing) { | 56 mojom::PageLoadTiming* inout_timing) { |
57 if (inout_timing->paint_timing.first_meaningful_paint && | 57 if (inout_timing->paint_timing->first_meaningful_paint && |
58 !inout_timing->paint_timing.first_contentful_paint) { | 58 !inout_timing->paint_timing->first_contentful_paint) { |
59 inout_timing->paint_timing.first_contentful_paint = | 59 inout_timing->paint_timing->first_contentful_paint = |
60 inout_timing->paint_timing.first_meaningful_paint; | 60 inout_timing->paint_timing->first_meaningful_paint; |
61 } | 61 } |
62 if ((inout_timing->paint_timing.first_text_paint || | 62 if ((inout_timing->paint_timing->first_text_paint || |
63 inout_timing->paint_timing.first_image_paint || | 63 inout_timing->paint_timing->first_image_paint || |
64 inout_timing->paint_timing.first_contentful_paint) && | 64 inout_timing->paint_timing->first_contentful_paint) && |
65 !inout_timing->paint_timing.first_paint) { | 65 !inout_timing->paint_timing->first_paint) { |
66 inout_timing->paint_timing.first_paint = | 66 inout_timing->paint_timing->first_paint = |
67 OptionalMin(OptionalMin(inout_timing->paint_timing.first_text_paint, | 67 OptionalMin(OptionalMin(inout_timing->paint_timing->first_text_paint, |
68 inout_timing->paint_timing.first_image_paint), | 68 inout_timing->paint_timing->first_image_paint), |
69 inout_timing->paint_timing.first_contentful_paint); | 69 inout_timing->paint_timing->first_contentful_paint); |
70 } | 70 } |
71 if (inout_timing->paint_timing.first_paint && | 71 if (inout_timing->paint_timing->first_paint && |
72 !inout_timing->document_timing.first_layout) { | 72 !inout_timing->document_timing->first_layout) { |
73 inout_timing->document_timing.first_layout = | 73 inout_timing->document_timing->first_layout = |
74 inout_timing->paint_timing.first_paint; | 74 inout_timing->paint_timing->first_paint; |
75 } | 75 } |
76 if (inout_timing->document_timing.load_event_start && | 76 if (inout_timing->document_timing->load_event_start && |
77 !inout_timing->document_timing.dom_content_loaded_event_start) { | 77 !inout_timing->document_timing->dom_content_loaded_event_start) { |
78 inout_timing->document_timing.dom_content_loaded_event_start = | 78 inout_timing->document_timing->dom_content_loaded_event_start = |
79 inout_timing->document_timing.load_event_start; | 79 inout_timing->document_timing->load_event_start; |
80 } | 80 } |
81 if (inout_timing->document_timing.first_layout && | 81 if (inout_timing->document_timing->first_layout && |
82 !inout_timing->parse_timing.parse_start) { | 82 !inout_timing->parse_timing->parse_start) { |
83 inout_timing->parse_timing.parse_start = | 83 inout_timing->parse_timing->parse_start = |
84 inout_timing->document_timing.first_layout; | 84 inout_timing->document_timing->first_layout; |
85 } | 85 } |
86 if (inout_timing->document_timing.dom_content_loaded_event_start && | 86 if (inout_timing->document_timing->dom_content_loaded_event_start && |
87 !inout_timing->parse_timing.parse_stop) { | 87 !inout_timing->parse_timing->parse_stop) { |
88 inout_timing->parse_timing.parse_stop = | 88 inout_timing->parse_timing->parse_stop = |
89 inout_timing->document_timing.dom_content_loaded_event_start; | 89 inout_timing->document_timing->dom_content_loaded_event_start; |
90 } | 90 } |
91 if (inout_timing->parse_timing.parse_stop && | 91 if (inout_timing->parse_timing->parse_stop && |
92 !inout_timing->parse_timing.parse_start) { | 92 !inout_timing->parse_timing->parse_start) { |
93 inout_timing->parse_timing.parse_start = | 93 inout_timing->parse_timing->parse_start = |
94 inout_timing->parse_timing.parse_stop; | 94 inout_timing->parse_timing->parse_stop; |
95 } | 95 } |
96 if (inout_timing->parse_timing.parse_start && !inout_timing->response_start) { | 96 if (inout_timing->parse_timing->parse_start && |
97 inout_timing->response_start = inout_timing->parse_timing.parse_start; | 97 !inout_timing->response_start) { |
| 98 inout_timing->response_start = inout_timing->parse_timing->parse_start; |
98 } | 99 } |
99 if (inout_timing->parse_timing.parse_start) { | 100 if (inout_timing->parse_timing->parse_start) { |
100 if (!inout_timing->parse_timing.parse_blocked_on_script_load_duration) | 101 if (!inout_timing->parse_timing->parse_blocked_on_script_load_duration) |
101 inout_timing->parse_timing.parse_blocked_on_script_load_duration = | 102 inout_timing->parse_timing->parse_blocked_on_script_load_duration = |
102 base::TimeDelta(); | 103 base::TimeDelta(); |
103 if (!inout_timing->parse_timing | 104 if (!inout_timing->parse_timing |
104 .parse_blocked_on_script_execution_duration) { | 105 ->parse_blocked_on_script_execution_duration) { |
105 inout_timing->parse_timing.parse_blocked_on_script_execution_duration = | 106 inout_timing->parse_timing->parse_blocked_on_script_execution_duration = |
106 base::TimeDelta(); | 107 base::TimeDelta(); |
107 } | 108 } |
108 if (!inout_timing->parse_timing | 109 if (!inout_timing->parse_timing |
109 .parse_blocked_on_script_load_from_document_write_duration) { | 110 ->parse_blocked_on_script_load_from_document_write_duration) { |
110 inout_timing->parse_timing | 111 inout_timing->parse_timing |
111 .parse_blocked_on_script_load_from_document_write_duration = | 112 ->parse_blocked_on_script_load_from_document_write_duration = |
112 base::TimeDelta(); | 113 base::TimeDelta(); |
113 } | 114 } |
114 if (!inout_timing->parse_timing | 115 if (!inout_timing->parse_timing |
115 .parse_blocked_on_script_execution_from_document_write_duration) { | 116 ->parse_blocked_on_script_execution_from_document_write_duration) { |
116 inout_timing->parse_timing | 117 inout_timing->parse_timing |
117 .parse_blocked_on_script_execution_from_document_write_duration = | 118 ->parse_blocked_on_script_execution_from_document_write_duration = |
118 base::TimeDelta(); | 119 base::TimeDelta(); |
119 } | 120 } |
120 } | 121 } |
121 } | 122 } |
122 | 123 |
123 void PageLoadMetricsObserverTestHarness::SetUp() { | 124 void PageLoadMetricsObserverTestHarness::SetUp() { |
124 ChromeRenderViewHostTestHarness::SetUp(); | 125 ChromeRenderViewHostTestHarness::SetUp(); |
125 SetContents(CreateTestWebContents()); | 126 SetContents(CreateTestWebContents()); |
126 NavigateAndCommit(GURL("http://www.google.com")); | 127 NavigateAndCommit(GURL("http://www.google.com")); |
127 observer_ = MetricsWebContentsObserver::CreateForWebContents( | 128 observer_ = MetricsWebContentsObserver::CreateForWebContents( |
128 web_contents(), | 129 web_contents(), |
129 base::MakeUnique<TestPageLoadMetricsEmbedderInterface>(this)); | 130 base::MakeUnique<TestPageLoadMetricsEmbedderInterface>(this)); |
130 web_contents()->WasShown(); | 131 web_contents()->WasShown(); |
131 } | 132 } |
132 | 133 |
133 void PageLoadMetricsObserverTestHarness::StartNavigation(const GURL& gurl) { | 134 void PageLoadMetricsObserverTestHarness::StartNavigation(const GURL& gurl) { |
134 content::WebContentsTester* web_contents_tester = | 135 content::WebContentsTester* web_contents_tester = |
135 content::WebContentsTester::For(web_contents()); | 136 content::WebContentsTester::For(web_contents()); |
136 web_contents_tester->StartNavigation(gurl); | 137 web_contents_tester->StartNavigation(gurl); |
137 } | 138 } |
138 | 139 |
139 void PageLoadMetricsObserverTestHarness::SimulateTimingUpdate( | 140 void PageLoadMetricsObserverTestHarness::SimulateTimingUpdate( |
140 const PageLoadTiming& timing) { | 141 const mojom::PageLoadTiming& timing) { |
141 SimulateTimingAndMetadataUpdate(timing, PageLoadMetadata()); | 142 SimulateTimingAndMetadataUpdate(timing, mojom::PageLoadMetadata()); |
142 } | 143 } |
143 | 144 |
144 void PageLoadMetricsObserverTestHarness::SimulateTimingAndMetadataUpdate( | 145 void PageLoadMetricsObserverTestHarness::SimulateTimingAndMetadataUpdate( |
145 const PageLoadTiming& timing, | 146 const mojom::PageLoadTiming& timing, |
146 const PageLoadMetadata& metadata) { | 147 const mojom::PageLoadMetadata& metadata) { |
147 observer_->OnTimingUpdated(web_contents()->GetMainFrame(), timing, metadata); | 148 observer_->OnTimingUpdated(web_contents()->GetMainFrame(), timing, metadata); |
148 } | 149 } |
149 | 150 |
150 void PageLoadMetricsObserverTestHarness::SimulateStartedResource( | 151 void PageLoadMetricsObserverTestHarness::SimulateStartedResource( |
151 const ExtraRequestStartInfo& info) { | 152 const ExtraRequestStartInfo& info) { |
152 observer_->OnRequestStarted(content::GlobalRequestID(), info.resource_type, | 153 observer_->OnRequestStarted(content::GlobalRequestID(), info.resource_type, |
153 base::TimeTicks::Now()); | 154 base::TimeTicks::Now()); |
154 } | 155 } |
155 | 156 |
156 void PageLoadMetricsObserverTestHarness::SimulateLoadedResource( | 157 void PageLoadMetricsObserverTestHarness::SimulateLoadedResource( |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
193 } | 194 } |
194 | 195 |
195 void PageLoadMetricsObserverTestHarness::NavigateWithPageTransitionAndCommit( | 196 void PageLoadMetricsObserverTestHarness::NavigateWithPageTransitionAndCommit( |
196 const GURL& url, | 197 const GURL& url, |
197 ui::PageTransition transition) { | 198 ui::PageTransition transition) { |
198 controller().LoadURL(url, content::Referrer(), transition, std::string()); | 199 controller().LoadURL(url, content::Referrer(), transition, std::string()); |
199 content::WebContentsTester::For(web_contents())->CommitPendingNavigation(); | 200 content::WebContentsTester::For(web_contents())->CommitPendingNavigation(); |
200 } | 201 } |
201 | 202 |
202 } // namespace page_load_metrics | 203 } // namespace page_load_metrics |
OLD | NEW |