Commit 3f6b84cd authored by fgorski's avatar fgorski Committed by Commit bot

[GCM] Updates to GCMChannelStatusSyncer - UserAgent and server URL.

BUG=421208
R=zea@chromium.org

Review URL: https://codereview.chromium.org/635073002

Cr-Commit-Position: refs/heads/master@{#299185}
parent d1f27bde
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
#include "base/logging.h" #include "base/logging.h"
#include "base/sequenced_task_runner.h" #include "base/sequenced_task_runner.h"
#include "base/threading/sequenced_worker_pool.h" #include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/sync/glue/local_device_info_provider_impl.h"
#include "chrome/browser/sync/profile_sync_service.h"
#include "chrome/common/chrome_version_info.h" #include "chrome/common/chrome_version_info.h"
#include "components/gcm_driver/gcm_client.h" #include "components/gcm_driver/gcm_client.h"
#include "components/gcm_driver/gcm_client_factory.h" #include "components/gcm_driver/gcm_client_factory.h"
...@@ -69,6 +71,22 @@ GCMClient::ChromeBuildInfo GetChromeBuildInfo() { ...@@ -69,6 +71,22 @@ GCMClient::ChromeBuildInfo GetChromeBuildInfo() {
return chrome_build_info; return chrome_build_info;
} }
std::string GetChannelStatusRequestUrl() {
chrome::VersionInfo::Channel channel = chrome::VersionInfo::GetChannel();
if (channel == chrome::VersionInfo::CHANNEL_STABLE ||
channel == chrome::VersionInfo::CHANNEL_BETA) {
return ProfileSyncService::kSyncServerUrl;
}
return ProfileSyncService::kDevServerUrl;
}
std::string GetUserAgent() {
chrome::VersionInfo version_info;
return browser_sync::LocalDeviceInfoProviderImpl::MakeUserAgentForSyncApi(
version_info);
}
} // namespace } // namespace
scoped_ptr<GCMDriver> CreateGCMDriverDesktop( scoped_ptr<GCMDriver> CreateGCMDriverDesktop(
...@@ -82,17 +100,19 @@ scoped_ptr<GCMDriver> CreateGCMDriverDesktop( ...@@ -82,17 +100,19 @@ scoped_ptr<GCMDriver> CreateGCMDriverDesktop(
worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( worker_pool->GetSequencedTaskRunnerWithShutdownBehavior(
worker_pool->GetSequenceToken(), worker_pool->GetSequenceToken(),
base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); base::SequencedWorkerPool::SKIP_ON_SHUTDOWN));
return scoped_ptr<GCMDriver>(new GCMDriverDesktop( return scoped_ptr<GCMDriver>(
gcm_client_factory.Pass(), new GCMDriverDesktop(gcm_client_factory.Pass(),
GetChromeBuildInfo(), GetChromeBuildInfo(),
prefs, GetChannelStatusRequestUrl(),
store_path, GetUserAgent(),
request_context, prefs,
content::BrowserThread::GetMessageLoopProxyForThread( store_path,
content::BrowserThread::UI), request_context,
content::BrowserThread::GetMessageLoopProxyForThread( content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::IO), content::BrowserThread::UI),
blocking_task_runner)); content::BrowserThread::GetMessageLoopProxyForThread(
content::BrowserThread::IO),
blocking_task_runner));
} }
} // namespace gcm } // namespace gcm
...@@ -19,8 +19,6 @@ namespace gcm { ...@@ -19,8 +19,6 @@ namespace gcm {
namespace { namespace {
const char kGCMChannelStatusRequestURL[] =
"https://clients4.google.com/chrome-sync/command/";
const char kRequestContentType[] = "application/octet-stream"; const char kRequestContentType[] = "application/octet-stream";
const char kGCMChannelTag[] = "gcm_channel"; const char kGCMChannelTag[] = "gcm_channel";
const int kDefaultPollIntervalSeconds = 60 * 60; // 60 minutes. const int kDefaultPollIntervalSeconds = 60 * 60; // 60 minutes.
...@@ -30,8 +28,12 @@ const int kMinPollIntervalSeconds = 30 * 60; // 30 minutes. ...@@ -30,8 +28,12 @@ const int kMinPollIntervalSeconds = 30 * 60; // 30 minutes.
GCMChannelStatusRequest::GCMChannelStatusRequest( GCMChannelStatusRequest::GCMChannelStatusRequest(
const scoped_refptr<net::URLRequestContextGetter>& request_context_getter, const scoped_refptr<net::URLRequestContextGetter>& request_context_getter,
const std::string& channel_status_request_url,
const std::string& user_agent,
const GCMChannelStatusRequestCallback& callback) const GCMChannelStatusRequestCallback& callback)
: request_context_getter_(request_context_getter), : request_context_getter_(request_context_getter),
channel_status_request_url_(channel_status_request_url),
user_agent_(user_agent),
callback_(callback), callback_(callback),
backoff_entry_(&(GetGCMBackoffPolicy())), backoff_entry_(&(GetGCMBackoffPolicy())),
weak_ptr_factory_(this) { weak_ptr_factory_(this) {
...@@ -53,7 +55,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() { ...@@ -53,7 +55,7 @@ int GCMChannelStatusRequest::min_poll_interval_seconds() {
void GCMChannelStatusRequest::Start() { void GCMChannelStatusRequest::Start() {
DCHECK(!url_fetcher_.get()); DCHECK(!url_fetcher_.get());
GURL request_url(kGCMChannelStatusRequestURL); GURL request_url(channel_status_request_url_);
sync_pb::ExperimentStatusRequest proto_data; sync_pb::ExperimentStatusRequest proto_data;
proto_data.add_experiment_name(kGCMChannelTag); proto_data.add_experiment_name(kGCMChannelTag);
...@@ -63,6 +65,7 @@ void GCMChannelStatusRequest::Start() { ...@@ -63,6 +65,7 @@ void GCMChannelStatusRequest::Start() {
url_fetcher_.reset( url_fetcher_.reset(
net::URLFetcher::Create(request_url, net::URLFetcher::POST, this)); net::URLFetcher::Create(request_url, net::URLFetcher::POST, this));
url_fetcher_->SetRequestContext(request_context_getter_.get()); url_fetcher_->SetRequestContext(request_context_getter_.get());
url_fetcher_->AddExtraRequestHeader("User-Agent: " + user_agent_);
url_fetcher_->SetUploadData(kRequestContentType, upload_data); url_fetcher_->SetUploadData(kRequestContentType, upload_data);
url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES |
net::LOAD_DO_NOT_SAVE_COOKIES); net::LOAD_DO_NOT_SAVE_COOKIES);
......
...@@ -31,6 +31,8 @@ class GCMChannelStatusRequest : public net::URLFetcherDelegate { ...@@ -31,6 +31,8 @@ class GCMChannelStatusRequest : public net::URLFetcherDelegate {
GCMChannelStatusRequest( GCMChannelStatusRequest(
const scoped_refptr<net::URLRequestContextGetter>& request_context_getter, const scoped_refptr<net::URLRequestContextGetter>& request_context_getter,
const std::string& channel_status_request_url,
const std::string& user_agent,
const GCMChannelStatusRequestCallback& callback); const GCMChannelStatusRequestCallback& callback);
virtual ~GCMChannelStatusRequest(); virtual ~GCMChannelStatusRequest();
...@@ -47,6 +49,8 @@ class GCMChannelStatusRequest : public net::URLFetcherDelegate { ...@@ -47,6 +49,8 @@ class GCMChannelStatusRequest : public net::URLFetcherDelegate {
void RetryWithBackoff(bool update_backoff); void RetryWithBackoff(bool update_backoff);
scoped_refptr<net::URLRequestContextGetter> request_context_getter_; scoped_refptr<net::URLRequestContextGetter> request_context_getter_;
const std::string channel_status_request_url_;
const std::string user_agent_;
GCMChannelStatusRequestCallback callback_; GCMChannelStatusRequestCallback callback_;
scoped_ptr<net::URLFetcher> url_fetcher_; scoped_ptr<net::URLFetcher> url_fetcher_;
net::BackoffEntry backoff_entry_; net::BackoffEntry backoff_entry_;
......
...@@ -54,6 +54,8 @@ GCMChannelStatusRequestTest::~GCMChannelStatusRequestTest() { ...@@ -54,6 +54,8 @@ GCMChannelStatusRequestTest::~GCMChannelStatusRequestTest() {
void GCMChannelStatusRequestTest::StartRequest() { void GCMChannelStatusRequestTest::StartRequest() {
request_.reset(new GCMChannelStatusRequest( request_.reset(new GCMChannelStatusRequest(
url_request_context_getter_.get(), url_request_context_getter_.get(),
"http://channel.status.request.com/",
"user agent string",
base::Bind(&GCMChannelStatusRequestTest::OnRequestCompleted, base::Bind(&GCMChannelStatusRequestTest::OnRequestCompleted,
base::Unretained(this)))); base::Unretained(this))));
request_->Start(); request_->Start();
......
...@@ -71,9 +71,13 @@ int GCMChannelStatusSyncer::first_time_delay_seconds() { ...@@ -71,9 +71,13 @@ int GCMChannelStatusSyncer::first_time_delay_seconds() {
GCMChannelStatusSyncer::GCMChannelStatusSyncer( GCMChannelStatusSyncer::GCMChannelStatusSyncer(
GCMDriver* driver, GCMDriver* driver,
PrefService* prefs, PrefService* prefs,
const std::string& channel_status_request_url,
const std::string& user_agent,
const scoped_refptr<net::URLRequestContextGetter>& request_context) const scoped_refptr<net::URLRequestContextGetter>& request_context)
: driver_(driver), : driver_(driver),
prefs_(prefs), prefs_(prefs),
channel_status_request_url_(channel_status_request_url),
user_agent_(user_agent),
request_context_(request_context), request_context_(request_context),
gcm_enabled_(true), gcm_enabled_(true),
poll_interval_seconds_( poll_interval_seconds_(
...@@ -150,6 +154,8 @@ void GCMChannelStatusSyncer::StartRequest() { ...@@ -150,6 +154,8 @@ void GCMChannelStatusSyncer::StartRequest() {
request_.reset(new GCMChannelStatusRequest( request_.reset(new GCMChannelStatusRequest(
request_context_, request_context_,
channel_status_request_url_,
user_agent_,
base::Bind(&GCMChannelStatusSyncer::OnRequestCompleted, base::Bind(&GCMChannelStatusSyncer::OnRequestCompleted,
weak_ptr_factory_.GetWeakPtr()))); weak_ptr_factory_.GetWeakPtr())));
request_->Start(); request_->Start();
......
...@@ -38,6 +38,8 @@ class GCMChannelStatusSyncer { ...@@ -38,6 +38,8 @@ class GCMChannelStatusSyncer {
GCMChannelStatusSyncer( GCMChannelStatusSyncer(
GCMDriver* driver, GCMDriver* driver,
PrefService* prefs, PrefService* prefs,
const std::string& channel_status_request_url,
const std::string& user_agent,
const scoped_refptr<net::URLRequestContextGetter>& request_context); const scoped_refptr<net::URLRequestContextGetter>& request_context);
~GCMChannelStatusSyncer(); ~GCMChannelStatusSyncer();
...@@ -72,6 +74,8 @@ class GCMChannelStatusSyncer { ...@@ -72,6 +74,8 @@ class GCMChannelStatusSyncer {
// GCMDriver owns GCMChannelStatusSyncer instance. // GCMDriver owns GCMChannelStatusSyncer instance.
GCMDriver* driver_; GCMDriver* driver_;
PrefService* prefs_; PrefService* prefs_;
const std::string channel_status_request_url_;
const std::string user_agent_;
scoped_refptr<net::URLRequestContextGetter> request_context_; scoped_refptr<net::URLRequestContextGetter> request_context_;
scoped_ptr<GCMChannelStatusRequest> request_; scoped_ptr<GCMChannelStatusRequest> request_;
......
...@@ -335,6 +335,8 @@ void GCMDriverDesktop::IOWorker::RemoveAccountMapping( ...@@ -335,6 +335,8 @@ void GCMDriverDesktop::IOWorker::RemoveAccountMapping(
GCMDriverDesktop::GCMDriverDesktop( GCMDriverDesktop::GCMDriverDesktop(
scoped_ptr<GCMClientFactory> gcm_client_factory, scoped_ptr<GCMClientFactory> gcm_client_factory,
const GCMClient::ChromeBuildInfo& chrome_build_info, const GCMClient::ChromeBuildInfo& chrome_build_info,
const std::string& channel_status_request_url,
const std::string& user_agent,
PrefService* prefs, PrefService* prefs,
const base::FilePath& store_path, const base::FilePath& store_path,
const scoped_refptr<net::URLRequestContextGetter>& request_context, const scoped_refptr<net::URLRequestContextGetter>& request_context,
...@@ -342,7 +344,11 @@ GCMDriverDesktop::GCMDriverDesktop( ...@@ -342,7 +344,11 @@ GCMDriverDesktop::GCMDriverDesktop(
const scoped_refptr<base::SequencedTaskRunner>& io_thread, const scoped_refptr<base::SequencedTaskRunner>& io_thread,
const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner) const scoped_refptr<base::SequencedTaskRunner>& blocking_task_runner)
: gcm_channel_status_syncer_( : gcm_channel_status_syncer_(
new GCMChannelStatusSyncer(this, prefs, request_context)), new GCMChannelStatusSyncer(this,
prefs,
channel_status_request_url,
user_agent,
request_context)),
signed_in_(false), signed_in_(false),
gcm_started_(false), gcm_started_(false),
gcm_enabled_(true), gcm_enabled_(true),
......
...@@ -48,6 +48,8 @@ class GCMDriverDesktop : public GCMDriver { ...@@ -48,6 +48,8 @@ class GCMDriverDesktop : public GCMDriver {
GCMDriverDesktop( GCMDriverDesktop(
scoped_ptr<GCMClientFactory> gcm_client_factory, scoped_ptr<GCMClientFactory> gcm_client_factory,
const GCMClient::ChromeBuildInfo& chrome_build_info, const GCMClient::ChromeBuildInfo& chrome_build_info,
const std::string& channel_status_request_url,
const std::string& user_agent,
PrefService* prefs, PrefService* prefs,
const base::FilePath& store_path, const base::FilePath& store_path,
const scoped_refptr<net::URLRequestContextGetter>& request_context, const scoped_refptr<net::URLRequestContextGetter>& request_context,
......
...@@ -233,11 +233,13 @@ void GCMDriverTest::CreateDriver( ...@@ -233,11 +233,13 @@ void GCMDriverTest::CreateDriver(
new net::TestURLRequestContextGetter(io_thread_.message_loop_proxy()); new net::TestURLRequestContextGetter(io_thread_.message_loop_proxy());
// TODO(johnme): Need equivalent test coverage of GCMDriverAndroid. // TODO(johnme): Need equivalent test coverage of GCMDriverAndroid.
driver_.reset(new GCMDriverDesktop( driver_.reset(new GCMDriverDesktop(
scoped_ptr<GCMClientFactory>(new FakeGCMClientFactory( scoped_ptr<GCMClientFactory>(
gcm_client_start_mode, new FakeGCMClientFactory(gcm_client_start_mode,
base::MessageLoopProxy::current(), base::MessageLoopProxy::current(),
io_thread_.message_loop_proxy())).Pass(), io_thread_.message_loop_proxy())).Pass(),
GCMClient::ChromeBuildInfo(), GCMClient::ChromeBuildInfo(),
"http://channel.status.request.url",
"user-agent-string",
&prefs_, &prefs_,
temp_dir_.path(), temp_dir_.path(),
request_context, request_context,
......
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