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 "base/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/feature_list.h" | 6 #include "base/feature_list.h" |
7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/test/histogram_tester.h" | 9 #include "base/test/histogram_tester.h" |
10 #include "base/test/scoped_feature_list.h" | |
11 #include "base/threading/thread_restrictions.h" | 10 #include "base/threading/thread_restrictions.h" |
12 #include "base/time/time.h" | 11 #include "base/time/time.h" |
13 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" | 12 #include "chrome/browser/page_load_metrics/metrics_web_contents_observer.h" |
14 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob
server.h" | 13 #include "chrome/browser/page_load_metrics/observers/aborts_page_load_metrics_ob
server.h" |
15 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse
rver.h" | 14 #include "chrome/browser/page_load_metrics/observers/core_page_load_metrics_obse
rver.h" |
16 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me
trics_observer.h" | 15 #include "chrome/browser/page_load_metrics/observers/document_write_page_load_me
trics_observer.h" |
17 #include "chrome/browser/page_load_metrics/observers/no_state_prefetch_page_load
_metrics_observer.h" | 16 #include "chrome/browser/page_load_metrics/observers/no_state_prefetch_page_load
_metrics_observer.h" |
18 #include "chrome/browser/page_load_metrics/page_load_tracker.h" | 17 #include "chrome/browser/page_load_metrics/page_load_tracker.h" |
19 #include "chrome/browser/prerender/prerender_histograms.h" | 18 #include "chrome/browser/prerender/prerender_histograms.h" |
20 #include "chrome/browser/prerender/prerender_origin.h" | 19 #include "chrome/browser/prerender/prerender_origin.h" |
21 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
22 #include "chrome/browser/ui/browser.h" | 21 #include "chrome/browser/ui/browser.h" |
23 #include "chrome/browser/ui/browser_navigator_params.h" | 22 #include "chrome/browser/ui/browser_navigator_params.h" |
24 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 23 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
25 #include "chrome/common/chrome_features.h" | 24 #include "chrome/common/page_load_metrics/page_load_metrics_messages.h" |
26 #include "chrome/common/pref_names.h" | 25 #include "chrome/common/pref_names.h" |
27 #include "chrome/common/url_constants.h" | 26 #include "chrome/common/url_constants.h" |
28 #include "chrome/test/base/in_process_browser_test.h" | 27 #include "chrome/test/base/in_process_browser_test.h" |
29 #include "chrome/test/base/ui_test_utils.h" | 28 #include "chrome/test/base/ui_test_utils.h" |
30 #include "components/prefs/pref_service.h" | 29 #include "components/prefs/pref_service.h" |
31 #include "content/public/browser/browser_thread.h" | 30 #include "content/public/browser/browser_thread.h" |
32 #include "content/public/browser/render_process_host.h" | 31 #include "content/public/browser/render_process_host.h" |
33 #include "content/public/browser/render_view_host.h" | 32 #include "content/public/browser/render_view_host.h" |
34 #include "content/public/common/content_features.h" | 33 #include "content/public/common/content_features.h" |
35 #include "content/public/common/content_switches.h" | 34 #include "content/public/common/content_switches.h" |
36 #include "content/public/test/browser_test_utils.h" | 35 #include "content/public/test/browser_test_utils.h" |
37 #include "content/public/test/download_test_observer.h" | 36 #include "content/public/test/download_test_observer.h" |
38 #include "net/base/net_errors.h" | 37 #include "net/base/net_errors.h" |
39 #include "net/dns/mock_host_resolver.h" | 38 #include "net/dns/mock_host_resolver.h" |
40 #include "net/http/failing_http_transaction_factory.h" | 39 #include "net/http/failing_http_transaction_factory.h" |
41 #include "net/http/http_cache.h" | 40 #include "net/http/http_cache.h" |
42 #include "net/test/embedded_test_server/embedded_test_server.h" | 41 #include "net/test/embedded_test_server/embedded_test_server.h" |
43 #include "net/test/url_request/url_request_failed_job.h" | 42 #include "net/test/url_request/url_request_failed_job.h" |
44 #include "net/url_request/url_request_context.h" | 43 #include "net/url_request/url_request_context.h" |
45 #include "net/url_request/url_request_context_getter.h" | 44 #include "net/url_request/url_request_context_getter.h" |
46 | 45 |
47 namespace { | 46 namespace { |
48 using IPCType = | |
49 page_load_metrics::MetricsWebContentsObserver::TestingObserver::IPCType; | |
50 | 47 |
51 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { | 48 void FailAllNetworkTransactions(net::URLRequestContextGetter* getter) { |
52 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 49 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
53 net::HttpCache* cache( | 50 net::HttpCache* cache( |
54 getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); | 51 getter->GetURLRequestContext()->http_transaction_factory()->GetCache()); |
55 DCHECK(cache); | 52 DCHECK(cache); |
56 std::unique_ptr<net::FailingHttpTransactionFactory> factory = | 53 std::unique_ptr<net::FailingHttpTransactionFactory> factory = |
57 base::MakeUnique<net::FailingHttpTransactionFactory>(cache->GetSession(), | 54 base::MakeUnique<net::FailingHttpTransactionFactory>(cache->GetSession(), |
58 net::ERR_FAILED); | 55 net::ERR_FAILED); |
59 // Throw away old version; since this is a browser test, there is no | 56 // Throw away old version; since this is a browser test, there is no |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 std::unique_ptr<base::RunLoop> run_loop_; | 185 std::unique_ptr<base::RunLoop> run_loop_; |
189 | 186 |
190 TimingFieldBitSet child_frame_expected_fields_; | 187 TimingFieldBitSet child_frame_expected_fields_; |
191 TimingFieldBitSet main_frame_expected_fields_; | 188 TimingFieldBitSet main_frame_expected_fields_; |
192 | 189 |
193 TimingFieldBitSet observed_main_frame_fields_; | 190 TimingFieldBitSet observed_main_frame_fields_; |
194 }; | 191 }; |
195 | 192 |
196 using TimingField = PageLoadMetricsWaiter::TimingField; | 193 using TimingField = PageLoadMetricsWaiter::TimingField; |
197 | 194 |
198 class IPCTypeVerifier | |
199 : public page_load_metrics::MetricsWebContentsObserver::TestingObserver { | |
200 public: | |
201 explicit IPCTypeVerifier(content::WebContents* web_contents) | |
202 : TestingObserver(web_contents) {} | |
203 | |
204 ~IPCTypeVerifier() override { AssertValidUpdateState(); } | |
205 | |
206 void ExpectNoTimingUpdates() { expect_updates_ = false; } | |
207 | |
208 void DidReceiveTimingUpdate(IPCType type) override { | |
209 ++num_updates_; | |
210 const bool is_mojo_enabled = | |
211 base::FeatureList::IsEnabled(features::kPageLoadMetricsMojofication); | |
212 switch (type) { | |
213 case IPCType::LEGACY: | |
214 ASSERT_FALSE(is_mojo_enabled); | |
215 break; | |
216 case IPCType::MOJO: | |
217 ASSERT_TRUE(is_mojo_enabled); | |
218 break; | |
219 default: | |
220 FAIL() << "Unknown IPCType"; | |
221 break; | |
222 } | |
223 } | |
224 | |
225 private: | |
226 void AssertValidUpdateState() { | |
227 ASSERT_EQ(expect_updates_, num_updates_ > 0); | |
228 } | |
229 | |
230 bool expect_updates_ = true; | |
231 int num_updates_ = 0; | |
232 }; | |
233 | |
234 } // namespace | 195 } // namespace |
235 | 196 |
236 class PageLoadMetricsBrowserTest : public InProcessBrowserTest, | 197 class PageLoadMetricsBrowserTest : public InProcessBrowserTest { |
237 public testing::WithParamInterface<IPCType> { | |
238 public: | 198 public: |
239 PageLoadMetricsBrowserTest() {} | 199 PageLoadMetricsBrowserTest() {} |
240 ~PageLoadMetricsBrowserTest() override {} | 200 ~PageLoadMetricsBrowserTest() override {} |
241 | 201 |
242 protected: | 202 protected: |
243 void SetUpCommandLine(base::CommandLine* command_line) override { | |
244 InProcessBrowserTest::SetUpCommandLine(command_line); | |
245 | |
246 // We need to set the feature state before the render process is created, | |
247 // in order for it to inherit the feature state from the browser process. | |
248 // SetUp() runs too early, and SetUpOnMainThread() runs too late. | |
249 const IPCType ipc_type = GetParam(); | |
250 switch (ipc_type) { | |
251 case IPCType::LEGACY: | |
252 scoped_feature_list_.InitAndDisableFeature( | |
253 features::kPageLoadMetricsMojofication); | |
254 break; | |
255 case IPCType::MOJO: | |
256 scoped_feature_list_.InitAndEnableFeature( | |
257 features::kPageLoadMetricsMojofication); | |
258 break; | |
259 default: | |
260 CHECK(false) << "Unknown IPCType."; | |
261 break; | |
262 } | |
263 } | |
264 | |
265 void SetUpOnMainThread() override { | |
266 InProcessBrowserTest::SetUpOnMainThread(); | |
267 | |
268 content::WebContents* web_contents = | |
269 browser()->tab_strip_model()->GetActiveWebContents(); | |
270 ipc_type_verifier_ = base::MakeUnique<IPCTypeVerifier>(web_contents); | |
271 } | |
272 | |
273 // Force navigation to a new page, so the currently tracked page load runs its | 203 // Force navigation to a new page, so the currently tracked page load runs its |
274 // OnComplete callback. You should prefer to use PageLoadMetricsWaiter, and | 204 // OnComplete callback. You should prefer to use PageLoadMetricsWaiter, and |
275 // only use NavigateToUntrackedUrl for cases where the waiter isn't | 205 // only use NavigateToUntrackedUrl for cases where the waiter isn't |
276 // sufficient. | 206 // sufficient. |
277 void NavigateToUntrackedUrl() { | 207 void NavigateToUntrackedUrl() { |
278 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); | 208 ui_test_utils::NavigateToURL(browser(), GURL(url::kAboutBlankURL)); |
279 } | 209 } |
280 | 210 |
281 bool NoPageLoadMetricsRecorded() { | 211 bool NoPageLoadMetricsRecorded() { |
282 // Determine whether any 'public' page load metrics are recorded. We exclude | 212 // Determine whether any 'public' page load metrics are recorded. We exclude |
283 // 'internal' metrics as these may be recorded for debugging purposes. | 213 // 'internal' metrics as these may be recorded for debugging purposes. |
284 size_t total_pageload_histograms = | 214 size_t total_pageload_histograms = |
285 histogram_tester_.GetTotalCountsForPrefix("PageLoad.").size(); | 215 histogram_tester_.GetTotalCountsForPrefix("PageLoad.").size(); |
286 size_t total_internal_histograms = | 216 size_t total_internal_histograms = |
287 histogram_tester_.GetTotalCountsForPrefix("PageLoad.Internal.").size(); | 217 histogram_tester_.GetTotalCountsForPrefix("PageLoad.Internal.").size(); |
288 DCHECK_GE(total_pageload_histograms, total_internal_histograms); | 218 DCHECK_GE(total_pageload_histograms, total_internal_histograms); |
289 return total_pageload_histograms - total_internal_histograms == 0; | 219 return total_pageload_histograms - total_internal_histograms == 0; |
290 } | 220 } |
291 | 221 |
292 std::unique_ptr<PageLoadMetricsWaiter> CreatePageLoadMetricsWaiter() { | 222 std::unique_ptr<PageLoadMetricsWaiter> CreatePageLoadMetricsWaiter() { |
293 content::WebContents* web_contents = | 223 content::WebContents* web_contents = |
294 browser()->tab_strip_model()->GetActiveWebContents(); | 224 browser()->tab_strip_model()->GetActiveWebContents(); |
295 return base::MakeUnique<PageLoadMetricsWaiter>(web_contents); | 225 return base::MakeUnique<PageLoadMetricsWaiter>(web_contents); |
296 } | 226 } |
297 | 227 |
298 void ExpectNoTimingUpdates() { ipc_type_verifier_->ExpectNoTimingUpdates(); } | |
299 | |
300 base::test::ScopedFeatureList scoped_feature_list_; | |
301 base::HistogramTester histogram_tester_; | 228 base::HistogramTester histogram_tester_; |
302 std::unique_ptr<IPCTypeVerifier> ipc_type_verifier_; | |
303 | 229 |
304 private: | 230 private: |
305 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); | 231 DISALLOW_COPY_AND_ASSIGN(PageLoadMetricsBrowserTest); |
306 }; | 232 }; |
307 | 233 |
308 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoNavigation) { | 234 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoNavigation) { |
309 ExpectNoTimingUpdates(); | |
310 ASSERT_TRUE(embedded_test_server()->Start()); | 235 ASSERT_TRUE(embedded_test_server()->Start()); |
311 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 236 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
312 } | 237 } |
313 | 238 |
314 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NewPage) { | 239 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NewPage) { |
315 ASSERT_TRUE(embedded_test_server()->Start()); | 240 ASSERT_TRUE(embedded_test_server()->Start()); |
316 | 241 |
317 auto waiter = CreatePageLoadMetricsWaiter(); | 242 auto waiter = CreatePageLoadMetricsWaiter(); |
318 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); | 243 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
319 ui_test_utils::NavigateToURL(browser(), | 244 ui_test_utils::NavigateToURL(browser(), |
320 embedded_test_server()->GetURL("/title1.html")); | 245 embedded_test_server()->GetURL("/title1.html")); |
321 waiter->Wait(); | 246 waiter->Wait(); |
322 | 247 |
323 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 248 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
324 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 249 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
(...skipping 10 matching lines...) Expand all Loading... |
335 NavigateToUntrackedUrl(); | 260 NavigateToUntrackedUrl(); |
336 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); | 261 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); |
337 histogram_tester_.ExpectTotalCount( | 262 histogram_tester_.ExpectTotalCount( |
338 internal::kHistogramPageTimingForegroundDuration, 1); | 263 internal::kHistogramPageTimingForegroundDuration, 1); |
339 | 264 |
340 // Verify that NoPageLoadMetricsRecorded returns false when PageLoad metrics | 265 // Verify that NoPageLoadMetricsRecorded returns false when PageLoad metrics |
341 // have been recorded. | 266 // have been recorded. |
342 EXPECT_FALSE(NoPageLoadMetricsRecorded()); | 267 EXPECT_FALSE(NoPageLoadMetricsRecorded()); |
343 } | 268 } |
344 | 269 |
345 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoPaintForEmptyDocument) { | 270 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoPaintForEmptyDocument) { |
346 ASSERT_TRUE(embedded_test_server()->Start()); | 271 ASSERT_TRUE(embedded_test_server()->Start()); |
347 | 272 |
348 auto waiter = CreatePageLoadMetricsWaiter(); | 273 auto waiter = CreatePageLoadMetricsWaiter(); |
349 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 274 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
350 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 275 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
351 ui_test_utils::NavigateToURL(browser(), | 276 ui_test_utils::NavigateToURL(browser(), |
352 embedded_test_server()->GetURL("/empty.html")); | 277 embedded_test_server()->GetURL("/empty.html")); |
353 waiter->Wait(); | 278 waiter->Wait(); |
354 EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); | 279 EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); |
355 | 280 |
356 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 281 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
357 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 282 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
358 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); | 283 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); |
359 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 284 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
360 0); | 285 0); |
361 } | 286 } |
362 | 287 |
363 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, | 288 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, |
364 NoPaintForEmptyDocumentInChildFrame) { | 289 NoPaintForEmptyDocumentInChildFrame) { |
365 ASSERT_TRUE(embedded_test_server()->Start()); | 290 ASSERT_TRUE(embedded_test_server()->Start()); |
366 | 291 |
367 GURL a_url( | 292 GURL a_url( |
368 embedded_test_server()->GetURL("/page_load_metrics/empty_iframe.html")); | 293 embedded_test_server()->GetURL("/page_load_metrics/empty_iframe.html")); |
369 | 294 |
370 auto waiter = CreatePageLoadMetricsWaiter(); | 295 auto waiter = CreatePageLoadMetricsWaiter(); |
371 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 296 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
372 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 297 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
373 waiter->AddSubFrameExpectation(TimingField::FIRST_LAYOUT); | 298 waiter->AddSubFrameExpectation(TimingField::FIRST_LAYOUT); |
374 waiter->AddSubFrameExpectation(TimingField::LOAD_EVENT); | 299 waiter->AddSubFrameExpectation(TimingField::LOAD_EVENT); |
375 ui_test_utils::NavigateToURL(browser(), a_url); | 300 ui_test_utils::NavigateToURL(browser(), a_url); |
376 waiter->Wait(); | 301 waiter->Wait(); |
377 EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); | 302 EXPECT_FALSE(waiter->DidObserveInMainFrame(TimingField::FIRST_PAINT)); |
378 | 303 |
379 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 304 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
380 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 305 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
381 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); | 306 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 0); |
382 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 307 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
383 0); | 308 0); |
384 } | 309 } |
385 | 310 |
386 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInChildFrame) { | 311 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PaintInChildFrame) { |
387 ASSERT_TRUE(embedded_test_server()->Start()); | 312 ASSERT_TRUE(embedded_test_server()->Start()); |
388 | 313 |
389 GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframe.html")); | 314 GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframe.html")); |
390 auto waiter = CreatePageLoadMetricsWaiter(); | 315 auto waiter = CreatePageLoadMetricsWaiter(); |
391 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 316 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
392 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 317 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
393 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); | 318 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
394 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 319 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
395 ui_test_utils::NavigateToURL(browser(), a_url); | 320 ui_test_utils::NavigateToURL(browser(), a_url); |
396 waiter->Wait(); | 321 waiter->Wait(); |
397 | 322 |
398 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 323 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
399 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 324 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
400 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); | 325 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); |
401 } | 326 } |
402 | 327 |
403 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInMultipleChildFrames) { | 328 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PaintInMultipleChildFrames) { |
404 ASSERT_TRUE(embedded_test_server()->Start()); | 329 ASSERT_TRUE(embedded_test_server()->Start()); |
405 | 330 |
406 GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframes.html")); | 331 GURL a_url(embedded_test_server()->GetURL("/page_load_metrics/iframes.html")); |
407 | 332 |
408 auto waiter = CreatePageLoadMetricsWaiter(); | 333 auto waiter = CreatePageLoadMetricsWaiter(); |
409 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 334 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
410 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 335 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
411 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); | 336 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
412 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 337 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
413 ui_test_utils::NavigateToURL(browser(), a_url); | 338 ui_test_utils::NavigateToURL(browser(), a_url); |
414 waiter->Wait(); | 339 waiter->Wait(); |
415 | 340 |
416 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 341 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
417 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 342 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
418 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); | 343 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); |
419 } | 344 } |
420 | 345 |
421 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PaintInMainAndChildFrame) { | 346 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PaintInMainAndChildFrame) { |
422 ASSERT_TRUE(embedded_test_server()->Start()); | 347 ASSERT_TRUE(embedded_test_server()->Start()); |
423 | 348 |
424 GURL a_url(embedded_test_server()->GetURL( | 349 GURL a_url(embedded_test_server()->GetURL( |
425 "/page_load_metrics/main_frame_with_iframe.html")); | 350 "/page_load_metrics/main_frame_with_iframe.html")); |
426 | 351 |
427 auto waiter = CreatePageLoadMetricsWaiter(); | 352 auto waiter = CreatePageLoadMetricsWaiter(); |
428 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 353 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
429 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 354 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
430 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); | 355 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
431 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 356 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
432 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); | 357 waiter->AddSubFrameExpectation(TimingField::FIRST_PAINT); |
433 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 358 waiter->AddSubFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
434 ui_test_utils::NavigateToURL(browser(), a_url); | 359 ui_test_utils::NavigateToURL(browser(), a_url); |
435 waiter->Wait(); | 360 waiter->Wait(); |
436 | 361 |
437 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 362 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
438 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 363 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
439 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); | 364 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstPaint, 1); |
440 } | 365 } |
441 | 366 |
442 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, SameDocumentNavigation) { | 367 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SameDocumentNavigation) { |
443 ASSERT_TRUE(embedded_test_server()->Start()); | 368 ASSERT_TRUE(embedded_test_server()->Start()); |
444 | 369 |
445 auto waiter = CreatePageLoadMetricsWaiter(); | 370 auto waiter = CreatePageLoadMetricsWaiter(); |
446 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 371 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
447 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 372 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
448 ui_test_utils::NavigateToURL(browser(), | 373 ui_test_utils::NavigateToURL(browser(), |
449 embedded_test_server()->GetURL("/title1.html")); | 374 embedded_test_server()->GetURL("/title1.html")); |
450 waiter->Wait(); | 375 waiter->Wait(); |
451 | 376 |
452 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 377 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
453 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 378 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
454 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 379 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
455 | 380 |
456 // Perform a same-document navigation. No additional metrics should be logged. | 381 // Perform a same-document navigation. No additional metrics should be logged. |
457 ui_test_utils::NavigateToURL( | 382 ui_test_utils::NavigateToURL( |
458 browser(), embedded_test_server()->GetURL("/title1.html#hash")); | 383 browser(), embedded_test_server()->GetURL("/title1.html#hash")); |
459 NavigateToUntrackedUrl(); | 384 NavigateToUntrackedUrl(); |
460 | 385 |
461 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 386 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
462 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 387 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
463 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 388 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
464 } | 389 } |
465 | 390 |
466 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, SameUrlNavigation) { | 391 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, SameUrlNavigation) { |
467 ASSERT_TRUE(embedded_test_server()->Start()); | 392 ASSERT_TRUE(embedded_test_server()->Start()); |
468 | 393 |
469 auto waiter = CreatePageLoadMetricsWaiter(); | 394 auto waiter = CreatePageLoadMetricsWaiter(); |
470 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 395 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
471 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 396 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
472 ui_test_utils::NavigateToURL(browser(), | 397 ui_test_utils::NavigateToURL(browser(), |
473 embedded_test_server()->GetURL("/title1.html")); | 398 embedded_test_server()->GetURL("/title1.html")); |
474 waiter->Wait(); | 399 waiter->Wait(); |
475 | 400 |
476 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); | 401 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 1); |
477 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); | 402 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 1); |
478 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); | 403 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 1); |
479 | 404 |
480 waiter = CreatePageLoadMetricsWaiter(); | 405 waiter = CreatePageLoadMetricsWaiter(); |
481 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); | 406 waiter->AddMainFrameExpectation(TimingField::FIRST_LAYOUT); |
482 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 407 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
483 ui_test_utils::NavigateToURL(browser(), | 408 ui_test_utils::NavigateToURL(browser(), |
484 embedded_test_server()->GetURL("/title1.html")); | 409 embedded_test_server()->GetURL("/title1.html")); |
485 waiter->Wait(); | 410 waiter->Wait(); |
486 | 411 |
487 // We expect one histogram sample for each navigation to title1.html. | 412 // We expect one histogram sample for each navigation to title1.html. |
488 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); | 413 histogram_tester_.ExpectTotalCount(internal::kHistogramDomContentLoaded, 2); |
489 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); | 414 histogram_tester_.ExpectTotalCount(internal::kHistogramLoad, 2); |
490 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); | 415 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstLayout, 2); |
491 } | 416 } |
492 | 417 |
493 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NonHtmlMainResource) { | 418 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHtmlMainResource) { |
494 ASSERT_TRUE(embedded_test_server()->Start()); | 419 ASSERT_TRUE(embedded_test_server()->Start()); |
495 | 420 |
496 ui_test_utils::NavigateToURL(browser(), | 421 ui_test_utils::NavigateToURL(browser(), |
497 embedded_test_server()->GetURL("/circle.svg")); | 422 embedded_test_server()->GetURL("/circle.svg")); |
498 NavigateToUntrackedUrl(); | 423 NavigateToUntrackedUrl(); |
499 ExpectNoTimingUpdates(); | |
500 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 424 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
501 } | 425 } |
502 | 426 |
503 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) { | 427 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NonHttpOrHttpsUrl) { |
504 ASSERT_TRUE(embedded_test_server()->Start()); | 428 ASSERT_TRUE(embedded_test_server()->Start()); |
505 | 429 |
506 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); | 430 ui_test_utils::NavigateToURL(browser(), GURL(chrome::kChromeUIVersionURL)); |
507 NavigateToUntrackedUrl(); | 431 NavigateToUntrackedUrl(); |
508 ExpectNoTimingUpdates(); | |
509 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 432 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
510 } | 433 } |
511 | 434 |
512 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, HttpErrorPage) { | 435 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, HttpErrorPage) { |
513 ASSERT_TRUE(embedded_test_server()->Start()); | 436 ASSERT_TRUE(embedded_test_server()->Start()); |
514 | 437 |
515 ui_test_utils::NavigateToURL( | 438 ui_test_utils::NavigateToURL( |
516 browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html")); | 439 browser(), embedded_test_server()->GetURL("/page_load_metrics/404.html")); |
517 NavigateToUntrackedUrl(); | 440 NavigateToUntrackedUrl(); |
518 ExpectNoTimingUpdates(); | |
519 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 441 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
520 } | 442 } |
521 | 443 |
522 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, ChromeErrorPage) { | 444 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, ChromeErrorPage) { |
523 ASSERT_TRUE(embedded_test_server()->Start()); | 445 ASSERT_TRUE(embedded_test_server()->Start()); |
524 | 446 |
525 // Configure the network stack to fail all attempted loads with a network | 447 // Configure the network stack to fail all attempted loads with a network |
526 // error, which will cause Chrome to display an error page. | 448 // error, which will cause Chrome to display an error page. |
527 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = | 449 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter = |
528 browser()->profile()->GetRequestContext(); | 450 browser()->profile()->GetRequestContext(); |
529 content::BrowserThread::PostTask( | 451 content::BrowserThread::PostTask( |
530 content::BrowserThread::IO, FROM_HERE, | 452 content::BrowserThread::IO, FROM_HERE, |
531 base::BindOnce(&FailAllNetworkTransactions, | 453 base::BindOnce(&FailAllNetworkTransactions, |
532 base::RetainedRef(url_request_context_getter))); | 454 base::RetainedRef(url_request_context_getter))); |
533 | 455 |
534 ui_test_utils::NavigateToURL(browser(), | 456 ui_test_utils::NavigateToURL(browser(), |
535 embedded_test_server()->GetURL("/title1.html")); | 457 embedded_test_server()->GetURL("/title1.html")); |
536 NavigateToUntrackedUrl(); | 458 NavigateToUntrackedUrl(); |
537 ExpectNoTimingUpdates(); | |
538 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 459 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
539 } | 460 } |
540 | 461 |
541 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, Ignore204Pages) { | 462 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, Ignore204Pages) { |
542 ASSERT_TRUE(embedded_test_server()->Start()); | 463 ASSERT_TRUE(embedded_test_server()->Start()); |
543 | 464 |
544 ui_test_utils::NavigateToURL(browser(), | 465 ui_test_utils::NavigateToURL(browser(), |
545 embedded_test_server()->GetURL("/page204.html")); | 466 embedded_test_server()->GetURL("/page204.html")); |
546 NavigateToUntrackedUrl(); | 467 NavigateToUntrackedUrl(); |
547 ExpectNoTimingUpdates(); | |
548 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 468 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
549 } | 469 } |
550 | 470 |
551 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, IgnoreDownloads) { | 471 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, IgnoreDownloads) { |
552 ASSERT_TRUE(embedded_test_server()->Start()); | 472 ASSERT_TRUE(embedded_test_server()->Start()); |
553 | 473 |
554 base::ThreadRestrictions::ScopedAllowIO allow_io; | 474 base::ThreadRestrictions::ScopedAllowIO allow_io; |
555 base::ScopedTempDir downloads_directory; | 475 base::ScopedTempDir downloads_directory; |
556 ASSERT_TRUE(downloads_directory.CreateUniqueTempDir()); | 476 ASSERT_TRUE(downloads_directory.CreateUniqueTempDir()); |
557 browser()->profile()->GetPrefs()->SetFilePath( | 477 browser()->profile()->GetPrefs()->SetFilePath( |
558 prefs::kDownloadDefaultDirectory, downloads_directory.GetPath()); | 478 prefs::kDownloadDefaultDirectory, downloads_directory.GetPath()); |
559 content::DownloadTestObserverTerminal downloads_observer( | 479 content::DownloadTestObserverTerminal downloads_observer( |
560 content::BrowserContext::GetDownloadManager(browser()->profile()), | 480 content::BrowserContext::GetDownloadManager(browser()->profile()), |
561 1, // == wait_count (only waiting for "download-test3.gif"). | 481 1, // == wait_count (only waiting for "download-test3.gif"). |
562 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); | 482 content::DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL); |
563 | 483 |
564 ui_test_utils::NavigateToURL( | 484 ui_test_utils::NavigateToURL( |
565 browser(), embedded_test_server()->GetURL("/download-test3.gif")); | 485 browser(), embedded_test_server()->GetURL("/download-test3.gif")); |
566 downloads_observer.WaitForFinished(); | 486 downloads_observer.WaitForFinished(); |
567 | 487 |
568 NavigateToUntrackedUrl(); | 488 NavigateToUntrackedUrl(); |
569 ExpectNoTimingUpdates(); | |
570 EXPECT_TRUE(NoPageLoadMetricsRecorded()); | 489 EXPECT_TRUE(NoPageLoadMetricsRecorded()); |
571 } | 490 } |
572 | 491 |
573 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PreloadDocumentWrite) { | 492 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PreloadDocumentWrite) { |
574 ASSERT_TRUE(embedded_test_server()->Start()); | 493 ASSERT_TRUE(embedded_test_server()->Start()); |
575 | 494 |
576 auto waiter = CreatePageLoadMetricsWaiter(); | 495 auto waiter = CreatePageLoadMetricsWaiter(); |
577 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 496 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
578 | 497 |
579 ui_test_utils::NavigateToURL( | 498 ui_test_utils::NavigateToURL( |
580 browser(), embedded_test_server()->GetURL( | 499 browser(), embedded_test_server()->GetURL( |
581 "/page_load_metrics/document_write_external_script.html")); | 500 "/page_load_metrics/document_write_external_script.html")); |
582 waiter->Wait(); | 501 waiter->Wait(); |
583 | 502 |
584 histogram_tester_.ExpectTotalCount( | 503 histogram_tester_.ExpectTotalCount( |
585 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); | 504 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 1); |
586 } | 505 } |
587 | 506 |
588 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoPreloadDocumentWrite) { | 507 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoPreloadDocumentWrite) { |
589 ASSERT_TRUE(embedded_test_server()->Start()); | 508 ASSERT_TRUE(embedded_test_server()->Start()); |
590 | 509 |
591 auto waiter = CreatePageLoadMetricsWaiter(); | 510 auto waiter = CreatePageLoadMetricsWaiter(); |
592 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 511 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
593 ui_test_utils::NavigateToURL( | 512 ui_test_utils::NavigateToURL( |
594 browser(), embedded_test_server()->GetURL( | 513 browser(), embedded_test_server()->GetURL( |
595 "/page_load_metrics/document_write_no_script.html")); | 514 "/page_load_metrics/document_write_no_script.html")); |
596 waiter->Wait(); | 515 waiter->Wait(); |
597 | 516 |
598 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 517 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
599 1); | 518 1); |
600 histogram_tester_.ExpectTotalCount( | 519 histogram_tester_.ExpectTotalCount( |
601 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); | 520 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
602 } | 521 } |
603 | 522 |
604 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoDocumentWrite) { | 523 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWrite) { |
605 ASSERT_TRUE(embedded_test_server()->Start()); | 524 ASSERT_TRUE(embedded_test_server()->Start()); |
606 | 525 |
607 auto waiter = CreatePageLoadMetricsWaiter(); | 526 auto waiter = CreatePageLoadMetricsWaiter(); |
608 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 527 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
609 | 528 |
610 ui_test_utils::NavigateToURL(browser(), | 529 ui_test_utils::NavigateToURL(browser(), |
611 embedded_test_server()->GetURL("/title1.html")); | 530 embedded_test_server()->GetURL("/title1.html")); |
612 waiter->Wait(); | 531 waiter->Wait(); |
613 | 532 |
614 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 533 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
615 1); | 534 1); |
616 histogram_tester_.ExpectTotalCount( | 535 histogram_tester_.ExpectTotalCount( |
617 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); | 536 internal::kHistogramDocWriteParseStartToFirstContentfulPaint, 0); |
618 histogram_tester_.ExpectTotalCount( | 537 histogram_tester_.ExpectTotalCount( |
619 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 538 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
620 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 539 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
621 } | 540 } |
622 | 541 |
623 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteBlock) { | 542 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteBlock) { |
624 ASSERT_TRUE(embedded_test_server()->Start()); | 543 ASSERT_TRUE(embedded_test_server()->Start()); |
625 | 544 |
626 auto waiter = CreatePageLoadMetricsWaiter(); | 545 auto waiter = CreatePageLoadMetricsWaiter(); |
627 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 546 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
628 | 547 |
629 ui_test_utils::NavigateToURL( | 548 ui_test_utils::NavigateToURL( |
630 browser(), embedded_test_server()->GetURL( | 549 browser(), embedded_test_server()->GetURL( |
631 "/page_load_metrics/document_write_script_block.html")); | 550 "/page_load_metrics/document_write_script_block.html")); |
632 waiter->Wait(); | 551 waiter->Wait(); |
633 | 552 |
634 histogram_tester_.ExpectTotalCount( | 553 histogram_tester_.ExpectTotalCount( |
635 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 554 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
636 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); | 555 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); |
637 } | 556 } |
638 | 557 |
639 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteReload) { | 558 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteReload) { |
640 ASSERT_TRUE(embedded_test_server()->Start()); | 559 ASSERT_TRUE(embedded_test_server()->Start()); |
641 | 560 |
642 auto waiter = CreatePageLoadMetricsWaiter(); | 561 auto waiter = CreatePageLoadMetricsWaiter(); |
643 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 562 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
644 ui_test_utils::NavigateToURL( | 563 ui_test_utils::NavigateToURL( |
645 browser(), embedded_test_server()->GetURL( | 564 browser(), embedded_test_server()->GetURL( |
646 "/page_load_metrics/document_write_script_block.html")); | 565 "/page_load_metrics/document_write_script_block.html")); |
647 waiter->Wait(); | 566 waiter->Wait(); |
648 | 567 |
649 histogram_tester_.ExpectTotalCount( | 568 histogram_tester_.ExpectTotalCount( |
(...skipping 23 matching lines...) Expand all Loading... |
673 reload_waiter->Wait(); | 592 reload_waiter->Wait(); |
674 | 593 |
675 histogram_tester_.ExpectTotalCount( | 594 histogram_tester_.ExpectTotalCount( |
676 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); | 595 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 1); |
677 | 596 |
678 histogram_tester_.ExpectTotalCount( | 597 histogram_tester_.ExpectTotalCount( |
679 internal::kHistogramDocWriteBlockReloadCount, 2); | 598 internal::kHistogramDocWriteBlockReloadCount, 2); |
680 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); | 599 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 1); |
681 } | 600 } |
682 | 601 |
683 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteAsync) { | 602 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteAsync) { |
684 ASSERT_TRUE(embedded_test_server()->Start()); | 603 ASSERT_TRUE(embedded_test_server()->Start()); |
685 | 604 |
686 auto waiter = CreatePageLoadMetricsWaiter(); | 605 auto waiter = CreatePageLoadMetricsWaiter(); |
687 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 606 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
688 ui_test_utils::NavigateToURL( | 607 ui_test_utils::NavigateToURL( |
689 browser(), embedded_test_server()->GetURL( | 608 browser(), embedded_test_server()->GetURL( |
690 "/page_load_metrics/document_write_async_script.html")); | 609 "/page_load_metrics/document_write_async_script.html")); |
691 waiter->Wait(); | 610 waiter->Wait(); |
692 | 611 |
693 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 612 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
694 1); | 613 1); |
695 histogram_tester_.ExpectTotalCount( | 614 histogram_tester_.ExpectTotalCount( |
696 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 615 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
697 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 616 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
698 } | 617 } |
699 | 618 |
700 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, DocumentWriteSameDomain) { | 619 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, DocumentWriteSameDomain) { |
701 ASSERT_TRUE(embedded_test_server()->Start()); | 620 ASSERT_TRUE(embedded_test_server()->Start()); |
702 | 621 |
703 auto waiter = CreatePageLoadMetricsWaiter(); | 622 auto waiter = CreatePageLoadMetricsWaiter(); |
704 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 623 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
705 ui_test_utils::NavigateToURL( | 624 ui_test_utils::NavigateToURL( |
706 browser(), embedded_test_server()->GetURL( | 625 browser(), embedded_test_server()->GetURL( |
707 "/page_load_metrics/document_write_external_script.html")); | 626 "/page_load_metrics/document_write_external_script.html")); |
708 waiter->Wait(); | 627 waiter->Wait(); |
709 | 628 |
710 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 629 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
711 1); | 630 1); |
712 histogram_tester_.ExpectTotalCount( | 631 histogram_tester_.ExpectTotalCount( |
713 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 632 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
714 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 633 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
715 } | 634 } |
716 | 635 |
717 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, NoDocumentWriteScript) { | 636 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, NoDocumentWriteScript) { |
718 ASSERT_TRUE(embedded_test_server()->Start()); | 637 ASSERT_TRUE(embedded_test_server()->Start()); |
719 | 638 |
720 auto waiter = CreatePageLoadMetricsWaiter(); | 639 auto waiter = CreatePageLoadMetricsWaiter(); |
721 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 640 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
722 ui_test_utils::NavigateToURL( | 641 ui_test_utils::NavigateToURL( |
723 browser(), embedded_test_server()->GetURL( | 642 browser(), embedded_test_server()->GetURL( |
724 "/page_load_metrics/document_write_no_script.html")); | 643 "/page_load_metrics/document_write_no_script.html")); |
725 waiter->Wait(); | 644 waiter->Wait(); |
726 | 645 |
727 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 646 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
728 1); | 647 1); |
729 histogram_tester_.ExpectTotalCount( | 648 histogram_tester_.ExpectTotalCount( |
730 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); | 649 internal::kHistogramDocWriteBlockParseStartToFirstContentfulPaint, 0); |
731 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); | 650 histogram_tester_.ExpectTotalCount(internal::kHistogramDocWriteBlockCount, 0); |
732 } | 651 } |
733 | 652 |
734 // TODO(crbug.com/712935): Flaky on Linux dbg. | 653 // TODO(crbug.com/712935): Flaky on Linux dbg. |
735 #if defined(OS_LINUX) && !defined(NDEBUG) | 654 #if defined(OS_LINUX) && !defined(NDEBUG) |
736 #define MAYBE_BadXhtml DISABLED_BadXhtml | 655 #define MAYBE_BadXhtml DISABLED_BadXhtml |
737 #else | 656 #else |
738 #define MAYBE_BadXhtml BadXhtml | 657 #define MAYBE_BadXhtml BadXhtml |
739 #endif | 658 #endif |
740 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, MAYBE_BadXhtml) { | 659 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, MAYBE_BadXhtml) { |
741 ASSERT_TRUE(embedded_test_server()->Start()); | 660 ASSERT_TRUE(embedded_test_server()->Start()); |
742 | 661 |
743 auto waiter = CreatePageLoadMetricsWaiter(); | 662 auto waiter = CreatePageLoadMetricsWaiter(); |
744 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); | 663 waiter->AddMainFrameExpectation(TimingField::FIRST_PAINT); |
745 | 664 |
746 // When an XHTML page contains invalid XML, it causes a paint of the error | 665 // When an XHTML page contains invalid XML, it causes a paint of the error |
747 // message without a layout. Page load metrics currently treats this as an | 666 // message without a layout. Page load metrics currently treats this as an |
748 // error. Eventually, we'll fix this by special casing the handling of | 667 // error. Eventually, we'll fix this by special casing the handling of |
749 // documents with non-well-formed XML on the blink side. See crbug.com/627607 | 668 // documents with non-well-formed XML on the blink side. See crbug.com/627607 |
750 // for more. | 669 // for more. |
(...skipping 14 matching lines...) Expand all Loading... |
765 histogram_tester_.ExpectTotalCount( | 684 histogram_tester_.ExpectTotalCount( |
766 page_load_metrics::internal::kPageLoadTimingStatus, 1); | 685 page_load_metrics::internal::kPageLoadTimingStatus, 1); |
767 histogram_tester_.ExpectBucketCount( | 686 histogram_tester_.ExpectBucketCount( |
768 page_load_metrics::internal::kPageLoadTimingStatus, | 687 page_load_metrics::internal::kPageLoadTimingStatus, |
769 page_load_metrics::internal::INVALID_ORDER_FIRST_LAYOUT_FIRST_PAINT, 1); | 688 page_load_metrics::internal::INVALID_ORDER_FIRST_LAYOUT_FIRST_PAINT, 1); |
770 } | 689 } |
771 | 690 |
772 // Test code that aborts provisional navigations. | 691 // Test code that aborts provisional navigations. |
773 // TODO(csharrison): Move these to unit tests once the navigation API in content | 692 // TODO(csharrison): Move these to unit tests once the navigation API in content |
774 // properly calls NavigationHandle/NavigationThrottle methods. | 693 // properly calls NavigationHandle/NavigationThrottle methods. |
775 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortNewNavigation) { | 694 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortNewNavigation) { |
776 ASSERT_TRUE(embedded_test_server()->Start()); | 695 ASSERT_TRUE(embedded_test_server()->Start()); |
777 | 696 |
778 GURL url(embedded_test_server()->GetURL("/title1.html")); | 697 GURL url(embedded_test_server()->GetURL("/title1.html")); |
779 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 698 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
780 content::TestNavigationManager manager( | 699 content::TestNavigationManager manager( |
781 browser()->tab_strip_model()->GetActiveWebContents(), url); | 700 browser()->tab_strip_model()->GetActiveWebContents(), url); |
782 | 701 |
783 chrome::Navigate(¶ms); | 702 chrome::Navigate(¶ms); |
784 EXPECT_TRUE(manager.WaitForRequestStart()); | 703 EXPECT_TRUE(manager.WaitForRequestStart()); |
785 | 704 |
786 GURL url2(embedded_test_server()->GetURL("/title2.html")); | 705 GURL url2(embedded_test_server()->GetURL("/title2.html")); |
787 chrome::NavigateParams params2(browser(), url2, | 706 chrome::NavigateParams params2(browser(), url2, |
788 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); | 707 ui::PAGE_TRANSITION_FROM_ADDRESS_BAR); |
789 | 708 |
790 auto waiter = CreatePageLoadMetricsWaiter(); | 709 auto waiter = CreatePageLoadMetricsWaiter(); |
791 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 710 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
792 chrome::Navigate(¶ms2); | 711 chrome::Navigate(¶ms2); |
793 waiter->Wait(); | 712 waiter->Wait(); |
794 | 713 |
795 histogram_tester_.ExpectTotalCount( | 714 histogram_tester_.ExpectTotalCount( |
796 internal::kHistogramAbortNewNavigationBeforeCommit, 1); | 715 internal::kHistogramAbortNewNavigationBeforeCommit, 1); |
797 } | 716 } |
798 | 717 |
799 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortReload) { | 718 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortReload) { |
800 ASSERT_TRUE(embedded_test_server()->Start()); | 719 ASSERT_TRUE(embedded_test_server()->Start()); |
801 | 720 |
802 GURL url(embedded_test_server()->GetURL("/title1.html")); | 721 GURL url(embedded_test_server()->GetURL("/title1.html")); |
803 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 722 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
804 content::TestNavigationManager manager( | 723 content::TestNavigationManager manager( |
805 browser()->tab_strip_model()->GetActiveWebContents(), url); | 724 browser()->tab_strip_model()->GetActiveWebContents(), url); |
806 | 725 |
807 chrome::Navigate(¶ms); | 726 chrome::Navigate(¶ms); |
808 EXPECT_TRUE(manager.WaitForRequestStart()); | 727 EXPECT_TRUE(manager.WaitForRequestStart()); |
809 | 728 |
810 chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD); | 729 chrome::NavigateParams params2(browser(), url, ui::PAGE_TRANSITION_RELOAD); |
811 | 730 |
812 auto waiter = CreatePageLoadMetricsWaiter(); | 731 auto waiter = CreatePageLoadMetricsWaiter(); |
813 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 732 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
814 chrome::Navigate(¶ms2); | 733 chrome::Navigate(¶ms2); |
815 waiter->Wait(); | 734 waiter->Wait(); |
816 | 735 |
817 histogram_tester_.ExpectTotalCount( | 736 histogram_tester_.ExpectTotalCount( |
818 internal::kHistogramAbortReloadBeforeCommit, 1); | 737 internal::kHistogramAbortReloadBeforeCommit, 1); |
819 } | 738 } |
820 | 739 |
821 // TODO(crbug.com/675061): Flaky on Win7 dbg. | 740 // TODO(crbug.com/675061): Flaky on Win7 dbg. |
822 #if defined(OS_WIN) | 741 #if defined(OS_WIN) |
823 #define MAYBE_AbortClose DISABLED_AbortClose | 742 #define MAYBE_AbortClose DISABLED_AbortClose |
824 #else | 743 #else |
825 #define MAYBE_AbortClose AbortClose | 744 #define MAYBE_AbortClose AbortClose |
826 #endif | 745 #endif |
827 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, MAYBE_AbortClose) { | 746 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, MAYBE_AbortClose) { |
828 ASSERT_TRUE(embedded_test_server()->Start()); | 747 ASSERT_TRUE(embedded_test_server()->Start()); |
829 | 748 |
830 GURL url(embedded_test_server()->GetURL("/title1.html")); | 749 GURL url(embedded_test_server()->GetURL("/title1.html")); |
831 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 750 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
832 content::TestNavigationManager manager( | 751 content::TestNavigationManager manager( |
833 browser()->tab_strip_model()->GetActiveWebContents(), url); | 752 browser()->tab_strip_model()->GetActiveWebContents(), url); |
834 | 753 |
835 chrome::Navigate(¶ms); | 754 chrome::Navigate(¶ms); |
836 EXPECT_TRUE(manager.WaitForRequestStart()); | 755 EXPECT_TRUE(manager.WaitForRequestStart()); |
837 | 756 |
838 browser()->tab_strip_model()->GetActiveWebContents()->Close(); | 757 browser()->tab_strip_model()->GetActiveWebContents()->Close(); |
839 | 758 |
840 manager.WaitForNavigationFinished(); | 759 manager.WaitForNavigationFinished(); |
841 | 760 |
842 histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit, | 761 histogram_tester_.ExpectTotalCount(internal::kHistogramAbortCloseBeforeCommit, |
843 1); | 762 1); |
844 ExpectNoTimingUpdates(); | |
845 } | 763 } |
846 | 764 |
847 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, AbortMultiple) { | 765 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, AbortMultiple) { |
848 ASSERT_TRUE(embedded_test_server()->Start()); | 766 ASSERT_TRUE(embedded_test_server()->Start()); |
849 | 767 |
850 GURL url(embedded_test_server()->GetURL("/title1.html")); | 768 GURL url(embedded_test_server()->GetURL("/title1.html")); |
851 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); | 769 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK); |
852 content::TestNavigationManager manager( | 770 content::TestNavigationManager manager( |
853 browser()->tab_strip_model()->GetActiveWebContents(), url); | 771 browser()->tab_strip_model()->GetActiveWebContents(), url); |
854 | 772 |
855 chrome::Navigate(¶ms); | 773 chrome::Navigate(¶ms); |
856 EXPECT_TRUE(manager.WaitForRequestStart()); | 774 EXPECT_TRUE(manager.WaitForRequestStart()); |
857 | 775 |
(...skipping 13 matching lines...) Expand all Loading... |
871 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 789 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
872 chrome::Navigate(¶ms3); | 790 chrome::Navigate(¶ms3); |
873 waiter->Wait(); | 791 waiter->Wait(); |
874 | 792 |
875 manager2.WaitForNavigationFinished(); | 793 manager2.WaitForNavigationFinished(); |
876 | 794 |
877 histogram_tester_.ExpectTotalCount( | 795 histogram_tester_.ExpectTotalCount( |
878 internal::kHistogramAbortNewNavigationBeforeCommit, 2); | 796 internal::kHistogramAbortNewNavigationBeforeCommit, 2); |
879 } | 797 } |
880 | 798 |
881 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, | 799 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, |
882 NoAbortMetricsOnClientRedirect) { | 800 NoAbortMetricsOnClientRedirect) { |
883 ASSERT_TRUE(embedded_test_server()->Start()); | 801 ASSERT_TRUE(embedded_test_server()->Start()); |
884 | 802 |
885 GURL first_url(embedded_test_server()->GetURL("/title1.html")); | 803 GURL first_url(embedded_test_server()->GetURL("/title1.html")); |
886 ui_test_utils::NavigateToURL(browser(), first_url); | 804 ui_test_utils::NavigateToURL(browser(), first_url); |
887 | 805 |
888 GURL second_url(embedded_test_server()->GetURL("/title2.html")); | 806 GURL second_url(embedded_test_server()->GetURL("/title2.html")); |
889 chrome::NavigateParams params(browser(), second_url, | 807 chrome::NavigateParams params(browser(), second_url, |
890 ui::PAGE_TRANSITION_LINK); | 808 ui::PAGE_TRANSITION_LINK); |
891 content::TestNavigationManager manager( | 809 content::TestNavigationManager manager( |
(...skipping 12 matching lines...) Expand all Loading... |
904 waiter->Wait(); | 822 waiter->Wait(); |
905 } | 823 } |
906 | 824 |
907 manager.WaitForNavigationFinished(); | 825 manager.WaitForNavigationFinished(); |
908 | 826 |
909 EXPECT_TRUE(histogram_tester_ | 827 EXPECT_TRUE(histogram_tester_ |
910 .GetTotalCountsForPrefix("PageLoad.Experimental.AbortTiming.") | 828 .GetTotalCountsForPrefix("PageLoad.Experimental.AbortTiming.") |
911 .empty()); | 829 .empty()); |
912 } | 830 } |
913 | 831 |
914 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, | 832 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, |
915 FirstMeaningfulPaintRecorded) { | 833 FirstMeaningfulPaintRecorded) { |
916 ASSERT_TRUE(embedded_test_server()->Start()); | 834 ASSERT_TRUE(embedded_test_server()->Start()); |
917 | 835 |
918 auto waiter = CreatePageLoadMetricsWaiter(); | 836 auto waiter = CreatePageLoadMetricsWaiter(); |
919 waiter->AddMainFrameExpectation(TimingField::FIRST_MEANINGFUL_PAINT); | 837 waiter->AddMainFrameExpectation(TimingField::FIRST_MEANINGFUL_PAINT); |
920 ui_test_utils::NavigateToURL(browser(), | 838 ui_test_utils::NavigateToURL(browser(), |
921 embedded_test_server()->GetURL("/title1.html")); | 839 embedded_test_server()->GetURL("/title1.html")); |
922 waiter->Wait(); | 840 waiter->Wait(); |
923 | 841 |
924 histogram_tester_.ExpectUniqueSample( | 842 histogram_tester_.ExpectUniqueSample( |
925 internal::kHistogramFirstMeaningfulPaintStatus, | 843 internal::kHistogramFirstMeaningfulPaintStatus, |
926 internal::FIRST_MEANINGFUL_PAINT_RECORDED, 1); | 844 internal::FIRST_MEANINGFUL_PAINT_RECORDED, 1); |
927 histogram_tester_.ExpectTotalCount( | 845 histogram_tester_.ExpectTotalCount( |
928 internal::kHistogramFirstMeaningfulPaint, 1); | 846 internal::kHistogramFirstMeaningfulPaint, 1); |
929 histogram_tester_.ExpectTotalCount( | 847 histogram_tester_.ExpectTotalCount( |
930 internal::kHistogramParseStartToFirstMeaningfulPaint, 1); | 848 internal::kHistogramParseStartToFirstMeaningfulPaint, 1); |
931 } | 849 } |
932 | 850 |
933 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, | 851 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, |
934 FirstMeaningfulPaintNotRecorded) { | 852 FirstMeaningfulPaintNotRecorded) { |
935 ASSERT_TRUE(embedded_test_server()->Start()); | 853 ASSERT_TRUE(embedded_test_server()->Start()); |
936 | 854 |
937 auto waiter = CreatePageLoadMetricsWaiter(); | 855 auto waiter = CreatePageLoadMetricsWaiter(); |
938 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 856 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
939 | 857 |
940 ui_test_utils::NavigateToURL( | 858 ui_test_utils::NavigateToURL( |
941 browser(), embedded_test_server()->GetURL( | 859 browser(), embedded_test_server()->GetURL( |
942 "/page_load_metrics/page_with_active_connections.html")); | 860 "/page_load_metrics/page_with_active_connections.html")); |
943 waiter->Wait(); | 861 waiter->Wait(); |
944 | 862 |
945 // Navigate away before a FMP is reported. | 863 // Navigate away before a FMP is reported. |
946 NavigateToUntrackedUrl(); | 864 NavigateToUntrackedUrl(); |
947 | 865 |
948 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 866 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
949 1); | 867 1); |
950 histogram_tester_.ExpectUniqueSample( | 868 histogram_tester_.ExpectUniqueSample( |
951 internal::kHistogramFirstMeaningfulPaintStatus, | 869 internal::kHistogramFirstMeaningfulPaintStatus, |
952 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE, 1); | 870 internal::FIRST_MEANINGFUL_PAINT_DID_NOT_REACH_NETWORK_STABLE, 1); |
953 histogram_tester_.ExpectTotalCount( | 871 histogram_tester_.ExpectTotalCount( |
954 internal::kHistogramFirstMeaningfulPaint, 0); | 872 internal::kHistogramFirstMeaningfulPaint, 0); |
955 histogram_tester_.ExpectTotalCount( | 873 histogram_tester_.ExpectTotalCount( |
956 internal::kHistogramParseStartToFirstMeaningfulPaint, 0); | 874 internal::kHistogramParseStartToFirstMeaningfulPaint, 0); |
957 } | 875 } |
958 | 876 |
959 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, | 877 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, |
960 NoStatePrefetchObserverCacheable) { | 878 NoStatePrefetchObserverCacheable) { |
961 ASSERT_TRUE(embedded_test_server()->Start()); | 879 ASSERT_TRUE(embedded_test_server()->Start()); |
962 | 880 |
963 auto waiter = CreatePageLoadMetricsWaiter(); | 881 auto waiter = CreatePageLoadMetricsWaiter(); |
964 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 882 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
965 | 883 |
966 ui_test_utils::NavigateToURL(browser(), | 884 ui_test_utils::NavigateToURL(browser(), |
967 embedded_test_server()->GetURL("/title1.html")); | 885 embedded_test_server()->GetURL("/title1.html")); |
968 | 886 |
969 waiter->Wait(); | 887 waiter->Wait(); |
970 | 888 |
971 histogram_tester_.ExpectTotalCount( | 889 histogram_tester_.ExpectTotalCount( |
972 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 0); | 890 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 0); |
973 histogram_tester_.ExpectTotalCount( | 891 histogram_tester_.ExpectTotalCount( |
974 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 1); | 892 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 1); |
975 } | 893 } |
976 | 894 |
977 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, | 895 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, |
978 NoStatePrefetchObserverNoStore) { | 896 NoStatePrefetchObserverNoStore) { |
979 ASSERT_TRUE(embedded_test_server()->Start()); | 897 ASSERT_TRUE(embedded_test_server()->Start()); |
980 | 898 |
981 auto waiter = CreatePageLoadMetricsWaiter(); | 899 auto waiter = CreatePageLoadMetricsWaiter(); |
982 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); | 900 waiter->AddMainFrameExpectation(TimingField::FIRST_CONTENTFUL_PAINT); |
983 | 901 |
984 ui_test_utils::NavigateToURL(browser(), | 902 ui_test_utils::NavigateToURL(browser(), |
985 embedded_test_server()->GetURL("/nostore.html")); | 903 embedded_test_server()->GetURL("/nostore.html")); |
986 | 904 |
987 waiter->Wait(); | 905 waiter->Wait(); |
988 | 906 |
989 histogram_tester_.ExpectTotalCount( | 907 histogram_tester_.ExpectTotalCount( |
990 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 1); | 908 "Prerender.none_PrefetchTTFCP.Reference.NoStore.Visible", 1); |
991 histogram_tester_.ExpectTotalCount( | 909 histogram_tester_.ExpectTotalCount( |
992 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 0); | 910 "Prerender.none_PrefetchTTFCP.Reference.Cacheable.Visible", 0); |
993 } | 911 } |
994 | 912 |
995 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, CSSTiming) { | 913 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, CSSTiming) { |
996 ASSERT_TRUE(embedded_test_server()->Start()); | 914 ASSERT_TRUE(embedded_test_server()->Start()); |
997 | 915 |
998 auto waiter = CreatePageLoadMetricsWaiter(); | 916 auto waiter = CreatePageLoadMetricsWaiter(); |
999 waiter->AddMainFrameExpectation(TimingField::STYLE_UPDATE_BEFORE_FCP); | 917 waiter->AddMainFrameExpectation(TimingField::STYLE_UPDATE_BEFORE_FCP); |
1000 | 918 |
1001 // Careful: Blink code clamps timestamps to 5us, so any CSS parsing we do here | 919 // Careful: Blink code clamps timestamps to 5us, so any CSS parsing we do here |
1002 // must take >> 5us, otherwise we'll log 0 for the value and it will remain | 920 // must take >> 5us, otherwise we'll log 0 for the value and it will remain |
1003 // unset here. | 921 // unset here. |
1004 ui_test_utils::NavigateToURL( | 922 ui_test_utils::NavigateToURL( |
1005 browser(), | 923 browser(), |
1006 embedded_test_server()->GetURL("/page_load_metrics/page_with_css.html")); | 924 embedded_test_server()->GetURL("/page_load_metrics/page_with_css.html")); |
1007 waiter->Wait(); | 925 waiter->Wait(); |
1008 | 926 |
1009 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, | 927 histogram_tester_.ExpectTotalCount(internal::kHistogramFirstContentfulPaint, |
1010 1); | 928 1); |
1011 histogram_tester_.ExpectTotalCount( | 929 histogram_tester_.ExpectTotalCount( |
1012 "PageLoad.CSSTiming.Parse.BeforeFirstContentfulPaint", 1); | 930 "PageLoad.CSSTiming.Parse.BeforeFirstContentfulPaint", 1); |
1013 histogram_tester_.ExpectTotalCount( | 931 histogram_tester_.ExpectTotalCount( |
1014 "PageLoad.CSSTiming.Update.BeforeFirstContentfulPaint", 1); | 932 "PageLoad.CSSTiming.Update.BeforeFirstContentfulPaint", 1); |
1015 histogram_tester_.ExpectTotalCount( | 933 histogram_tester_.ExpectTotalCount( |
1016 "PageLoad.CSSTiming.ParseAndUpdate.BeforeFirstContentfulPaint", 1); | 934 "PageLoad.CSSTiming.ParseAndUpdate.BeforeFirstContentfulPaint", 1); |
1017 } | 935 } |
1018 | 936 |
1019 IN_PROC_BROWSER_TEST_P(PageLoadMetricsBrowserTest, PayloadSize) { | 937 IN_PROC_BROWSER_TEST_F(PageLoadMetricsBrowserTest, PayloadSize) { |
1020 ASSERT_TRUE(embedded_test_server()->Start()); | 938 ASSERT_TRUE(embedded_test_server()->Start()); |
1021 | 939 |
1022 auto waiter = CreatePageLoadMetricsWaiter(); | 940 auto waiter = CreatePageLoadMetricsWaiter(); |
1023 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); | 941 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); |
1024 ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( | 942 ui_test_utils::NavigateToURL(browser(), embedded_test_server()->GetURL( |
1025 "/page_load_metrics/large.html")); | 943 "/page_load_metrics/large.html")); |
1026 waiter->Wait(); | 944 waiter->Wait(); |
1027 | 945 |
1028 // Payload histograms are only logged when a page load terminates, so force | 946 // Payload histograms are only logged when a page load terminates, so force |
1029 // navigation to another page. | 947 // navigation to another page. |
1030 NavigateToUntrackedUrl(); | 948 NavigateToUntrackedUrl(); |
1031 | 949 |
1032 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); | 950 histogram_tester_.ExpectTotalCount(internal::kHistogramTotalBytes, 1); |
1033 | 951 |
1034 // Verify that there is a single sample recorded in the 10kB bucket (the size | 952 // Verify that there is a single sample recorded in the 10kB bucket (the size |
1035 // of the main HTML response). | 953 // of the main HTML response). |
1036 histogram_tester_.ExpectBucketCount(internal::kHistogramTotalBytes, 10, 1); | 954 histogram_tester_.ExpectBucketCount(internal::kHistogramTotalBytes, 10, 1); |
1037 } | 955 } |
1038 | |
1039 INSTANTIATE_TEST_CASE_P( | |
1040 /* no prefix */, | |
1041 PageLoadMetricsBrowserTest, | |
1042 testing::Values(IPCType::LEGACY, IPCType::MOJO)); | |
OLD | NEW |