Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(184)

Unified Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.cc

Issue 2833523002: Adding opt out and previews type information to DRP pingback (Closed)
Patch Set: bengr comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.cc
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.cc
index 76f0dddd3d45d5f40afbf47b1778ef59377ae6bb..4d21e6666ed003690fe490ec8143dff739d2b086 100644
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.cc
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.cc
@@ -6,9 +6,11 @@
#include <stdint.h>
+#include "base/bind_helpers.h"
#include "base/metrics/histogram_macros.h"
#include "base/optional.h"
#include "base/rand_util.h"
+#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data.h"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_page_load_timing.h"
@@ -36,7 +38,8 @@ static const char kHistogramAttempted[] =
// timing and data reduction proxy state.
void AddDataToPageloadMetrics(const DataReductionProxyData& request_data,
const DataReductionProxyPageLoadTiming& timing,
- PageloadMetrics* request) {
+ PageloadMetrics* request,
+ bool opted_out) {
request->set_session_key(request_data.session_key());
// For the timing events, any of them could be zero. Fill the message as a
// best effort.
@@ -96,6 +99,28 @@ void AddDataToPageloadMetrics(const DataReductionProxyData& request_data,
if (request_data.page_id()) {
request->set_page_id(request_data.page_id().value());
}
+
+ bool was_preview_shown = false;
+ if (request_data.lofi_received()) {
+ request->set_previews_type(PageloadMetrics_PreviewsType_LOFI);
+ was_preview_shown = true;
+ } else if (request_data.lite_page_received()) {
+ request->set_previews_type(PageloadMetrics_PreviewsType_LITE_PAGE);
+ was_preview_shown = true;
+ } else {
+ request->set_previews_type(PageloadMetrics_PreviewsType_NONE);
+ }
+
+ if (!was_preview_shown || timing.app_background_occurred) {
+ request->set_previews_opt_out(PageloadMetrics_PreviewsOptOut_UNKNOWN);
+ return;
+ }
+
+ if (opted_out) {
+ request->set_previews_opt_out(PageloadMetrics_PreviewsOptOut_OPT_OUT);
+ return;
+ }
+ request->set_previews_opt_out(PageloadMetrics_PreviewsOptOut_NON_OPT_OUT);
}
// Adds |current_time| as the metrics sent time to |request_data|, and returns
@@ -119,6 +144,7 @@ DataReductionProxyPingbackClient::DataReductionProxyPingbackClient(
pingback_reporting_fraction_(0.0) {}
DataReductionProxyPingbackClient::~DataReductionProxyPingbackClient() {
+ DCHECK(opt_outs_.empty());
DCHECK(thread_checker_.CalledOnValidThread());
}
@@ -141,8 +167,18 @@ void DataReductionProxyPingbackClient::SendPingback(
UMA_HISTOGRAM_BOOLEAN(kHistogramAttempted, send_pingback);
if (!send_pingback)
return;
+
+ bool opted_out = false;
+ if (request_data.page_id()) {
+ auto opt_out = opt_outs_.find(NavigationID(request_data.page_id().value(),
+ request_data.session_key()));
+ opted_out = opt_out != opt_outs_.end();
+ if (opted_out)
+ opt_outs_.erase(opt_out);
+ }
+
PageloadMetrics* pageload_metrics = metrics_request_.add_pageloads();
- AddDataToPageloadMetrics(request_data, timing, pageload_metrics);
+ AddDataToPageloadMetrics(request_data, timing, pageload_metrics, opted_out);
if (current_fetcher_.get())
return;
DCHECK_EQ(1, metrics_request_.pageloads_size());
@@ -191,4 +227,26 @@ void DataReductionProxyPingbackClient::SetPingbackReportingFraction(
pingback_reporting_fraction_ = pingback_reporting_fraction;
}
+void DataReductionProxyPingbackClient::AddOptOut(
+ const NavigationID& navigation_id) {
+ opt_outs_.emplace(navigation_id);
+}
+
+void DataReductionProxyPingbackClient::ClearNavigationKeySync(
+ const NavigationID& navigation_id) {
+ opt_outs_.erase(navigation_id);
+}
+
+void DataReductionProxyPingbackClient::ClearNavigationKeyAsync(
+ const NavigationID& navigation_id) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+ base::Bind(&DataReductionProxyPingbackClient::ClearNavigationKeySync,
+ base::Unretained(this), navigation_id));
+}
+
+size_t DataReductionProxyPingbackClient::OptOutsSizeForTesting() const {
+ return opt_outs_.size();
+}
+
} // namespace data_reduction_proxy

Powered by Google App Engine
This is Rietveld 408576698