Commit 6a8652c7 authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

Previews: Add UMA for Page End Reason on previews

Added in the Previews UKM observer which is most previews-generic PLM
observer we have.

See bug for more context.

Bug: 900466
Change-Id: I828728bf561e8253105b3b22a35b9e031b0266dd
Reviewed-on: https://chromium-review.googlesource.com/c/1313851
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Reviewed-by: default avatarRobert Kaplow <rkaplow@chromium.org>
Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606135}
parent 6a85631f
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include "chrome/browser/page_load_metrics/observers/previews_ukm_observer.h" #include "chrome/browser/page_load_metrics/observers/previews_ukm_observer.h"
#include "base/metrics/histogram_functions.h"
#include "base/optional.h" #include "base/optional.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
...@@ -16,7 +17,6 @@ ...@@ -16,7 +17,6 @@
#include "chrome/common/page_load_metrics/page_load_timing.h" #include "chrome/common/page_load_metrics/page_load_timing.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.h"
#include "components/previews/content/previews_content_util.h" #include "components/previews/content/previews_content_util.h"
#include "components/previews/core/previews_experiments.h"
#include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_handle.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/common/previews_state.h" #include "content/public/common/previews_state.h"
...@@ -26,7 +26,8 @@ ...@@ -26,7 +26,8 @@
namespace previews { namespace previews {
PreviewsUKMObserver::PreviewsUKMObserver() {} PreviewsUKMObserver::PreviewsUKMObserver()
: committed_preview_(PreviewsType::NONE) {}
PreviewsUKMObserver::~PreviewsUKMObserver() {} PreviewsUKMObserver::~PreviewsUKMObserver() {}
...@@ -47,6 +48,7 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle, ...@@ -47,6 +48,7 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle,
if (!previews_user_data) if (!previews_user_data)
return STOP_OBSERVING; return STOP_OBSERVING;
committed_preview_ = previews_user_data->committed_previews_type();
content::PreviewsState previews_state = content::PreviewsState previews_state =
previews_user_data->committed_previews_state(); previews_user_data->committed_previews_state();
if (previews_state && previews::GetMainFramePreviewsType(previews_state) == if (previews_state && previews::GetMainFramePreviewsType(previews_state) ==
...@@ -106,6 +108,14 @@ void PreviewsUKMObserver::OnComplete( ...@@ -106,6 +108,14 @@ void PreviewsUKMObserver::OnComplete(
void PreviewsUKMObserver::RecordPreviewsTypes( void PreviewsUKMObserver::RecordPreviewsTypes(
const page_load_metrics::PageLoadExtraInfo& info) { const page_load_metrics::PageLoadExtraInfo& info) {
// Record the page end reason in UMA.
base::UmaHistogramExactLinear(
base::StringPrintf(
"Previews.PageEndReason.%s",
previews::GetStringNameForType(committed_preview_).c_str()),
info.page_end_reason,
page_load_metrics::PageEndReason::PAGE_END_REASON_COUNT);
// Only record previews types when they are active. // Only record previews types when they are active.
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_ &&
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/sequence_checker.h" #include "base/sequence_checker.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"
namespace content { namespace content {
class NavigationHandle; class NavigationHandle;
...@@ -49,6 +50,9 @@ class PreviewsUKMObserver : public page_load_metrics::PageLoadMetricsObserver { ...@@ -49,6 +50,9 @@ class PreviewsUKMObserver : public page_load_metrics::PageLoadMetricsObserver {
private: private:
void RecordPreviewsTypes(const page_load_metrics::PageLoadExtraInfo& info); void RecordPreviewsTypes(const page_load_metrics::PageLoadExtraInfo& info);
// The preview type that was most recently committed.
PreviewsType committed_preview_;
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;
......
...@@ -23,4 +23,9 @@ void PreviewsUserData::SetCommittedPreviewsType( ...@@ -23,4 +23,9 @@ void PreviewsUserData::SetCommittedPreviewsType(
committed_previews_type_ = previews_type; committed_previews_type_ = previews_type;
} }
void PreviewsUserData::SetCommittedPreviewsTypeForTesting(
previews::PreviewsType previews_type) {
committed_previews_type_ = previews_type;
}
} // namespace previews } // namespace previews
...@@ -69,6 +69,8 @@ class PreviewsUserData { ...@@ -69,6 +69,8 @@ class PreviewsUserData {
} }
// Sets the committed previews type. Should only be called once. // Sets the committed previews type. Should only be called once.
void SetCommittedPreviewsType(previews::PreviewsType previews_type); void SetCommittedPreviewsType(previews::PreviewsType previews_type);
// Sets the committed previews type for testing. Can be called multiple times.
void SetCommittedPreviewsTypeForTesting(previews::PreviewsType previews_type);
bool offline_preview_used() const { return offline_preview_used_; } bool offline_preview_used() const { return offline_preview_used_; }
// Whether an offline preview is being served. // Whether an offline preview is being served.
......
...@@ -83992,6 +83992,11 @@ uploading your change for review. ...@@ -83992,6 +83992,11 @@ uploading your change for review.
</summary> </summary>
</histogram> </histogram>
<histogram name="Previews.PageEndReason" enum="PageEndReason">
<owner>robertogden@chromium.org</owner>
<summary>Records why the page load ended on a given preview type.</summary>
</histogram>
<histogram name="Previews.ProcessHintsResult" enum="PreviewsProcessHintsResult"> <histogram name="Previews.ProcessHintsResult" enum="PreviewsProcessHintsResult">
<owner>dougarnett@chromium.org</owner> <owner>dougarnett@chromium.org</owner>
<summary> <summary>
...@@ -133905,6 +133910,7 @@ uploading your change for review. ...@@ -133905,6 +133910,7 @@ uploading your change for review.
<suffix name="LitePage" label="Lite page previews"/> <suffix name="LitePage" label="Lite page previews"/>
<suffix name="LitePageRedirect" label="Lite page redirection previews"/> <suffix name="LitePageRedirect" label="Lite page redirection previews"/>
<suffix name="LoFi" label="LoFi previews"/> <suffix name="LoFi" label="LoFi previews"/>
<suffix name="None" label="No preview was served"/>
<suffix name="NoScript" label="NoScript previews"/> <suffix name="NoScript" label="NoScript previews"/>
<suffix name="Offline" label="Offline previews"/> <suffix name="Offline" label="Offline previews"/>
<suffix name="ResourceLoadingHints" <suffix name="ResourceLoadingHints"
...@@ -133914,6 +133920,7 @@ uploading your change for review. ...@@ -133914,6 +133920,7 @@ uploading your change for review.
<affected-histogram name="Previews.OmniboxAction"/> <affected-histogram name="Previews.OmniboxAction"/>
<affected-histogram name="Previews.OptimizationFilterStatus"/> <affected-histogram name="Previews.OptimizationFilterStatus"/>
<affected-histogram name="Previews.OptOut.UserOptedOut"/> <affected-histogram name="Previews.OptOut.UserOptedOut"/>
<affected-histogram name="Previews.PageEndReason"/>
</histogram_suffixes> </histogram_suffixes>
<histogram_suffixes name="ProcessMemoryAllocator2" separator="."> <histogram_suffixes name="ProcessMemoryAllocator2" separator=".">
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