Commit 3558bd74 authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Log Preview Eligibility Reasons in UKM

Only non-ALLOWED values are logged.

Bug: 955472
Change-Id: I7480df4ce7597319fc6cbd18bc23da8e7c46625f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1597688Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Reviewed-by: default avatarDoug Arnett <dougarnett@chromium.org>
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Cr-Commit-Position: refs/heads/master@{#658548}
parent 8ae6ca2b
...@@ -37,6 +37,16 @@ namespace { ...@@ -37,6 +37,16 @@ namespace {
const char kOfflinePreviewsMimeType[] = "multipart/related"; const char kOfflinePreviewsMimeType[] = "multipart/related";
bool ShouldOptionalEligibilityReasonBeRecorded(
base::Optional<previews::PreviewsEligibilityReason> reason) {
if (!reason.has_value())
return false;
// Do not record ALLOWED values since we are only interested in recording
// reasons why a preview was not eligible to be shown.
return reason.value() != previews::PreviewsEligibilityReason::ALLOWED;
}
} // namespace } // namespace
PreviewsUKMObserver::PreviewsUKMObserver() PreviewsUKMObserver::PreviewsUKMObserver()
...@@ -106,16 +116,30 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle, ...@@ -106,16 +116,30 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle,
previews::PreviewsType::RESOURCE_LOADING_HINTS) { previews::PreviewsType::RESOURCE_LOADING_HINTS) {
resource_loading_hints_seen_ = true; resource_loading_hints_seen_ = true;
} }
if (previews_user_data && if (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()) { if (previews_user_data->server_lite_page_info()) {
navigation_restart_penalty_ = navigation_restart_penalty_ =
navigation_handle->NavigationStart() - navigation_handle->NavigationStart() -
previews_user_data->server_lite_page_info()->original_navigation_start; previews_user_data->server_lite_page_info()->original_navigation_start;
} }
lite_page_eligibility_reason_ =
previews_user_data->EligibilityReasonForPreview(
previews::PreviewsType::LITE_PAGE);
lite_page_redirect_eligibility_reason_ =
previews_user_data->EligibilityReasonForPreview(
previews::PreviewsType::LITE_PAGE_REDIRECT);
noscript_eligibility_reason_ =
previews_user_data->EligibilityReasonForPreview(
previews::PreviewsType::NOSCRIPT);
resource_loading_hints_eligibility_reason_ =
previews_user_data->EligibilityReasonForPreview(
previews::PreviewsType::RESOURCE_LOADING_HINTS);
offline_eligibility_reason_ = previews_user_data->EligibilityReasonForPreview(
previews::PreviewsType::OFFLINE);
return CONTINUE_OBSERVING; return CONTINUE_OBSERVING;
} }
...@@ -219,6 +243,30 @@ void PreviewsUKMObserver::RecordPreviewsTypes( ...@@ -219,6 +243,30 @@ void PreviewsUKMObserver::RecordPreviewsTypes(
builder.Setnavigation_restart_penalty( builder.Setnavigation_restart_penalty(
navigation_restart_penalty_->InMilliseconds()); navigation_restart_penalty_->InMilliseconds());
} }
if (ShouldOptionalEligibilityReasonBeRecorded(
lite_page_eligibility_reason_)) {
builder.Setproxy_lite_page_eligibility_reason(
static_cast<int>(lite_page_eligibility_reason_.value()));
}
if (ShouldOptionalEligibilityReasonBeRecorded(
lite_page_redirect_eligibility_reason_)) {
builder.Setlite_page_redirect_eligibility_reason(
static_cast<int>(lite_page_redirect_eligibility_reason_.value()));
}
if (ShouldOptionalEligibilityReasonBeRecorded(noscript_eligibility_reason_)) {
builder.Setnoscript_eligibility_reason(
static_cast<int>(noscript_eligibility_reason_.value()));
}
if (ShouldOptionalEligibilityReasonBeRecorded(
resource_loading_hints_eligibility_reason_)) {
builder.Setresource_loading_hints_eligibility_reason(
static_cast<int>(resource_loading_hints_eligibility_reason_.value()));
}
if (ShouldOptionalEligibilityReasonBeRecorded(offline_eligibility_reason_)) {
builder.Setoffline_eligibility_reason(
static_cast<int>(offline_eligibility_reason_.value()));
}
builder.Record(ukm::UkmRecorder::Get()); builder.Record(ukm::UkmRecorder::Get());
} }
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "base/sequence_checker.h" #include "base/sequence_checker.h"
#include "base/time/time.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_black_list.h"
#include "components/previews/core/previews_experiments.h" #include "components/previews/core/previews_experiments.h"
namespace content { namespace content {
...@@ -73,6 +74,16 @@ class PreviewsUKMObserver : public page_load_metrics::PageLoadMetricsObserver { ...@@ -73,6 +74,16 @@ class PreviewsUKMObserver : public page_load_metrics::PageLoadMetricsObserver {
bool origin_opt_out_occurred_ = false; bool origin_opt_out_occurred_ = false;
bool save_data_enabled_ = false; bool save_data_enabled_ = false;
bool previews_likely_ = false; bool previews_likely_ = false;
base::Optional<previews::PreviewsEligibilityReason>
lite_page_eligibility_reason_ = base::nullopt;
base::Optional<previews::PreviewsEligibilityReason>
lite_page_redirect_eligibility_reason_ = base::nullopt;
base::Optional<previews::PreviewsEligibilityReason>
noscript_eligibility_reason_ = base::nullopt;
base::Optional<previews::PreviewsEligibilityReason>
resource_loading_hints_eligibility_reason_ = base::nullopt;
base::Optional<previews::PreviewsEligibilityReason>
offline_eligibility_reason_ = base::nullopt;
CoinFlipHoldbackResult coin_flip_result_ = CoinFlipHoldbackResult::kNotSet; CoinFlipHoldbackResult coin_flip_result_ = CoinFlipHoldbackResult::kNotSet;
base::Optional<base::TimeDelta> navigation_restart_penalty_ = base::nullopt; base::Optional<base::TimeDelta> navigation_restart_penalty_ = base::nullopt;
......
...@@ -5562,6 +5562,14 @@ be describing additional metrics about the same event. ...@@ -5562,6 +5562,14 @@ be describing additional metrics about the same event.
Set to 1 when a user is shown a lite page redirect in page load. Set to 1 when a user is shown a lite page redirect in page load.
</summary> </summary>
</metric> </metric>
<metric name="lite_page_redirect_eligibility_reason">
<summary>
Set to the value of the last known reason a Lite Page Redirect preview was
not eligible on this page load. The value of this metric corresponds to
the PreviewsEligibilityReason enum. This metric is only set when it is
non-zero.
</summary>
</metric>
<metric name="navigation_restart_penalty"> <metric name="navigation_restart_penalty">
<summary> <summary>
Set to the number of milliseconds spent restarting navigations when a Lite Set to the number of milliseconds spent restarting navigations when a Lite
...@@ -5574,6 +5582,22 @@ be describing additional metrics about the same event. ...@@ -5574,6 +5582,22 @@ be describing additional metrics about the same event.
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.
</summary> </summary>
</metric> </metric>
<metric name="noscript_eligibility_reason">
<summary>
Set to the value of the last known reason a NoScript preview was not
eligible on this page load. The value of this metric corresponds to the
PreviewsEligibilityReason enum. This metric is only set when it is
non-zero.
</summary>
</metric>
<metric name="offline_eligibility_reason">
<summary>
Set to the value of the last known reason an Offline preview was not
eligible on this page load. The value of this metric corresponds to the
PreviewsEligibilityReason enum. This metric is only set when it is
non-zero.
</summary>
</metric>
<metric name="offline_preview"> <metric name="offline_preview">
<summary> <summary>
Set to 1 when a user is shown an offline preview page in page load. Set to 1 when a user is shown an offline preview page in page load.
...@@ -5603,12 +5627,28 @@ be describing additional metrics about the same event. ...@@ -5603,12 +5627,28 @@ be describing additional metrics about the same event.
is impacted by the coin flip holdback. is impacted by the coin flip holdback.
</summary> </summary>
</metric> </metric>
<metric name="proxy_lite_page_eligibility_reason">
<summary>
Set to the value of the last known reason a Data Reduction Proxy Lite Page
preview was not eligible on this page load. The value of this metric
corresponds to the PreviewsEligibilityReason enum. This metric is only set
when it is non-zero.
</summary>
</metric>
<metric name="resource_loading_hints"> <metric name="resource_loading_hints">
<summary> <summary>
Set to 1 when a user is shown a resource loading hints based preview on a Set to 1 when a user is shown a resource loading hints based preview on a
page load. page load.
</summary> </summary>
</metric> </metric>
<metric name="resource_loading_hints_eligibility_reason">
<summary>
Set to the value of the last known reason a Resource Loading Hints preview
was not eligible on this page load. The value of this metric corresponds
to the PreviewsEligibilityReason enum. This metric is only set when it is
non-zero.
</summary>
</metric>
<metric name="save_data_enabled"> <metric name="save_data_enabled">
<summary> <summary>
Set to 1 if the data saver feature was enabled in Chrome at the time of Set to 1 if the data saver feature was enabled in Chrome at the time of
......
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