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: components/page_load_metrics/browser/metrics_web_contents_observer_unittest.cc

Issue 1384213002: Page Abort Events for relevant navigations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Comments/name changes. Don't track non html mimes Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h" 5 #include "components/page_load_metrics/browser/metrics_web_contents_observer.h"
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/process/kill.h" 8 #include "base/process/kill.h"
9 #include "base/test/histogram_tester.h" 9 #include "base/test/histogram_tester.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 14 matching lines...) Expand all
25 const char kHistogramNameFirstLayout[] = 25 const char kHistogramNameFirstLayout[] =
26 "PageLoad.Timing2.NavigationToFirstLayout"; 26 "PageLoad.Timing2.NavigationToFirstLayout";
27 const char kHistogramNameFirstTextPaint[] = 27 const char kHistogramNameFirstTextPaint[] =
28 "PageLoad.Timing2.NavigationToFirstTextPaint"; 28 "PageLoad.Timing2.NavigationToFirstTextPaint";
29 const char kHistogramNameDomContent[] = 29 const char kHistogramNameDomContent[] =
30 "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired"; 30 "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired";
31 const char kHistogramNameLoad[] = 31 const char kHistogramNameLoad[] =
32 "PageLoad.Timing2.NavigationToLoadEventFired"; 32 "PageLoad.Timing2.NavigationToLoadEventFired";
33 33
34 const char kBGHistogramNameFirstLayout[] = 34 const char kBGHistogramNameFirstLayout[] =
35 "PageLoad.Timing2.NavigationToFirstLayout.BG"; 35 "PageLoad.Timing2.NavigationToFirstLayout.Background";
36 const char kBGHistogramNameFirstTextPaint[] = 36 const char kBGHistogramNameFirstTextPaint[] =
37 "PageLoad.Timing2.NavigationToFirstTextPaint.BG"; 37 "PageLoad.Timing2.NavigationToFirstTextPaint.Background";
38 const char kBGHistogramNameDomContent[] = 38 const char kBGHistogramNameDomContent[] =
39 "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired.BG"; 39 "PageLoad.Timing2.NavigationToDOMContentLoadedEventFired.Background";
40 const char kBGHistogramNameLoad[] = 40 const char kBGHistogramNameLoad[] =
41 "PageLoad.Timing2.NavigationToLoadEventFired.BG"; 41 "PageLoad.Timing2.NavigationToLoadEventFired.Background";
42 42
43 const char kHistogramNameEvents[] = "PageLoad.EventCounts"; 43 const char kProvisionalEvents[] = "PageLoad.Events.Provisional";
44 const char kCommittedEvents[] = "PageLoad.Events.Committed";
45 const char kBGProvisionalEvents[] = "PageLoad.Events.Provisional.Background";
46 const char kBGCommittedEvents[] = "PageLoad.Events.Committed.Background";
47
48 const char kErrorEvents[] = "PageLoad.Events.InternalError";
44 49
45 } // namespace 50 } // namespace
46 51
47 class MetricsWebContentsObserverTest 52 class MetricsWebContentsObserverTest
48 : public content::RenderViewHostTestHarness { 53 : public content::RenderViewHostTestHarness {
49 public: 54 public:
50 MetricsWebContentsObserverTest() {} 55 MetricsWebContentsObserverTest() {}
51 56
52 void SetUp() override { 57 void SetUp() override {
53 RenderViewHostTestHarness::SetUp(); 58 RenderViewHostTestHarness::SetUp();
54 observer_ = make_scoped_ptr(new MetricsWebContentsObserver(web_contents())); 59 observer_ = make_scoped_ptr(new MetricsWebContentsObserver(web_contents()));
55 observer_->WasShown(); 60 observer_->WasShown();
61 num_provisional_events_ = 0;
62 num_committed_events_ = 0;
63 num_provisional_events_bg_ = 0;
64 num_committed_events_bg_ = 0;
65 num_errors_ = 0;
56 } 66 }
57 67
58 void AssertNoHistogramsLogged() { 68 void AssertNoHistogramsLogged() {
59 histogram_tester_.ExpectTotalCount(kHistogramNameDomContent, 0); 69 histogram_tester_.ExpectTotalCount(kHistogramNameDomContent, 0);
60 histogram_tester_.ExpectTotalCount(kHistogramNameLoad, 0); 70 histogram_tester_.ExpectTotalCount(kHistogramNameLoad, 0);
61 histogram_tester_.ExpectTotalCount(kHistogramNameFirstLayout, 0); 71 histogram_tester_.ExpectTotalCount(kHistogramNameFirstLayout, 0);
62 histogram_tester_.ExpectTotalCount(kHistogramNameFirstTextPaint, 0); 72 histogram_tester_.ExpectTotalCount(kHistogramNameFirstTextPaint, 0);
63 } 73 }
64 74
75 void CheckProvisionalEvent(ProvisionalLoadEvent event,
76 int count,
77 bool background) {
78 if (background) {
79 histogram_tester_.ExpectBucketCount(kBGProvisionalEvents, event, count);
80 num_provisional_events_bg_ += count;
81 } else {
82 histogram_tester_.ExpectBucketCount(kProvisionalEvents, event, count);
83 num_provisional_events_ += count;
84 }
85 }
86
87 void CheckCommittedEvent(CommittedLoadEvent event,
88 int count,
89 bool background) {
90 if (background) {
91 histogram_tester_.ExpectBucketCount(kBGCommittedEvents, event, count);
92 num_committed_events_bg_ += count;
93 } else {
94 histogram_tester_.ExpectBucketCount(kCommittedEvents, event, count);
95 num_committed_events_ += count;
96 }
97 }
98
99 void CheckErrorEvent(InternalErrorLoadEvent error, int count) {
100 histogram_tester_.ExpectBucketCount(kErrorEvents, error, count);
101 num_errors_ += count;
102 }
103
104 void CheckTotalEvents() {
105 histogram_tester_.ExpectTotalCount(kProvisionalEvents,
106 num_provisional_events_);
107 histogram_tester_.ExpectTotalCount(kCommittedEvents, num_committed_events_);
108 histogram_tester_.ExpectTotalCount(kBGProvisionalEvents,
109 num_provisional_events_bg_);
110 histogram_tester_.ExpectTotalCount(kBGCommittedEvents,
111 num_committed_events_bg_);
112 histogram_tester_.ExpectTotalCount(kErrorEvents, num_errors_);
113 }
114
65 protected: 115 protected:
66 base::HistogramTester histogram_tester_; 116 base::HistogramTester histogram_tester_;
67 scoped_ptr<MetricsWebContentsObserver> observer_; 117 scoped_ptr<MetricsWebContentsObserver> observer_;
118
119 private:
120 int num_provisional_events_;
121 int num_provisional_events_bg_;
122 int num_committed_events_;
123 int num_committed_events_bg_;
124 int num_errors_;
68 }; 125 };
Alexei Svitkine (slow) 2015/10/16 15:43:15 Nit: DISALLOW_COPY_AND_ASSIGN()
Charlie Harrison 2015/10/16 16:05:06 Done.
69 126
70 TEST_F(MetricsWebContentsObserverTest, NoMetrics) { 127 TEST_F(MetricsWebContentsObserverTest, NoMetrics) {
71 AssertNoHistogramsLogged(); 128 AssertNoHistogramsLogged();
72 } 129 }
73 130
74 TEST_F(MetricsWebContentsObserverTest, NotInMainFrame) { 131 TEST_F(MetricsWebContentsObserverTest, NotInMainFrame) {
75 base::TimeDelta first_layout = base::TimeDelta::FromMilliseconds(1); 132 base::TimeDelta first_layout = base::TimeDelta::FromMilliseconds(1);
76 133
77 PageLoadTiming timing; 134 PageLoadTiming timing;
78 timing.navigation_start = base::Time::FromDoubleT(1); 135 timing.navigation_start = base::Time::FromDoubleT(1);
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 content::WebContentsTester* web_contents_tester = 421 content::WebContentsTester* web_contents_tester =
365 content::WebContentsTester::For(web_contents()); 422 content::WebContentsTester::For(web_contents());
366 423
367 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl)); 424 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
368 content::RenderFrameHostTester* rfh_tester = 425 content::RenderFrameHostTester* rfh_tester =
369 content::RenderFrameHostTester::For(main_rfh()); 426 content::RenderFrameHostTester::For(main_rfh());
370 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), 427 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl),
371 net::ERR_TIMED_OUT); 428 net::ERR_TIMED_OUT);
372 rfh_tester->SimulateNavigationStop(); 429 rfh_tester->SimulateNavigationStop();
373 430
374 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3); 431 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_FAILED_NON_ABORT, 1, false);
375 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 432 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_ABORTED, 0, false);
376 PAGE_LOAD_STARTED, 1); 433 CheckTotalEvents();
377 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
378 PAGE_LOAD_FAILED_BEFORE_COMMIT, 1);
379 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
380 PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
381 histogram_tester_.ExpectBucketCount(kHistogramNameEvents,
382 PAGE_LOAD_ABORTED_BEFORE_COMMIT, 0);
383 } 434 }
384 435
385 TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoad) { 436 TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoad) {
386 content::WebContentsTester* web_contents_tester = 437 content::WebContentsTester* web_contents_tester =
387 content::WebContentsTester::For(web_contents()); 438 content::WebContentsTester::For(web_contents());
388 439
389 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl)); 440 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
390 content::RenderFrameHostTester* rfh_tester = 441 content::RenderFrameHostTester* rfh_tester =
391 content::RenderFrameHostTester::For(main_rfh()); 442 content::RenderFrameHostTester::For(main_rfh());
392 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), net::ERR_ABORTED); 443 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), net::ERR_ABORTED);
393 rfh_tester->SimulateNavigationStop(); 444 rfh_tester->SimulateNavigationStop();
394 445
395 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 4); 446 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_FAILED_NON_ABORT, 0, false);
396 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 447 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_ABORTED, 1, false);
397 PAGE_LOAD_STARTED, 1); 448 CheckTotalEvents();
398 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 449 }
399 PAGE_LOAD_FAILED_BEFORE_COMMIT, 1); 450
400 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 451 TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoadInBackground) {
401 PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1); 452 content::WebContentsTester* web_contents_tester =
402 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 453 content::WebContentsTester::For(web_contents());
403 PAGE_LOAD_ABORTED_BEFORE_COMMIT, 1); 454
455 observer_->WasHidden();
456 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
457 content::RenderFrameHostTester* rfh_tester =
458 content::RenderFrameHostTester::For(main_rfh());
459 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), net::ERR_ABORTED);
460 rfh_tester->SimulateNavigationStop();
461
462 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_FAILED_NON_ABORT, 0, true);
463 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_ABORTED, 1, true);
464 CheckTotalEvents();
465 }
466
467 TEST_F(MetricsWebContentsObserverTest, DontLogIrrelevantNavigation) {
468 PageLoadTiming timing;
469 timing.navigation_start = base::Time::FromDoubleT(10);
470
471 content::WebContentsTester* web_contents_tester =
472 content::WebContentsTester::For(web_contents());
473
474 GURL about_blank_url = GURL("about:blank");
475 web_contents_tester->NavigateAndCommit(about_blank_url);
476
477 observer_->OnMessageReceived(
478 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
479 main_rfh());
480
481 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
482
483 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
484 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 1, false);
485 CheckErrorEvent(ERR_IPC_FROM_BAD_URL_SCHEME, 1);
486 CheckErrorEvent(ERR_IPC_WITH_NO_COMMITTED_LOAD, 1);
487 CheckTotalEvents();
488 }
489
490 TEST_F(MetricsWebContentsObserverTest, NotInMainError) {
491 PageLoadTiming timing;
492 timing.navigation_start = base::Time::FromDoubleT(1);
493 timing.first_layout = base::TimeDelta::FromMilliseconds(1);
494
495 content::WebContentsTester* web_contents_tester =
496 content::WebContentsTester::For(web_contents());
497 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
498
499 content::RenderFrameHostTester* rfh_tester =
500 content::RenderFrameHostTester::For(main_rfh());
501 content::RenderFrameHost* subframe = rfh_tester->AppendChild("subframe");
502
503 content::RenderFrameHostTester* subframe_tester =
504 content::RenderFrameHostTester::For(subframe);
505 subframe_tester->SimulateNavigationStart(GURL(kDefaultTestUrl2));
506 subframe_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl2));
507 observer_->OnMessageReceived(
508 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
509 subframe);
510 CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1);
404 } 511 }
405 512
406 TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) { 513 TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) {
407 PageLoadTiming timing; 514 PageLoadTiming timing;
408 timing.navigation_start = base::Time::FromDoubleT(10); 515 timing.navigation_start = base::Time::FromDoubleT(10);
409 516
410 content::WebContentsTester* web_contents_tester = 517 content::WebContentsTester* web_contents_tester =
411 content::WebContentsTester::For(web_contents()); 518 content::WebContentsTester::For(web_contents());
412 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 519 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
413 520
414 observer_->OnMessageReceived( 521 observer_->OnMessageReceived(
415 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 522 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
416 main_rfh()); 523 main_rfh());
417 // Navigate again to force histogram logging. 524 // Navigate again to force histogram logging.
418 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); 525 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
419 526
420 // 3 events: 2 starts and one abort before first layout. 527 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
421 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3); 528 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 2, false);
422 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 529 CheckCommittedEvent(COMMITTED_LOAD_FAILED_BEFORE_FIRST_LAYOUT, 1, false);
423 PAGE_LOAD_STARTED, 2); 530 CheckTotalEvents();
424 histogram_tester_.ExpectBucketCount(
425 kHistogramNameEvents, PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
426 } 531 }
427 532
428 TEST_F(MetricsWebContentsObserverTest, 533 TEST_F(MetricsWebContentsObserverTest, SuccessfulFirstLayoutInForegroundEvent) {
429 SuccessfulFirstLayoutInForeGroundEvent) {
430 PageLoadTiming timing; 534 PageLoadTiming timing;
431 timing.navigation_start = base::Time::FromDoubleT(10); 535 timing.navigation_start = base::Time::FromDoubleT(10);
432 timing.first_layout = base::TimeDelta::FromMilliseconds(100); 536 timing.first_layout = base::TimeDelta::FromMilliseconds(100);
433 537
434 content::WebContentsTester* web_contents_tester = 538 content::WebContentsTester* web_contents_tester =
435 content::WebContentsTester::For(web_contents()); 539 content::WebContentsTester::For(web_contents());
436 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 540 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
437 541
438 observer_->OnMessageReceived( 542 observer_->OnMessageReceived(
439 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 543 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
440 main_rfh()); 544 main_rfh());
441 // Navigate again to force histogram logging. 545 // Navigate again to force histogram logging.
442 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); 546 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
443 547
444 // 3 events: 2 starts and one successful first layout. 548 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
445 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3); 549 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 2, false);
446 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 550 CheckCommittedEvent(COMMITTED_LOAD_SUCCESSFUL_FIRST_LAYOUT, 1, false);
447 PAGE_LOAD_STARTED, 2); 551 CheckTotalEvents();
448 histogram_tester_.ExpectBucketCount(
449 kHistogramNameEvents, PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_FOREGROUND, 1);
450 } 552 }
451 553
452 TEST_F(MetricsWebContentsObserverTest, 554 TEST_F(MetricsWebContentsObserverTest,
453 SuccessfulFirstLayoutInBackgroundEvent) { 555 SuccessfulFirstLayoutInBackgroundEvent) {
454 PageLoadTiming timing; 556 PageLoadTiming timing;
455 timing.navigation_start = base::Time::FromDoubleT( 557 timing.navigation_start = base::Time::FromDoubleT(
456 (base::TimeTicks::Now() - base::TimeTicks::UnixEpoch()).InSecondsF() - 1); 558 (base::TimeTicks::Now() - base::TimeTicks::UnixEpoch()).InSecondsF() - 1);
457 559
458 timing.first_layout = base::TimeDelta::FromSeconds(30); 560 timing.first_layout = base::TimeDelta::FromSeconds(30);
459 561
460 content::WebContentsTester* web_contents_tester = 562 content::WebContentsTester* web_contents_tester =
461 content::WebContentsTester::For(web_contents()); 563 content::WebContentsTester::For(web_contents());
462 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
463 // Background the tab. 564 // Background the tab.
464 observer_->WasHidden(); 565 observer_->WasHidden();
566 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
465 567
466 observer_->OnMessageReceived( 568 observer_->OnMessageReceived(
467 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 569 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
468 main_rfh()); 570 main_rfh());
469 571
470 observer_->WasShown(); 572 observer_->WasShown();
471 // Navigate again to force histogram logging. 573 // Navigate again to force histogram logging.
472 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); 574 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
473 575
474 // 3 events: 2 starts and one successful first layout. 576 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, true);
475 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3); 577 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, false);
476 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 578 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 1, true);
477 PAGE_LOAD_STARTED, 2); 579 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 1, false);
478 histogram_tester_.ExpectBucketCount( 580 CheckCommittedEvent(COMMITTED_LOAD_SUCCESSFUL_FIRST_LAYOUT, 1, true);
479 kHistogramNameEvents, PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_BACKGROUND, 1); 581 CheckTotalEvents();
480 } 582 }
583
584 TEST_F(MetricsWebContentsObserverTest, BadIPC) {
585 PageLoadTiming timing;
586 timing.navigation_start = base::Time::FromDoubleT(10);
587 PageLoadTiming timing2;
588 timing2.navigation_start = base::Time::FromDoubleT(100);
589
590 content::WebContentsTester* web_contents_tester =
591 content::WebContentsTester::For(web_contents());
592 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
593
594 observer_->OnMessageReceived(
595 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
596 main_rfh());
597 observer_->OnMessageReceived(
598 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing2),
599 main_rfh());
600
601 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, false);
602 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 1, false);
603 CheckErrorEvent(ERR_BAD_TIMING_IPC, 1);
604 CheckTotalEvents();
605 }
606
481 } // namespace page_load_metrics 607 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698