Chromium Code Reviews| Index: chrome/browser/page_load_metrics/metrics_web_contents_observer.cc |
| diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc |
| index 29ce7bc4b0fcdad737f236eba370a5b5a615014b..d059bacb01a21d563cd582d7ec1b9e90f545940f 100644 |
| --- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc |
| +++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc |
| @@ -17,6 +17,7 @@ |
| #include "chrome/browser/page_load_metrics/page_load_metrics_embedder_interface.h" |
| #include "chrome/browser/page_load_metrics/page_load_metrics_util.h" |
| #include "chrome/browser/page_load_metrics/page_load_tracker.h" |
| +#include "chrome/browser/prerender/prerender_contents.h" |
| #include "chrome/common/chrome_features.h" |
| #include "chrome/common/page_load_metrics/page_load_metrics_messages.h" |
| #include "chrome/common/page_load_metrics/page_load_timing.h" |
| @@ -68,24 +69,33 @@ UserInitiatedInfo CreateUserInitiatedInfo( |
| MetricsWebContentsObserver::MetricsWebContentsObserver( |
| content::WebContents* web_contents, |
| + const base::Optional<content::WebContents::CreateParams>& create_params, |
| std::unique_ptr<PageLoadMetricsEmbedderInterface> embedder_interface) |
| : content::WebContentsObserver(web_contents), |
| - in_foreground_(false), |
| + in_foreground_(create_params ? !create_params->initially_hidden : false), |
| embedder_interface_(std::move(embedder_interface)), |
| has_navigated_(false), |
| page_load_metrics_binding_(web_contents, this) { |
| + // Prerender's CreateParams erroneously reports that it is not initially |
| + // hidden, so we manually override visibility state for prerender. |
| + const bool is_prerender = |
| + prerender::PrerenderContents::FromWebContents(web_contents) != nullptr; |
|
Avi (use Gerrit)
2017/05/23 15:38:59
prerender 🙄
Bryan McQuade
2017/05/23 20:29:57
sorry, what are you requesting here? looks like th
Avi (use Gerrit)
2017/05/23 20:49:54
No request from me here.
|
| + if (is_prerender) |
| + in_foreground_ = false; |
| + |
| RegisterInputEventObserver(web_contents->GetRenderViewHost()); |
| } |
| // static |
| MetricsWebContentsObserver* MetricsWebContentsObserver::CreateForWebContents( |
| content::WebContents* web_contents, |
| + const base::Optional<content::WebContents::CreateParams>& create_params, |
| std::unique_ptr<PageLoadMetricsEmbedderInterface> embedder_interface) { |
| DCHECK(web_contents); |
| MetricsWebContentsObserver* metrics = FromWebContents(web_contents); |
| if (!metrics) { |
| - metrics = new MetricsWebContentsObserver(web_contents, |
| + metrics = new MetricsWebContentsObserver(web_contents, create_params, |
| std::move(embedder_interface)); |
| web_contents->SetUserData(UserDataKey(), base::WrapUnique(metrics)); |
| } |