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 @@
#include "chrome/browser/page_load_metrics/observers/previews_ukm_observer.h"
#include "base/metrics/histogram_functions.h"
#include "base/optional.h"
#include "base/time/time.h"
#include "chrome/browser/browser_process.h"
......@@ -16,7 +17,6 @@
#include "chrome/common/page_load_metrics/page_load_timing.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_settings.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/web_contents.h"
#include "content/public/common/previews_state.h"
......@@ -26,7 +26,8 @@
namespace previews {
PreviewsUKMObserver::PreviewsUKMObserver() {}
PreviewsUKMObserver::PreviewsUKMObserver()
: committed_preview_(PreviewsType::NONE) {}
PreviewsUKMObserver::~PreviewsUKMObserver() {}
......@@ -47,6 +48,7 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle,
if (!previews_user_data)
return STOP_OBSERVING;
committed_preview_ = previews_user_data->committed_previews_type();
content::PreviewsState previews_state =
previews_user_data->committed_previews_state();
if (previews_state && previews::GetMainFramePreviewsType(previews_state) ==
......@@ -106,6 +108,14 @@ void PreviewsUKMObserver::OnComplete(
void PreviewsUKMObserver::RecordPreviewsTypes(
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.
if (!server_lofi_seen_ && !client_lofi_seen_ && !lite_page_seen_ &&
!noscript_seen_ && !resource_loading_hints_seen_ &&
......
......@@ -8,6 +8,7 @@
#include "base/macros.h"
#include "base/sequence_checker.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_observer.h"
#include "components/previews/core/previews_experiments.h"
namespace content {
class NavigationHandle;
......@@ -49,6 +50,9 @@ class PreviewsUKMObserver : public page_load_metrics::PageLoadMetricsObserver {
private:
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 client_lofi_seen_ = false;
bool lite_page_seen_ = false;
......
......@@ -23,4 +23,9 @@ void PreviewsUserData::SetCommittedPreviewsType(
committed_previews_type_ = previews_type;
}
void PreviewsUserData::SetCommittedPreviewsTypeForTesting(
previews::PreviewsType previews_type) {
committed_previews_type_ = previews_type;
}
} // namespace previews
......@@ -69,6 +69,8 @@ class PreviewsUserData {
}
// Sets the committed previews type. Should only be called once.
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_; }
// Whether an offline preview is being served.
......
......@@ -83992,6 +83992,11 @@ uploading your change for review.
</summary>
</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">
<owner>dougarnett@chromium.org</owner>
<summary>
......@@ -133905,6 +133910,7 @@ uploading your change for review.
<suffix name="LitePage" label="Lite page previews"/>
<suffix name="LitePageRedirect" label="Lite page redirection previews"/>
<suffix name="LoFi" label="LoFi previews"/>
<suffix name="None" label="No preview was served"/>
<suffix name="NoScript" label="NoScript previews"/>
<suffix name="Offline" label="Offline previews"/>
<suffix name="ResourceLoadingHints"
......@@ -133914,6 +133920,7 @@ uploading your change for review.
<affected-histogram name="Previews.OmniboxAction"/>
<affected-histogram name="Previews.OptimizationFilterStatus"/>
<affected-histogram name="Previews.OptOut.UserOptedOut"/>
<affected-histogram name="Previews.PageEndReason"/>
</histogram_suffixes>
<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