Commit dc94ee48 authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Add navigation restart penalty and lite page redirect bool to UKM

Adds UKM metrics about the Lite Page Redirect preview including a bool
if it was committed and what navigation restart penalty it incurred.

Bug: 917491
Change-Id: I6db29a49b2ec8d0ac8127209dcf2a5925d325f7a
Reviewed-on: https://chromium-review.googlesource.com/c/1394792Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Reviewed-by: default avatarSteven Holte <holte@chromium.org>
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619813}
parent ba65d322
...@@ -56,6 +56,10 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle, ...@@ -56,6 +56,10 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle,
previews::PreviewsType::LITE_PAGE) { previews::PreviewsType::LITE_PAGE) {
lite_page_seen_ = true; lite_page_seen_ = true;
} }
if (previews_state && previews::GetMainFramePreviewsType(previews_state) ==
previews::PreviewsType::LITE_PAGE_REDIRECT) {
lite_page_redirect_seen_ = true;
}
if (previews_state && previews::GetMainFramePreviewsType(previews_state) == if (previews_state && previews::GetMainFramePreviewsType(previews_state) ==
previews::PreviewsType::NOSCRIPT) { previews::PreviewsType::NOSCRIPT) {
noscript_seen_ = true; noscript_seen_ = true;
...@@ -68,6 +72,11 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle, ...@@ -68,6 +72,11 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle,
previews_user_data->cache_control_no_transform_directive()) { previews_user_data->cache_control_no_transform_directive()) {
origin_opt_out_occurred_ = true; origin_opt_out_occurred_ = true;
} }
if (previews_user_data && previews_user_data->server_lite_page_info()) {
navigation_restart_penalty_ =
navigation_handle->NavigationStart() -
previews_user_data->server_lite_page_info()->original_navigation_start;
}
return CONTINUE_OBSERVING; return CONTINUE_OBSERVING;
} }
...@@ -121,9 +130,13 @@ void PreviewsUKMObserver::RecordPreviewsTypes( ...@@ -121,9 +130,13 @@ void PreviewsUKMObserver::RecordPreviewsTypes(
page_load_metrics::PageEndReason::PAGE_END_REASON_COUNT); page_load_metrics::PageEndReason::PAGE_END_REASON_COUNT);
// Only record previews types when they are active. // Only record previews types when they are active.
// |navigation_restart_penalty_| is included here because a Lite Page Redirect
// preview can be attempted and not commit. This incurs the penalty but may
// also cause no preview to be committed.
if (!server_lofi_seen_ && !client_lofi_seen_ && !lite_page_seen_ && if (!server_lofi_seen_ && !client_lofi_seen_ && !lite_page_seen_ &&
!noscript_seen_ && !resource_loading_hints_seen_ && !noscript_seen_ && !resource_loading_hints_seen_ &&
!origin_opt_out_occurred_ && !save_data_enabled_) { !origin_opt_out_occurred_ && !save_data_enabled_ &&
!lite_page_redirect_seen_ && !navigation_restart_penalty_.has_value()) {
return; return;
} }
...@@ -134,6 +147,8 @@ void PreviewsUKMObserver::RecordPreviewsTypes( ...@@ -134,6 +147,8 @@ void PreviewsUKMObserver::RecordPreviewsTypes(
builder.Setclient_lofi(1); builder.Setclient_lofi(1);
if (lite_page_seen_) if (lite_page_seen_)
builder.Setlite_page(1); builder.Setlite_page(1);
if (lite_page_redirect_seen_)
builder.Setlite_page_redirect(1);
if (noscript_seen_) if (noscript_seen_)
builder.Setnoscript(1); builder.Setnoscript(1);
if (resource_loading_hints_seen_) if (resource_loading_hints_seen_)
...@@ -144,6 +159,10 @@ void PreviewsUKMObserver::RecordPreviewsTypes( ...@@ -144,6 +159,10 @@ void PreviewsUKMObserver::RecordPreviewsTypes(
builder.Setorigin_opt_out(1); builder.Setorigin_opt_out(1);
if (save_data_enabled_) if (save_data_enabled_)
builder.Setsave_data_enabled(1); builder.Setsave_data_enabled(1);
if (navigation_restart_penalty_.has_value()) {
builder.Setnavigation_restart_penalty(
navigation_restart_penalty_->InMilliseconds());
}
builder.Record(ukm::UkmRecorder::Get()); builder.Record(ukm::UkmRecorder::Get());
} }
......
...@@ -6,7 +6,9 @@ ...@@ -6,7 +6,9 @@
#define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_PREVIEWS_UKM_OBSERVER_H_ #define CHROME_BROWSER_PAGE_LOAD_METRICS_OBSERVERS_PREVIEWS_UKM_OBSERVER_H_
#include "base/macros.h" #include "base/macros.h"
#include "base/optional.h"
#include "base/sequence_checker.h" #include "base/sequence_checker.h"
#include "base/time/time.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_observer.h" #include "chrome/browser/page_load_metrics/page_load_metrics_observer.h"
#include "components/previews/core/previews_experiments.h" #include "components/previews/core/previews_experiments.h"
...@@ -56,11 +58,13 @@ class PreviewsUKMObserver : public page_load_metrics::PageLoadMetricsObserver { ...@@ -56,11 +58,13 @@ class PreviewsUKMObserver : public page_load_metrics::PageLoadMetricsObserver {
bool server_lofi_seen_ = false; bool server_lofi_seen_ = false;
bool client_lofi_seen_ = false; bool client_lofi_seen_ = false;
bool lite_page_seen_ = false; bool lite_page_seen_ = false;
bool lite_page_redirect_seen_ = false;
bool noscript_seen_ = false; bool noscript_seen_ = false;
bool resource_loading_hints_seen_ = false; bool resource_loading_hints_seen_ = false;
bool opt_out_occurred_ = false; bool opt_out_occurred_ = false;
bool origin_opt_out_occurred_ = false; bool origin_opt_out_occurred_ = false;
bool save_data_enabled_ = false; bool save_data_enabled_ = false;
base::Optional<base::TimeDelta> navigation_restart_penalty_ = base::nullopt;
SEQUENCE_CHECKER(sequence_checker_); SEQUENCE_CHECKER(sequence_checker_);
......
...@@ -4034,6 +4034,18 @@ be describing additional metrics about the same event. ...@@ -4034,6 +4034,18 @@ be describing additional metrics about the same event.
Set to 1 when a user is shown a lite page in page load. Set to 1 when a user is shown a lite page in page load.
</summary> </summary>
</metric> </metric>
<metric name="lite_page_redirect">
<summary>
Set to 1 when a user is shown a lite page redirect in page load.
</summary>
</metric>
<metric name="navigation_restart_penalty">
<summary>
Set to the number of milliseconds spent restarting navigations when a Lite
Page Redirect preview is attempted, whether or not it is committed, during
the page load.
</summary>
</metric>
<metric name="noscript"> <metric name="noscript">
<summary> <summary>
Set to 1 when a user is shown a NoScript preview on a page load. Set to 1 when a user is shown a NoScript preview on a page load.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment