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

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: one last little error condition 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;
Alexei Svitkine (slow) 2015/10/16 16:48:54 Nit: Init these in the ctor instead. The ctor wil
Charlie Harrison 2015/10/16 17:29:55 Great! Done.
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_;
125
126 DISALLOW_COPY_AND_ASSIGN(MetricsWebContentsObserverTest);
68 }; 127 };
69 128
70 TEST_F(MetricsWebContentsObserverTest, NoMetrics) { 129 TEST_F(MetricsWebContentsObserverTest, NoMetrics) {
71 AssertNoHistogramsLogged(); 130 AssertNoHistogramsLogged();
72 } 131 }
73 132
74 TEST_F(MetricsWebContentsObserverTest, NotInMainFrame) { 133 TEST_F(MetricsWebContentsObserverTest, NotInMainFrame) {
75 base::TimeDelta first_layout = base::TimeDelta::FromMilliseconds(1); 134 base::TimeDelta first_layout = base::TimeDelta::FromMilliseconds(1);
76 135
77 PageLoadTiming timing; 136 PageLoadTiming timing;
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 content::WebContentsTester* web_contents_tester = 423 content::WebContentsTester* web_contents_tester =
365 content::WebContentsTester::For(web_contents()); 424 content::WebContentsTester::For(web_contents());
366 425
367 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl)); 426 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
368 content::RenderFrameHostTester* rfh_tester = 427 content::RenderFrameHostTester* rfh_tester =
369 content::RenderFrameHostTester::For(main_rfh()); 428 content::RenderFrameHostTester::For(main_rfh());
370 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), 429 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl),
371 net::ERR_TIMED_OUT); 430 net::ERR_TIMED_OUT);
372 rfh_tester->SimulateNavigationStop(); 431 rfh_tester->SimulateNavigationStop();
373 432
374 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3); 433 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_FAILED_NON_ABORT, 1, false);
375 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 434 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_ABORTED, 0, false);
376 PAGE_LOAD_STARTED, 1); 435 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 } 436 }
384 437
385 TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoad) { 438 TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoad) {
386 content::WebContentsTester* web_contents_tester = 439 content::WebContentsTester* web_contents_tester =
387 content::WebContentsTester::For(web_contents()); 440 content::WebContentsTester::For(web_contents());
388 441
389 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl)); 442 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
390 content::RenderFrameHostTester* rfh_tester = 443 content::RenderFrameHostTester* rfh_tester =
391 content::RenderFrameHostTester::For(main_rfh()); 444 content::RenderFrameHostTester::For(main_rfh());
392 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), net::ERR_ABORTED); 445 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), net::ERR_ABORTED);
393 rfh_tester->SimulateNavigationStop(); 446 rfh_tester->SimulateNavigationStop();
394 447
395 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 4); 448 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_FAILED_NON_ABORT, 0, false);
396 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 449 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_ABORTED, 1, false);
397 PAGE_LOAD_STARTED, 1); 450 CheckTotalEvents();
398 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 451 }
399 PAGE_LOAD_FAILED_BEFORE_COMMIT, 1); 452
400 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 453 TEST_F(MetricsWebContentsObserverTest, AbortProvisionalLoadInBackground) {
401 PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1); 454 content::WebContentsTester* web_contents_tester =
402 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 455 content::WebContentsTester::For(web_contents());
403 PAGE_LOAD_ABORTED_BEFORE_COMMIT, 1); 456
457 observer_->WasHidden();
458 web_contents_tester->StartNavigation(GURL(kDefaultTestUrl));
459 content::RenderFrameHostTester* rfh_tester =
460 content::RenderFrameHostTester::For(main_rfh());
461 rfh_tester->SimulateNavigationError(GURL(kDefaultTestUrl), net::ERR_ABORTED);
462 rfh_tester->SimulateNavigationStop();
463
464 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_FAILED_NON_ABORT, 0, true);
465 CheckProvisionalEvent(PROVISIONAL_LOAD_ERR_ABORTED, 1, true);
466 CheckTotalEvents();
467 }
468
469 TEST_F(MetricsWebContentsObserverTest, DontLogIrrelevantNavigation) {
470 PageLoadTiming timing;
471 timing.navigation_start = base::Time::FromDoubleT(10);
472
473 content::WebContentsTester* web_contents_tester =
474 content::WebContentsTester::For(web_contents());
475
476 GURL about_blank_url = GURL("about:blank");
477 web_contents_tester->NavigateAndCommit(about_blank_url);
478
479 observer_->OnMessageReceived(
480 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
481 main_rfh());
482
483 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
484
485 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
486 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 1, false);
487 CheckErrorEvent(ERR_IPC_FROM_BAD_URL_SCHEME, 1);
488 CheckErrorEvent(ERR_IPC_WITH_NO_COMMITTED_LOAD, 1);
489 CheckTotalEvents();
490 }
491
492 TEST_F(MetricsWebContentsObserverTest, NotInMainError) {
493 PageLoadTiming timing;
494 timing.navigation_start = base::Time::FromDoubleT(1);
495 timing.first_layout = base::TimeDelta::FromMilliseconds(1);
496
497 content::WebContentsTester* web_contents_tester =
498 content::WebContentsTester::For(web_contents());
499 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
500
501 content::RenderFrameHostTester* rfh_tester =
502 content::RenderFrameHostTester::For(main_rfh());
503 content::RenderFrameHost* subframe = rfh_tester->AppendChild("subframe");
504
505 content::RenderFrameHostTester* subframe_tester =
506 content::RenderFrameHostTester::For(subframe);
507 subframe_tester->SimulateNavigationStart(GURL(kDefaultTestUrl2));
508 subframe_tester->SimulateNavigationCommit(GURL(kDefaultTestUrl2));
509 observer_->OnMessageReceived(
510 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
511 subframe);
512 CheckErrorEvent(ERR_IPC_FROM_WRONG_FRAME, 1);
404 } 513 }
405 514
406 TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) { 515 TEST_F(MetricsWebContentsObserverTest, AbortCommittedLoadBeforeFirstLayout) {
407 PageLoadTiming timing; 516 PageLoadTiming timing;
408 timing.navigation_start = base::Time::FromDoubleT(10); 517 timing.navigation_start = base::Time::FromDoubleT(10);
409 518
410 content::WebContentsTester* web_contents_tester = 519 content::WebContentsTester* web_contents_tester =
411 content::WebContentsTester::For(web_contents()); 520 content::WebContentsTester::For(web_contents());
412 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 521 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
413 522
414 observer_->OnMessageReceived( 523 observer_->OnMessageReceived(
415 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 524 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
416 main_rfh()); 525 main_rfh());
417 // Navigate again to force histogram logging. 526 // Navigate again to force histogram logging.
418 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); 527 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
419 528
420 // 3 events: 2 starts and one abort before first layout. 529 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
421 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3); 530 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 2, false);
422 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 531 CheckCommittedEvent(COMMITTED_LOAD_FAILED_BEFORE_FIRST_LAYOUT, 1, false);
423 PAGE_LOAD_STARTED, 2); 532 CheckTotalEvents();
424 histogram_tester_.ExpectBucketCount(
425 kHistogramNameEvents, PAGE_LOAD_ABORTED_BEFORE_FIRST_LAYOUT, 1);
426 } 533 }
427 534
428 TEST_F(MetricsWebContentsObserverTest, 535 TEST_F(MetricsWebContentsObserverTest, SuccessfulFirstLayoutInForegroundEvent) {
429 SuccessfulFirstLayoutInForeGroundEvent) {
430 PageLoadTiming timing; 536 PageLoadTiming timing;
431 timing.navigation_start = base::Time::FromDoubleT(10); 537 timing.navigation_start = base::Time::FromDoubleT(10);
432 timing.first_layout = base::TimeDelta::FromMilliseconds(100); 538 timing.first_layout = base::TimeDelta::FromMilliseconds(100);
433 539
434 content::WebContentsTester* web_contents_tester = 540 content::WebContentsTester* web_contents_tester =
435 content::WebContentsTester::For(web_contents()); 541 content::WebContentsTester::For(web_contents());
436 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl)); 542 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
437 543
438 observer_->OnMessageReceived( 544 observer_->OnMessageReceived(
439 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 545 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
440 main_rfh()); 546 main_rfh());
441 // Navigate again to force histogram logging. 547 // Navigate again to force histogram logging.
442 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); 548 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
443 549
444 // 3 events: 2 starts and one successful first layout. 550 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 2, false);
445 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3); 551 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 2, false);
446 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 552 CheckCommittedEvent(COMMITTED_LOAD_SUCCESSFUL_FIRST_LAYOUT, 1, false);
447 PAGE_LOAD_STARTED, 2); 553 CheckTotalEvents();
448 histogram_tester_.ExpectBucketCount(
449 kHistogramNameEvents, PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_FOREGROUND, 1);
450 } 554 }
451 555
452 TEST_F(MetricsWebContentsObserverTest, 556 TEST_F(MetricsWebContentsObserverTest,
453 SuccessfulFirstLayoutInBackgroundEvent) { 557 SuccessfulFirstLayoutInBackgroundEvent) {
454 PageLoadTiming timing; 558 PageLoadTiming timing;
455 timing.navigation_start = base::Time::FromDoubleT( 559 timing.navigation_start = base::Time::FromDoubleT(
456 (base::TimeTicks::Now() - base::TimeTicks::UnixEpoch()).InSecondsF() - 1); 560 (base::TimeTicks::Now() - base::TimeTicks::UnixEpoch()).InSecondsF() - 1);
457 561
458 timing.first_layout = base::TimeDelta::FromSeconds(30); 562 timing.first_layout = base::TimeDelta::FromSeconds(30);
459 563
460 content::WebContentsTester* web_contents_tester = 564 content::WebContentsTester* web_contents_tester =
461 content::WebContentsTester::For(web_contents()); 565 content::WebContentsTester::For(web_contents());
462 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
463 // Background the tab. 566 // Background the tab.
464 observer_->WasHidden(); 567 observer_->WasHidden();
568 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
465 569
466 observer_->OnMessageReceived( 570 observer_->OnMessageReceived(
467 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing), 571 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
468 main_rfh()); 572 main_rfh());
469 573
470 observer_->WasShown(); 574 observer_->WasShown();
471 // Navigate again to force histogram logging. 575 // Navigate again to force histogram logging.
472 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2)); 576 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl2));
473 577
474 // 3 events: 2 starts and one successful first layout. 578 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, true);
475 histogram_tester_.ExpectTotalCount(kHistogramNameEvents, 3); 579 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, false);
476 histogram_tester_.ExpectBucketCount(kHistogramNameEvents, 580 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 1, true);
477 PAGE_LOAD_STARTED, 2); 581 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 1, false);
478 histogram_tester_.ExpectBucketCount( 582 CheckCommittedEvent(COMMITTED_LOAD_SUCCESSFUL_FIRST_LAYOUT, 1, true);
479 kHistogramNameEvents, PAGE_LOAD_SUCCESSFUL_FIRST_LAYOUT_BACKGROUND, 1); 583 CheckTotalEvents();
480 } 584 }
585
586 TEST_F(MetricsWebContentsObserverTest, BadIPC) {
587 PageLoadTiming timing;
588 timing.navigation_start = base::Time::FromDoubleT(10);
589 PageLoadTiming timing2;
590 timing2.navigation_start = base::Time::FromDoubleT(100);
591
592 content::WebContentsTester* web_contents_tester =
593 content::WebContentsTester::For(web_contents());
594 web_contents_tester->NavigateAndCommit(GURL(kDefaultTestUrl));
595
596 observer_->OnMessageReceived(
597 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing),
598 main_rfh());
599 observer_->OnMessageReceived(
600 PageLoadMetricsMsg_TimingUpdated(observer_->routing_id(), timing2),
601 main_rfh());
602
603 CheckProvisionalEvent(PROVISIONAL_LOAD_COMMITTED, 1, false);
604 CheckCommittedEvent(COMMITTED_LOAD_STARTED, 1, false);
605 CheckErrorEvent(ERR_BAD_TIMING_IPC, 1);
606 CheckTotalEvents();
607 }
608
481 } // namespace page_load_metrics 609 } // namespace page_load_metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698