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

Side by Side Diff: chrome/browser/page_load_metrics/page_load_metrics_browsertest.cc

Issue 2897243002: Revert of [Page Load Metrics] PageLoadMetrics Mojofication. (Closed)
Patch Set: Created 3 years, 7 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 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
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
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
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
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(&params); 702 chrome::Navigate(&params);
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(&params2); 711 chrome::Navigate(&params2);
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(&params); 726 chrome::Navigate(&params);
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(&params2); 733 chrome::Navigate(&params2);
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(&params); 754 chrome::Navigate(&params);
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(&params); 773 chrome::Navigate(&params);
856 EXPECT_TRUE(manager.WaitForRequestStart()); 774 EXPECT_TRUE(manager.WaitForRequestStart());
857 775
(...skipping 13 matching lines...) Expand all
871 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT); 789 waiter->AddMainFrameExpectation(TimingField::LOAD_EVENT);
872 chrome::Navigate(&params3); 790 chrome::Navigate(&params3);
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
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));
OLDNEW
« no previous file with comments | « chrome/browser/page_load_metrics/metrics_web_contents_observer.cc ('k') | chrome/common/chrome_features.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698