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

Unified Diff: chrome/browser/page_load_metrics/metrics_web_contents_observer.cc

Issue 2894973002: Provide WebContents::CreateParams to tab helpers. (Closed)
Patch Set: rebase Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
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 072f1b510545a10a919d715471a2208a1e9ab919..985c1544665ae29755dd2704cf26cd437747af83 100644
--- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
+++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
@@ -18,6 +18,7 @@
#include "chrome/browser/page_load_metrics/page_load_metrics_update_dispatcher.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"
@@ -69,24 +70,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;
+ 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));
}

Powered by Google App Engine
This is Rietveld 408576698