Commit 0c3f8bef authored by Robert Ogden's avatar Robert Ogden Committed by Commit Bot

DRP Pingbacks: Add channel string to pingback

Requested by the server team. Added as a member to the pingback client
impl which is constructed in the chrome layer, and is copied on every
pingback request.

Bug: 900224
Change-Id: Ic31ae471f09fc8cf9fe896ef42e9bffb3f6e9401
Reviewed-on: https://chromium-review.googlesource.com/c/1308078
Commit-Queue: Robert Ogden <robertogden@chromium.org>
Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#604017}
parent be9369e0
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "chrome/browser/previews/previews_service_factory.h" #include "chrome/browser/previews/previews_service_factory.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/channel_info.h"
#include "chrome/common/pref_names.h" #include "chrome/common/pref_names.h"
#include "components/data_reduction_proxy/content/browser/data_reduction_proxy_pingback_client_impl.h" #include "components/data_reduction_proxy/content/browser/data_reduction_proxy_pingback_client_impl.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h" #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_compression_stats.h"
...@@ -37,6 +38,7 @@ ...@@ -37,6 +38,7 @@
#include "components/previews/content/previews_ui_service.h" #include "components/previews/content/previews_ui_service.h"
#include "components/proxy_config/proxy_config_pref_names.h" #include "components/proxy_config/proxy_config_pref_names.h"
#include "components/proxy_config/proxy_prefs.h" #include "components/proxy_config/proxy_prefs.h"
#include "components/version_info/version_info.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_handle.h"
#include "content/public/browser/network_service_instance.h" #include "content/public/browser/network_service_instance.h"
...@@ -223,7 +225,8 @@ void DataReductionProxyChromeSettings::InitDataReductionProxySettings( ...@@ -223,7 +225,8 @@ void DataReductionProxyChromeSettings::InitDataReductionProxySettings(
std::move(store), std::move(store),
std::make_unique< std::make_unique<
data_reduction_proxy::DataReductionProxyPingbackClientImpl>( data_reduction_proxy::DataReductionProxyPingbackClientImpl>(
url_loader_factory, ui_task_runner), url_loader_factory, ui_task_runner,
version_info::GetChannelString(chrome::GetChannel())),
g_browser_process->network_quality_tracker(), g_browser_process->network_quality_tracker(),
content::GetNetworkConnectionTracker(), content::GetNetworkConnectionTracker(),
data_use_measurement::ChromeDataUseMeasurement::GetInstance(), data_use_measurement::ChromeDataUseMeasurement::GetInstance(),
......
...@@ -79,7 +79,8 @@ class TestPingbackClient ...@@ -79,7 +79,8 @@ class TestPingbackClient
TestPingbackClient() TestPingbackClient()
: data_reduction_proxy::DataReductionProxyPingbackClientImpl( : data_reduction_proxy::DataReductionProxyPingbackClientImpl(
nullptr, nullptr,
base::ThreadTaskRunnerHandle::Get()), base::ThreadTaskRunnerHandle::Get(),
"unknown"),
send_pingback_called_(false) {} send_pingback_called_(false) {}
~TestPingbackClient() override {} ~TestPingbackClient() override {}
......
...@@ -66,7 +66,9 @@ enum class CrashAction { ...@@ -66,7 +66,9 @@ enum class CrashAction {
void AddDataToPageloadMetrics(const DataReductionProxyData& request_data, void AddDataToPageloadMetrics(const DataReductionProxyData& request_data,
const DataReductionProxyPageLoadTiming& timing, const DataReductionProxyPageLoadTiming& timing,
PageloadMetrics_RendererCrashType crash_type, PageloadMetrics_RendererCrashType crash_type,
std::string channel,
PageloadMetrics* request) { PageloadMetrics* request) {
request->set_channel(channel);
request->set_session_key(request_data.session_key()); request->set_session_key(request_data.session_key());
request->set_holdback_group(params::HoldbackFieldTrialGroup()); request->set_holdback_group(params::HoldbackFieldTrialGroup());
// For the timing events, any of them could be zero. Fill the message as a // For the timing events, any of them could be zero. Fill the message as a
...@@ -221,13 +223,15 @@ std::string AddBatchInfoAndSerializeRequest( ...@@ -221,13 +223,15 @@ std::string AddBatchInfoAndSerializeRequest(
DataReductionProxyPingbackClientImpl::DataReductionProxyPingbackClientImpl( DataReductionProxyPingbackClientImpl::DataReductionProxyPingbackClientImpl(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
const std::string& channel)
: url_loader_factory_(std::move(url_loader_factory)), : url_loader_factory_(std::move(url_loader_factory)),
pingback_url_(util::AddApiKeyToUrl(params::GetPingbackURL())), pingback_url_(util::AddApiKeyToUrl(params::GetPingbackURL())),
pingback_reporting_fraction_(0.0), pingback_reporting_fraction_(0.0),
current_loader_message_count_(0u), current_loader_message_count_(0u),
current_loader_crash_count_(0u), current_loader_crash_count_(0u),
ui_task_runner_(std::move(ui_task_runner)), ui_task_runner_(std::move(ui_task_runner)),
channel_(channel),
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
scoped_observer_(this), scoped_observer_(this),
weak_factory_(this) { weak_factory_(this) {
...@@ -368,7 +372,8 @@ void DataReductionProxyPingbackClientImpl::CreateReport( ...@@ -368,7 +372,8 @@ void DataReductionProxyPingbackClientImpl::CreateReport(
PageloadMetrics_RendererCrashType crash_type) { PageloadMetrics_RendererCrashType crash_type) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
PageloadMetrics* pageload_metrics = metrics_request_.add_pageloads(); PageloadMetrics* pageload_metrics = metrics_request_.add_pageloads();
AddDataToPageloadMetrics(request_data, timing, crash_type, pageload_metrics); AddDataToPageloadMetrics(request_data, timing, crash_type, channel_,
pageload_metrics);
if (current_loader_) if (current_loader_)
return; return;
DCHECK_EQ(1, metrics_request_.pageloads_size()); DCHECK_EQ(1, metrics_request_.pageloads_size());
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <map> #include <map>
#include <memory> #include <memory>
#include <string>
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/scoped_refptr.h" #include "base/memory/scoped_refptr.h"
...@@ -48,7 +49,8 @@ class DataReductionProxyPingbackClientImpl ...@@ -48,7 +49,8 @@ class DataReductionProxyPingbackClientImpl
public: public:
DataReductionProxyPingbackClientImpl( DataReductionProxyPingbackClientImpl(
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner); scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
const std::string& channel);
~DataReductionProxyPingbackClientImpl() override; ~DataReductionProxyPingbackClientImpl() override;
protected: protected:
...@@ -122,6 +124,9 @@ class DataReductionProxyPingbackClientImpl ...@@ -122,6 +124,9 @@ class DataReductionProxyPingbackClientImpl
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
// The release channel of this Chrome instance.
std::string channel_;
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
typedef std::tuple<DataReductionProxyData, DataReductionProxyPageLoadTiming> typedef std::tuple<DataReductionProxyData, DataReductionProxyPageLoadTiming>
CrashPageLoadInformation; CrashPageLoadInformation;
......
...@@ -49,6 +49,7 @@ static const char kHistogramAttempted[] = ...@@ -49,6 +49,7 @@ static const char kHistogramAttempted[] =
"DataReductionProxy.Pingback.Attempted"; "DataReductionProxy.Pingback.Attempted";
static const char kSessionKey[] = "fake-session"; static const char kSessionKey[] = "fake-session";
static const char kFakeURL[] = "http://www.google.com/"; static const char kFakeURL[] = "http://www.google.com/";
static const char kChannel[] = "channel";
static const int64_t kBytes = 10000; static const int64_t kBytes = 10000;
static const int64_t kBytesOriginal = 1000000; static const int64_t kBytesOriginal = 1000000;
static const int64_t kTotalPageSizeBytes = 20000; static const int64_t kTotalPageSizeBytes = 20000;
...@@ -81,7 +82,8 @@ class TestDataReductionProxyPingbackClientImpl ...@@ -81,7 +82,8 @@ class TestDataReductionProxyPingbackClientImpl
scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory, scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory,
scoped_refptr<base::SingleThreadTaskRunner> thread_task_runner) scoped_refptr<base::SingleThreadTaskRunner> thread_task_runner)
: DataReductionProxyPingbackClientImpl(url_loader_factory, : DataReductionProxyPingbackClientImpl(url_loader_factory,
std::move(thread_task_runner)), std::move(thread_task_runner),
kChannel),
should_override_random_(false), should_override_random_(false),
override_value_(0.0f), override_value_(0.0f),
current_time_(base::Time::Now()) {} current_time_(base::Time::Now()) {}
...@@ -314,6 +316,7 @@ TEST_F(DataReductionProxyPingbackClientImplTest, VerifyPingbackContent) { ...@@ -314,6 +316,7 @@ TEST_F(DataReductionProxyPingbackClientImplTest, VerifyPingbackContent) {
protobuf_parser::DurationToTimeDelta(pageload_metrics.page_end_time())); protobuf_parser::DurationToTimeDelta(pageload_metrics.page_end_time()));
EXPECT_EQ(kSessionKey, pageload_metrics.session_key()); EXPECT_EQ(kSessionKey, pageload_metrics.session_key());
EXPECT_EQ(kChannel, pageload_metrics.channel());
EXPECT_EQ(kFakeURL, pageload_metrics.first_request_url()); EXPECT_EQ(kFakeURL, pageload_metrics.first_request_url());
EXPECT_EQ(kBytes, pageload_metrics.compressed_page_size_bytes()); EXPECT_EQ(kBytes, pageload_metrics.compressed_page_size_bytes());
EXPECT_EQ(kBytesOriginal, pageload_metrics.original_page_size_bytes()); EXPECT_EQ(kBytesOriginal, pageload_metrics.original_page_size_bytes());
...@@ -485,6 +488,7 @@ TEST_F(DataReductionProxyPingbackClientImplTest, ...@@ -485,6 +488,7 @@ TEST_F(DataReductionProxyPingbackClientImplTest,
protobuf_parser::DurationToTimeDelta(pageload_metrics.page_end_time())); protobuf_parser::DurationToTimeDelta(pageload_metrics.page_end_time()));
EXPECT_EQ(kSessionKey, pageload_metrics.session_key()); EXPECT_EQ(kSessionKey, pageload_metrics.session_key());
EXPECT_EQ(kChannel, pageload_metrics.channel());
EXPECT_EQ(kFakeURL, pageload_metrics.first_request_url()); EXPECT_EQ(kFakeURL, pageload_metrics.first_request_url());
EXPECT_EQ(kBytes, pageload_metrics.compressed_page_size_bytes()); EXPECT_EQ(kBytes, pageload_metrics.compressed_page_size_bytes());
EXPECT_EQ(kBytesOriginal, pageload_metrics.original_page_size_bytes()); EXPECT_EQ(kBytesOriginal, pageload_metrics.original_page_size_bytes());
......
...@@ -56,7 +56,7 @@ message RequestInfo { ...@@ -56,7 +56,7 @@ message RequestInfo {
// Metrics for a single pageload. // Metrics for a single pageload.
message PageloadMetrics { message PageloadMetrics {
// Next ID: 31 // Next ID: 32
reserved 3; reserved 3;
// The possible effective connection type values. // The possible effective connection type values.
...@@ -251,4 +251,8 @@ message PageloadMetrics { ...@@ -251,4 +251,8 @@ message PageloadMetrics {
// The number of scroll events that happened on the page. // The number of scroll events that happened on the page.
optional uint32 scroll_count = 30; optional uint32 scroll_count = 30;
// The release channel of this Chrome instance, e.g.: "stable", "beta", "dev",
// "canary", "unknown".
optional string channel = 31;
} }
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