Index: chrome/browser/previews/previews_infobar_delegate.cc |
diff --git a/chrome/browser/previews/previews_infobar_delegate.cc b/chrome/browser/previews/previews_infobar_delegate.cc |
index 110f20885eda515966c239a227430ac53c795f2d..58d1096b020b74772aa4a019a5590186cef6cbd4 100644 |
--- a/chrome/browser/previews/previews_infobar_delegate.cc |
+++ b/chrome/browser/previews/previews_infobar_delegate.cc |
@@ -24,6 +24,9 @@ |
#include "components/infobars/core/infobar.h" |
#include "components/network_time/network_time_tracker.h" |
#include "components/previews/core/previews_features.h" |
+#include "components/ukm/public/ukm_entry_builder.h" |
+#include "components/ukm/public/ukm_recorder.h" |
+#include "components/ukm/ukm_source.h" |
#include "content/public/browser/render_frame_host.h" |
#include "content/public/browser/web_contents.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -34,6 +37,9 @@ |
namespace { |
+const char kPreviewsName[] = "Previews"; |
+const char kPreviewsOptOut[] = "opt_out"; |
+ |
void RecordPreviewsInfoBarAction( |
previews::PreviewsType previews_type, |
PreviewsInfoBarDelegate::PreviewsInfoBarAction action) { |
@@ -225,6 +231,10 @@ bool PreviewsInfoBarDelegate::LinkClicked(WindowOpenDisposition disposition) { |
ReportPingbackInformation(web_contents); |
+ // TODO(ryansturm): Add support for Offline Previews in PLM UKM. |
+ if (previews_type_ != previews::PreviewsType::OFFLINE) |
+ RecordUKMOptOut(); |
+ |
if ((previews_type_ == previews::PreviewsType::LITE_PAGE || |
previews_type_ == previews::PreviewsType::LOFI) && |
!data_reduction_proxy::params::IsBlackListEnabledForServerPreviews()) { |
@@ -282,3 +292,18 @@ base::string16 PreviewsInfoBarDelegate::GetTimestampText() const { |
base::IntToString16(staleness_in_minutes / 60)); |
} |
} |
+ |
+void PreviewsInfoBarDelegate::RecordUKMOptOut() { |
+ content::WebContents* web_contents = |
+ InfoBarService::WebContentsFromInfoBar(infobar()); |
+ PreviewsInfoBarTabHelper* infobar_tab_helper = |
+ PreviewsInfoBarTabHelper::FromWebContents(web_contents); |
+ if (!infobar_tab_helper || !infobar_tab_helper->source_id()) { |
+ return; |
+ } |
+ |
+ ukm::UkmRecorder* ukm_recorder = g_browser_process->ukm_recorder(); |
+ std::unique_ptr<ukm::UkmEntryBuilder> builder = ukm_recorder->GetEntryBuilder( |
+ infobar_tab_helper->source_id().value(), kPreviewsName); |
+ builder->AddMetric(kPreviewsOptOut, true); |
+} |