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

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 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));
}

Powered by Google App Engine
This is Rietveld 408576698