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

Side by Side Diff: components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc

Issue 1857443002: Plumb experiment flags through page_load_metrics and add a new observer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@page_load_experiments
Patch Set: clean up unit tests Created 4 years, 8 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 (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "components/page_load_metrics/browser/metrics_web_contents_observer.h" 5 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 132
133 content::RenderFrameHostTester* rfh_tester = 133 content::RenderFrameHostTester* rfh_tester =
134 content::RenderFrameHostTester::For(main_rfh()); 134 content::RenderFrameHostTester::For(main_rfh());
135 content::RenderFrameHost* subframe = rfh_tester->AppendChild("subframe"); 135 content::RenderFrameHost* subframe = rfh_tester->AppendChild("subframe");
136 136
137 content::RenderFrameHostTester* subframe_tester = 137 content::RenderFrameHostTester* subframe_tester =
138 content::RenderFrameHostTester::For(subframe); 138 content::RenderFrameHostTester::For(subframe);
139 subframe_tester->SimulateNavigationStart(GURL(kDefaultTestUrl2)); 139 subframe_tester->SimulateNavigationStart(GURL(kDefaultTestUrl2));
140 subframe_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl2)); 140 subframe_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl2));
141 observer_->OnMessageReceived( 141 observer_->OnMessageReceived(
142 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 142 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing,
143 PageLoadMetadata()),
143 subframe); 144 subframe);
144 subframe_tester->SimulateNavigationStop(); 145 subframe_tester->SimulateNavigationStop();
145 146
146 // Navigate again to see if the timing updated for a subframe message. 147 // Navigate again to see if the timing updated for a subframe message.
147 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 148 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
148 149
149 AssertNoNonEmptyTimingReported(); 150 AssertNoNonEmptyTimingReported();
150 CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1); 151 CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1);
151 CheckTotalErrorEvents(); 152 CheckTotalErrorEvents();
152 } 153 }
153 154
154 TEST_F(MetricsWebContentsObserverTest, SamePageNoTrigger) { 155 TEST_F(MetricsWebContentsObserverTest, SamePageNoTrigger) {
155 PageLoadTiming timing; 156 PageLoadTiming timing;
156 timing.navigation_start = base::Time::FromDoubleT(1); 157 timing.navigation_start = base::Time::FromDoubleT(1);
157 158
158 content::WebContentsTester* web_contents_tester = 159 content::WebContentsTester* web_contents_tester =
159 content::WebContentsTester::For(web_contents()); 160 content::WebContentsTester::For(web_contents());
160 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 161 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
161 162
162 observer_->OnMessageReceived( 163 observer_->OnMessageReceived(
163 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 164 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing,
165 PageLoadMetadata()),
164 web_contents()->GetMainFrame()); 166 web_contents()->GetMainFrame());
165 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrlAnchor)); 167 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrlAnchor));
166 // A same page navigation shouldn't trigger logging UMA for the original. 168 // A same page navigation shouldn't trigger logging UMA for the original.
167 AssertNoNonEmptyTimingReported(); 169 AssertNoNonEmptyTimingReported();
168 CheckNoErrorEvents(); 170 CheckNoErrorEvents();
169 } 171 }
170 172
171 TEST_F(MetricsWebContentsObserverTest, DontLogPrerender) { 173 TEST_F(MetricsWebContentsObserverTest, DontLogPrerender) {
172 PageLoadTiming timing; 174 PageLoadTiming timing;
173 timing.navigation_start = base::Time::FromDoubleT(1); 175 timing.navigation_start = base::Time::FromDoubleT(1);
174 176
175 content::WebContentsTester* web_contents_tester = 177 content::WebContentsTester* web_contents_tester =
176 content::WebContentsTester::For(web_contents()); 178 content::WebContentsTester::For(web_contents());
177 embedder_interface_->set_is_prerendering(true); 179 embedder_interface_->set_is_prerendering(true);
178 180
179 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 181 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
180 observer_->OnMessageReceived( 182 observer_->OnMessageReceived(
181 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 183 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing,
184 PageLoadMetadata()),
182 web_contents()->GetMainFrame()); 185 web_contents()->GetMainFrame());
183 186
184 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); 187 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
185 AssertNoTimingReported(); 188 AssertNoTimingReported();
186 CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1); 189 CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1);
187 CheckTotalErrorEvents(); 190 CheckTotalErrorEvents();
188 } 191 }
189 192
190 TEST_F(MetricsWebContentsObserverTest, DontLogIrrelevantNavigation) { 193 TEST_F(MetricsWebContentsObserverTest, DontLogIrrelevantNavigation) {
191 PageLoadTiming timing; 194 PageLoadTiming timing;
192 timing.navigation_start = base::Time::FromDoubleT(10); 195 timing.navigation_start = base::Time::FromDoubleT(10);
193 196
194 content::WebContentsTester* web_contents_tester = 197 content::WebContentsTester* web_contents_tester =
195 content::WebContentsTester::For(web_contents()); 198 content::WebContentsTester::For(web_contents());
196 199
197 GURL about_blank_url = GURL("about:blank"); 200 GURL about_blank_url = GURL("about:blank");
198 web_contents_tester->NavigateAndCommit(about_blank_url); 201 web_contents_tester->NavigateAndCommit(about_blank_url);
199 202
200 observer_->OnMessageReceived( 203 observer_->OnMessageReceived(
201 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 204 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing,
205 PageLoadMetadata()),
202 main_rfh()); 206 main_rfh());
203 207
204 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 208 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
205 209
206 CheckErrorEvent(ERR_IPC_FROM_BAD_URL_SCHEME, 1); 210 CheckErrorEvent(ERR_IPC_FROM_BAD_URL_SCHEME, 1);
207 CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1); 211 CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1);
208 CheckTotalErrorEvents(); 212 CheckTotalErrorEvents();
209 } 213 }
210 214
211 TEST_F(MetricsWebContentsObserverTest, NotInMainError) { 215 TEST_F(MetricsWebContentsObserverTest, NotInMainError) {
212 PageLoadTiming timing; 216 PageLoadTiming timing;
213 timing.navigation_start = base::Time::FromDoubleT(1); 217 timing.navigation_start = base::Time::FromDoubleT(1);
214 218
215 content::WebContentsTester* web_contents_tester = 219 content::WebContentsTester* web_contents_tester =
216 content::WebContentsTester::For(web_contents()); 220 content::WebContentsTester::For(web_contents());
217 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 221 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
218 222
219 content::RenderFrameHostTester* rfh_tester = 223 content::RenderFrameHostTester* rfh_tester =
220 content::RenderFrameHostTester::For(main_rfh()); 224 content::RenderFrameHostTester::For(main_rfh());
221 content::RenderFrameHost* subframe = rfh_tester->AppendChild("subframe"); 225 content::RenderFrameHost* subframe = rfh_tester->AppendChild("subframe");
222 226
223 content::RenderFrameHostTester* subframe_tester = 227 content::RenderFrameHostTester* subframe_tester =
224 content::RenderFrameHostTester::For(subframe); 228 content::RenderFrameHostTester::For(subframe);
225 subframe_tester->SimulateNavigationStart(GURL(kDefaultTestUrl2)); 229 subframe_tester->SimulateNavigationStart(GURL(kDefaultTestUrl2));
226 subframe_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl2)); 230 subframe_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl2));
227 observer_->OnMessageReceived( 231 observer_->OnMessageReceived(
228 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 232 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing,
233 PageLoadMetadata()),
229 subframe); 234 subframe);
230 CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1); 235 CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1);
231 CheckTotalErrorEvents(); 236 CheckTotalErrorEvents();
232 } 237 }
233 238
234 TEST_F(MetricsWebContentsObserverTest, BadIPC) { 239 TEST_F(MetricsWebContentsObserverTest, BadIPC) {
235 PageLoadTiming timing; 240 PageLoadTiming timing;
236 timing.navigation_start = base::Time::FromDoubleT(10); 241 timing.navigation_start = base::Time::FromDoubleT(10);
237 PageLoadTiming timing2; 242 PageLoadTiming timing2;
238 timing2.navigation_start = base::Time::FromDoubleT(100); 243 timing2.navigation_start = base::Time::FromDoubleT(100);
239 244
240 content::WebContentsTester* web_contents_tester = 245 content::WebContentsTester* web_contents_tester =
241 content::WebContentsTester::For(web_contents()); 246 content::WebContentsTester::For(web_contents());
242 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 247 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
243 248
244 observer_->OnMessageReceived( 249 observer_->OnMessageReceived(
245 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 250 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing,
251 PageLoadMetadata()),
246 main_rfh()); 252 main_rfh());
247 observer_->OnMessageReceived( 253 observer_->OnMessageReceived(
248 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing2), 254 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing2,
255 PageLoadMetadata()),
249 main_rfh()); 256 main_rfh());
250 257
251 CheckErrorEvent(ERR_BAD_TIMING_IPC, 1); 258 CheckErrorEvent(ERR_BAD_TIMING_IPC, 1);
252 CheckTotalErrorEvents(); 259 CheckTotalErrorEvents();
253 } 260 }
254 261
255 TEST_F(MetricsWebContentsObserverTest, ObservePartialNavigation) { 262 TEST_F(MetricsWebContentsObserverTest, ObservePartialNavigation) {
256 // Delete the observer for this test, add it once the navigation has started. 263 // Delete the observer for this test, add it once the navigation has started.
257 observer_.reset(); 264 observer_.reset();
258 PageLoadTiming timing; 265 PageLoadTiming timing;
259 timing.navigation_start = base::Time::FromDoubleT(10); 266 timing.navigation_start = base::Time::FromDoubleT(10);
260 267
261 content::WebContentsTester* web_contents_tester = 268 content::WebContentsTester* web_contents_tester =
262 content::WebContentsTester::For(web_contents()); 269 content::WebContentsTester::For(web_contents());
263 content::RenderFrameHostTester* rfh_tester = 270 content::RenderFrameHostTester* rfh_tester =
264 content::RenderFrameHostTester::For(main_rfh()); 271 content::RenderFrameHostTester::For(main_rfh());
265 272
266 // Start the navigation, then start observing the web contents. This used to 273 // Start the navigation, then start observing the web contents. This used to
267 // crash us. Make sure we bail out and don't log histograms. 274 // crash us. Make sure we bail out and don't log histograms.
268 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl)); 275 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
269 AttachObserver(); 276 AttachObserver();
270 rfh_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl)); 277 rfh_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl));
271 278
272 observer_->OnMessageReceived( 279 observer_->OnMessageReceived(
273 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 280 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing,
281 PageLoadMetadata()),
274 main_rfh()); 282 main_rfh());
275 // Navigate again to force histogram logging. 283 // Navigate again to force histogram logging.
276 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); 284 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
277 AssertNoTimingReported(); 285 AssertNoTimingReported();
278 CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1); 286 CheckErrorEvent(ERR_IPC_WITH_NO_RELEVANT_LOAD, 1);
279 CheckTotalErrorEvents(); 287 CheckTotalErrorEvents();
280 } 288 }
281 289
282 TEST_F(MetricsWebContentsObserverTest, DontLogAbortChains) { 290 TEST_F(MetricsWebContentsObserverTest, DontLogAbortChains) {
283 NavigateAndCommit(GURL(kDefaultTestUrl)); 291 NavigateAndCommit(GURL(kDefaultTestUrl));
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 rfh_tester->SimulateNavigationStop(); 366 rfh_tester->SimulateNavigationStop();
359 367
360 web_contents()->Stop(); 368 web_contents()->Stop();
361 369
362 histogram_tester_.ExpectTotalCount(internal::kAbortChainSizeNoCommit, 1); 370 histogram_tester_.ExpectTotalCount(internal::kAbortChainSizeNoCommit, 1);
363 histogram_tester_.ExpectBucketCount(internal::kAbortChainSizeNoCommit, 3, 371 histogram_tester_.ExpectBucketCount(internal::kAbortChainSizeNoCommit, 3,
364 1); 372 1);
365 } 373 }
366 374
367 } // namespace page_load_metrics 375 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698