Commit 743dc24a authored by Sophie Chang's avatar Sophie Chang Committed by Commit Bot

Add UKM for NoScript and associated opt out

Bug: 783365
Change-Id: Ib19d2453ce4079b2367d8593dd0d1bf1c7fec301
Reviewed-on: https://chromium-review.googlesource.com/762101Reviewed-by: default avatarBryan McQuade <bmcquade@chromium.org>
Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Commit-Queue: Sophie Chang <sophiechang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521409}
parent a5e6f2f8
......@@ -13,23 +13,16 @@
#include "chrome/browser/previews/previews_infobar_delegate.h"
#include "chrome/common/page_load_metrics/page_load_timing.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data.h"
#include "components/previews/content/previews_content_util.h"
#include "components/ukm/ukm_source.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/common/previews_state.h"
#include "services/metrics/public/cpp/ukm_builders.h"
#include "services/metrics/public/cpp/ukm_entry_builder.h"
#include "services/metrics/public/cpp/ukm_recorder.h"
namespace previews {
namespace {
const char kPreviewsName[] = "Previews";
const char kPreviewsServerLoFi[] = "server_lofi";
const char kPreviewsClientLoFi[] = "client_lofi";
const char kPreviewsLitePage[] = "lite_page";
const char kPreviewsOptOut[] = "opt_out";
} // namespace
PreviewsUKMObserver::PreviewsUKMObserver() {}
PreviewsUKMObserver::~PreviewsUKMObserver() {}
......@@ -53,6 +46,12 @@ PreviewsUKMObserver::OnCommit(content::NavigationHandle* navigation_handle,
if (data && data->used_data_reduction_proxy() && data->lite_page_received()) {
lite_page_seen_ = true;
}
content::PreviewsState previews_state =
chrome_navigation_data->previews_state();
if (previews_state && previews::GetMainFramePreviewsType(previews_state) ==
previews::PreviewsType::NOSCRIPT) {
noscript_seen_ = true;
}
return CONTINUE_OBSERVING;
}
......@@ -86,21 +85,21 @@ void PreviewsUKMObserver::OnComplete(
void PreviewsUKMObserver::RecordPreviewsTypes(
const page_load_metrics::PageLoadExtraInfo& info) {
// Only record previews types when they occur.
if (!server_lofi_seen_ && !client_lofi_seen_ && !lite_page_seen_)
return;
ukm::UkmRecorder* ukm_recorder = ukm::UkmRecorder::Get();
if (!ukm_recorder)
if (!server_lofi_seen_ && !client_lofi_seen_ && !lite_page_seen_ &&
!noscript_seen_)
return;
std::unique_ptr<ukm::UkmEntryBuilder> builder =
ukm_recorder->GetEntryBuilder(info.source_id, kPreviewsName);
ukm::builders::Previews builder(info.source_id);
if (server_lofi_seen_)
builder->AddMetric(kPreviewsServerLoFi, true);
builder.Setserver_lofi(1);
if (client_lofi_seen_)
builder->AddMetric(kPreviewsClientLoFi, true);
builder.Setclient_lofi(1);
if (lite_page_seen_)
builder->AddMetric(kPreviewsLitePage, true);
builder.Setlite_page(1);
if (noscript_seen_)
builder.Setnoscript(1);
if (opt_out_occurred_)
builder->AddMetric(kPreviewsOptOut, true);
builder.Setopt_out(1);
builder.Record(ukm::UkmRecorder::Get());
}
void PreviewsUKMObserver::OnLoadedResource(
......
......@@ -43,6 +43,7 @@ class PreviewsUKMObserver : public page_load_metrics::PageLoadMetricsObserver {
bool server_lofi_seen_ = false;
bool client_lofi_seen_ = false;
bool lite_page_seen_ = false;
bool noscript_seen_ = false;
bool opt_out_occurred_ = false;
SEQUENCE_CHECKER(sequence_checker_);
......
......@@ -1543,6 +1543,11 @@ be describing additional metrics about the same event.
Set to 1 when a user is shown a lite page in page load.
</summary>
</metric>
<metric name="noscript">
<summary>
Set to 1 when a user is shown a NoScript preview on a page load.
</summary>
</metric>
<metric name="opt_out">
<summary>
Set to 1 when a user clicks &quot;Show Original&quot; on a preview page
......
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