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

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

Issue 2076663004: Control data saver pingback reporting fraction with protobuf (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nits Created 4 years, 6 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 7d9c06677493de75f21c90f96e201eebe640bb9a..50796496e8eaf9545c77f6be607a34b2b68b9c99 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
@@ -1,16 +1,17 @@
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.h"
+#include "base/rand_util.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"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_params.h"
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_util.h"
#include "components/data_reduction_proxy/proto/client_config.pb.h"
#include "components/data_reduction_proxy/proto/pageload_metrics.pb.h"
#include "net/base/load_flags.h"
#include "net/url_request/url_fetcher.h"
#include "net/url_request/url_request_context_getter.h"
#include "net/url_request/url_request_status.h"
@@ -58,21 +59,22 @@ std::string SerializeData(const DataReductionProxyData& request_data,
std::string serialized_request;
batched_request.SerializeToString(&serialized_request);
return serialized_request;
}
} // namespace
DataReductionProxyPingbackClient::DataReductionProxyPingbackClient(
net::URLRequestContextGetter* url_request_context)
: url_request_context_(url_request_context),
- pingback_url_(util::AddApiKeyToUrl(params::GetPingbackURL())) {}
+ pingback_url_(util::AddApiKeyToUrl(params::GetPingbackURL())),
+ pingback_reporting_fraction_(0.0) {}
DataReductionProxyPingbackClient::~DataReductionProxyPingbackClient() {
DCHECK(thread_checker_.CalledOnValidThread());
}
void DataReductionProxyPingbackClient::OnURLFetchComplete(
const net::URLFetcher* source) {
DCHECK(thread_checker_.CalledOnValidThread());
DCHECK(source == current_fetcher_.get());
// TODO(ryansturm): Add UMA to measure failures. crbug.com/616544
@@ -109,16 +111,27 @@ DataReductionProxyPingbackClient::MaybeCreateFetcherForDataAndStart(
fetcher->SetRequestContext(url_request_context_);
// Configure max retries to be at most kMaxRetries times for 5xx errors.
static const int kMaxRetries = 5;
fetcher->SetMaxRetriesOn5xx(kMaxRetries);
fetcher->SetAutomaticallyRetryOnNetworkChanges(kMaxRetries);
fetcher->Start();
return fetcher;
}
bool DataReductionProxyPingbackClient::ShouldSendPingback() const {
- // TODO(ryansturm): Modulate the frequency of sending a pingback based on a
- // client config parameter. crbug.com/616805
- return params::IsForcePingbackEnabledViaFlags();
+ return params::IsForcePingbackEnabledViaFlags() ||
+ GenerateRandomFloat() < pingback_reporting_fraction_;
+}
+
+float DataReductionProxyPingbackClient::GenerateRandomFloat() const {
+ return static_cast<float>(base::RandDouble());
+}
+
+void DataReductionProxyPingbackClient::SetPingbackReportingFraction(
+ float pingback_reporting_fraction) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_LE(0.0f, pingback_reporting_fraction);
+ DCHECK_GE(1.0f, pingback_reporting_fraction);
+ pingback_reporting_fraction_ = pingback_reporting_fraction;
}
} // namespace data_reduction_proxy

Powered by Google App Engine
This is Rietveld 408576698