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

Side by Side Diff: chrome/browser/prerender/prerender_manager.cc

Issue 2512953002: Prerender: Add FCP histograms to nostate browsertests. (Closed)
Patch Set: Created 4 years, 1 month 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/prerender/prerender_manager.h" 5 #include "chrome/browser/prerender/prerender_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <functional> 10 #include <functional>
(...skipping 597 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 608
609 histograms_->RecordNoStateFirstContentfulPaint(origin, is_no_store, time, 609 histograms_->RecordNoStateFirstContentfulPaint(origin, is_no_store, time,
610 prefetch_age); 610 prefetch_age);
611 611
612 // Loading a prefetched URL resets the revalidation bypass. Remove the url 612 // Loading a prefetched URL resets the revalidation bypass. Remove the url
613 // from the prefetch list for more accurate metrics. 613 // from the prefetch list for more accurate metrics.
614 prefetches_.erase( 614 prefetches_.erase(
615 std::remove_if(prefetches_.begin(), prefetches_.end(), 615 std::remove_if(prefetches_.begin(), prefetches_.end(),
616 [url](const NavigationRecord& r) { return r.url == url; }), 616 [url](const NavigationRecord& r) { return r.url == url; }),
617 prefetches_.end()); 617 prefetches_.end());
618
619 for (auto& observer : observers_) {
620 observer->OnFirstContentfulPaint();
pasko 2016/11/18 15:56:56 can we notify observers just after recording histo
mattcary 2016/11/18 16:13:27 SGTM. I moved it to the end of the function for a
621 }
618 } 622 }
619 623
620 void PrerenderManager::RecordPerceivedFirstContentfulPaint( 624 void PrerenderManager::RecordPerceivedFirstContentfulPaint(
621 content::WebContents* web_contents, 625 content::WebContents* web_contents,
622 base::TimeDelta first_contentful_paint) { 626 base::TimeDelta first_contentful_paint) {
623 for (auto& observer : observers_) {
624 observer->OnFirstContentfulPaint();
625 }
626
627 PrerenderTabHelper* tab_helper = 627 PrerenderTabHelper* tab_helper =
628 PrerenderTabHelper::FromWebContents(web_contents); 628 PrerenderTabHelper::FromWebContents(web_contents);
629 DCHECK(tab_helper); 629 DCHECK(tab_helper);
630 630
631 base::TimeDelta perceived_delta; 631 base::TimeDelta perceived_delta;
632 if (tab_helper->LoadToPerceivedDelta(&perceived_delta)) { 632 if (tab_helper->LoadToPerceivedDelta(&perceived_delta)) {
633 histograms_->RecordPerceivedFirstContentfulPaintTime( 633 histograms_->RecordPerceivedFirstContentfulPaintTime(
634 tab_helper->origin(), first_contentful_paint - perceived_delta); 634 tab_helper->origin(), first_contentful_paint - perceived_delta);
635 histograms_->RecordPerceivedFirstContentfulPaintStatus(tab_helper->origin(), 635 histograms_->RecordPerceivedFirstContentfulPaintStatus(tab_helper->origin(),
636 true); 636 true);
637 } else { 637 } else {
638 histograms_->RecordPerceivedFirstContentfulPaintStatus(tab_helper->origin(), 638 histograms_->RecordPerceivedFirstContentfulPaintStatus(tab_helper->origin(),
639 false); 639 false);
640 } 640 }
641
642 for (auto& observer : observers_) {
pasko 2016/11/18 15:56:56 this moved too, does anything depend on firing it
mattcary 2016/11/18 16:13:27 I moved this to be consistent with the other FCP (
643 observer->OnFirstContentfulPaint();
644 }
641 } 645 }
642 646
643 // static 647 // static
644 PrerenderManager::PrerenderManagerMode PrerenderManager::GetMode() { 648 PrerenderManager::PrerenderManagerMode PrerenderManager::GetMode() {
645 return mode_; 649 return mode_;
646 } 650 }
647 651
648 // static 652 // static
649 void PrerenderManager::SetMode(PrerenderManagerMode mode) { 653 void PrerenderManager::SetMode(PrerenderManagerMode mode) {
650 mode_ = mode; 654 mode_ = mode;
(...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after
1426 DCHECK_EQ(1u, erased); 1430 DCHECK_EQ(1u, erased);
1427 } 1431 }
1428 1432
1429 void PrerenderManager::SetPrerenderContentsFactoryForTest( 1433 void PrerenderManager::SetPrerenderContentsFactoryForTest(
1430 PrerenderContents::Factory* prerender_contents_factory) { 1434 PrerenderContents::Factory* prerender_contents_factory) {
1431 DCHECK_CURRENTLY_ON(BrowserThread::UI); 1435 DCHECK_CURRENTLY_ON(BrowserThread::UI);
1432 prerender_contents_factory_.reset(prerender_contents_factory); 1436 prerender_contents_factory_.reset(prerender_contents_factory);
1433 } 1437 }
1434 1438
1435 } // namespace prerender 1439 } // namespace prerender
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698