Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |