Index: sync/notifier/gcm_network_channel.cc |
diff --git a/sync/notifier/gcm_network_channel.cc b/sync/notifier/gcm_network_channel.cc |
index 3805d0c9508d1f351d87bbb4ad795ece9781f150..484ea057c855740ed1ee7fe43463f06a0455d726 100644 |
--- a/sync/notifier/gcm_network_channel.cc |
+++ b/sync/notifier/gcm_network_channel.cc |
@@ -8,7 +8,7 @@ |
#include "base/sha1.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/string_util.h" |
-#if !defined(ANDROID) |
+#if !defined(OS_ANDROID) |
// channel_common.proto defines ANDROID constant that conflicts with Android |
// build. At the same time TiclInvalidationService is not used on Android so it |
// is safe to exclude these protos from Android build. |
@@ -100,53 +100,6 @@ void RecordOutgoingMessageStatus(OutgoingMessageStatus status) { |
} // namespace |
-GCMNetworkChannelDiagnostic::GCMNetworkChannelDiagnostic( |
- GCMNetworkChannel* parent) |
- : parent_(parent), |
- last_message_empty_echo_token_(false), |
- last_post_response_code_(0), |
- registration_result_(gcm::GCMClient::UNKNOWN_ERROR), |
- sent_messages_count_(0) {} |
- |
-scoped_ptr<base::DictionaryValue> |
-GCMNetworkChannelDiagnostic::CollectDebugData() const { |
- scoped_ptr<base::DictionaryValue> status(new base::DictionaryValue); |
- status->SetString("GCMNetworkChannel.Channel", "GCM"); |
- std::string reg_id_hash = base::SHA1HashString(registration_id_); |
- status->SetString("GCMNetworkChannel.HashedRegistrationID", |
- base::HexEncode(reg_id_hash.c_str(), reg_id_hash.size())); |
- status->SetString("GCMNetworkChannel.RegistrationResult", |
- GCMClientResultToString(registration_result_)); |
- status->SetBoolean("GCMNetworkChannel.HadLastMessageEmptyEchoToken", |
- last_message_empty_echo_token_); |
- status->SetString( |
- "GCMNetworkChannel.LastMessageReceivedTime", |
- base::TimeFormatShortDateAndTime(last_message_received_time_)); |
- status->SetInteger("GCMNetworkChannel.LastPostResponseCode", |
- last_post_response_code_); |
- status->SetInteger("GCMNetworkChannel.SentMessages", sent_messages_count_); |
- status->SetInteger("GCMNetworkChannel.ReceivedMessages", |
- parent_->GetReceivedMessagesCount()); |
- return status.Pass(); |
-} |
- |
-std::string GCMNetworkChannelDiagnostic::GCMClientResultToString( |
- const gcm::GCMClient::Result result) const { |
-#define ENUM_CASE(x) case x: return #x; break; |
- switch (result) { |
- ENUM_CASE(gcm::GCMClient::SUCCESS); |
- ENUM_CASE(gcm::GCMClient::NETWORK_ERROR); |
- ENUM_CASE(gcm::GCMClient::SERVER_ERROR); |
- ENUM_CASE(gcm::GCMClient::TTL_EXCEEDED); |
- ENUM_CASE(gcm::GCMClient::UNKNOWN_ERROR); |
- ENUM_CASE(gcm::GCMClient::NOT_SIGNED_IN); |
- ENUM_CASE(gcm::GCMClient::INVALID_PARAMETER); |
- ENUM_CASE(gcm::GCMClient::ASYNC_OPERATION_PENDING); |
- } |
- NOTREACHED(); |
- return ""; |
-} |
- |
GCMNetworkChannel::GCMNetworkChannel( |
scoped_refptr<net::URLRequestContextGetter> request_context_getter, |
scoped_ptr<GCMNetworkChannelDelegate> delegate) |
@@ -164,22 +117,6 @@ GCMNetworkChannel::~GCMNetworkChannel() { |
net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); |
} |
-void GCMNetworkChannel::UpdateCredentials( |
- const std::string& email, |
- const std::string& token) { |
- // Do nothing. We get access token by requesting it for every message. |
-} |
- |
-void GCMNetworkChannel::RequestDetailedStatus( |
- base::Callback<void(const base::DictionaryValue&)> callback) { |
- callback.Run(*diagnostic_info_.CollectDebugData()); |
-} |
- |
-void GCMNetworkChannel::ResetRegisterBackoffEntryForTest( |
- const net::BackoffEntry::Policy* policy) { |
- register_backoff_entry_.reset(new net::BackoffEntry(policy)); |
-} |
- |
void GCMNetworkChannel::Register() { |
delegate_->Register(base::Bind(&GCMNetworkChannel::OnRegisterComplete, |
weak_factory_.GetWeakPtr())); |
@@ -235,13 +172,6 @@ void GCMNetworkChannel::SendMessage(const std::string& message) { |
} |
} |
-void GCMNetworkChannel::SetMessageReceiver( |
- invalidation::MessageCallback* incoming_receiver) { |
- delegate_->SetMessageReceiver(base::Bind( |
- &GCMNetworkChannel::OnIncomingMessage, weak_factory_.GetWeakPtr())); |
- SyncNetworkChannel::SetMessageReceiver(incoming_receiver); |
-} |
- |
void GCMNetworkChannel::RequestAccessToken() { |
DCHECK(CalledOnValidThread()); |
delegate_->RequestToken(base::Bind(&GCMNetworkChannel::OnGetTokenComplete, |
@@ -290,9 +220,39 @@ void GCMNetworkChannel::OnGetTokenComplete( |
cached_message_.clear(); |
} |
+void GCMNetworkChannel::OnURLFetchComplete(const net::URLFetcher* source) { |
+ DCHECK(CalledOnValidThread()); |
+ DCHECK_EQ(fetcher_, source); |
+ // Free fetcher at the end of function. |
+ scoped_ptr<net::URLFetcher> fetcher = fetcher_.Pass(); |
+ |
+ net::URLRequestStatus status = fetcher->GetStatus(); |
+ diagnostic_info_.last_post_response_code_ = |
+ status.is_success() ? source->GetResponseCode() : status.error(); |
+ |
+ if (status.is_success() && |
+ fetcher->GetResponseCode() == net::HTTP_UNAUTHORIZED) { |
+ DVLOG(1) << "URLFetcher failure: HTTP_UNAUTHORIZED"; |
+ delegate_->InvalidateToken(access_token_); |
+ } |
+ |
+ if (!status.is_success() || |
+ (fetcher->GetResponseCode() != net::HTTP_OK && |
+ fetcher->GetResponseCode() != net::HTTP_NO_CONTENT)) { |
+ DVLOG(1) << "URLFetcher failure"; |
+ RecordOutgoingMessageStatus(POST_FAILURE); |
+ NotifyStateChange(TRANSIENT_INVALIDATION_ERROR); |
+ return; |
+ } |
+ |
+ RecordOutgoingMessageStatus(OUTGOING_MESSAGE_SUCCESS); |
+ NotifyStateChange(INVALIDATIONS_ENABLED); |
+ DVLOG(2) << "URLFetcher success"; |
+} |
+ |
void GCMNetworkChannel::OnIncomingMessage(const std::string& message, |
const std::string& echo_token) { |
-#if !defined(ANDROID) |
+#if !defined(OS_ANDROID) |
if (!echo_token.empty()) |
echo_token_ = echo_token; |
diagnostic_info_.last_message_empty_echo_token_ = echo_token.empty(); |
@@ -322,36 +282,6 @@ void GCMNetworkChannel::OnIncomingMessage(const std::string& message, |
#endif |
} |
-void GCMNetworkChannel::OnURLFetchComplete(const net::URLFetcher* source) { |
- DCHECK(CalledOnValidThread()); |
- DCHECK_EQ(fetcher_, source); |
- // Free fetcher at the end of function. |
- scoped_ptr<net::URLFetcher> fetcher = fetcher_.Pass(); |
- |
- net::URLRequestStatus status = fetcher->GetStatus(); |
- diagnostic_info_.last_post_response_code_ = |
- status.is_success() ? source->GetResponseCode() : status.error(); |
- |
- if (status.is_success() && |
- fetcher->GetResponseCode() == net::HTTP_UNAUTHORIZED) { |
- DVLOG(1) << "URLFetcher failure: HTTP_UNAUTHORIZED"; |
- delegate_->InvalidateToken(access_token_); |
- } |
- |
- if (!status.is_success() || |
- (fetcher->GetResponseCode() != net::HTTP_OK && |
- fetcher->GetResponseCode() != net::HTTP_NO_CONTENT)) { |
- DVLOG(1) << "URLFetcher failure"; |
- RecordOutgoingMessageStatus(POST_FAILURE); |
- NotifyStateChange(TRANSIENT_INVALIDATION_ERROR); |
- return; |
- } |
- |
- RecordOutgoingMessageStatus(OUTGOING_MESSAGE_SUCCESS); |
- NotifyStateChange(INVALIDATIONS_ENABLED); |
- DVLOG(2) << "URLFetcher success"; |
-} |
- |
void GCMNetworkChannel::OnNetworkChanged( |
net::NetworkChangeNotifier::ConnectionType connection_type) { |
// Network connection is restored. Let's notify cacheinvalidations so it has |
@@ -363,7 +293,7 @@ void GCMNetworkChannel::OnNetworkChanged( |
GURL GCMNetworkChannel::BuildUrl(const std::string& registration_id) { |
DCHECK(!registration_id.empty()); |
-#if !defined(ANDROID) |
+#if !defined(OS_ANDROID) |
ipc::invalidation::EndpointId endpoint_id; |
endpoint_id.set_c2dm_registration_id(registration_id); |
endpoint_id.set_client_key(std::string()); |
@@ -418,4 +348,73 @@ bool GCMNetworkChannel::Base64DecodeURLSafe(const std::string& input, |
return base::Base64Decode(padded_input, output); |
} |
+void GCMNetworkChannel::SetMessageReceiver( |
+ invalidation::MessageCallback* incoming_receiver) { |
+ delegate_->SetMessageReceiver(base::Bind( |
+ &GCMNetworkChannel::OnIncomingMessage, weak_factory_.GetWeakPtr())); |
+ SyncNetworkChannel::SetMessageReceiver(incoming_receiver); |
+} |
+ |
+void GCMNetworkChannel::RequestDetailedStatus( |
+ base::Callback<void(const base::DictionaryValue&)> callback) { |
+ callback.Run(*diagnostic_info_.CollectDebugData()); |
+} |
+ |
+void GCMNetworkChannel::UpdateCredentials(const std::string& email, |
+ const std::string& token) { |
+ // Do nothing. We get access token by requesting it for every message. |
+} |
+ |
+void GCMNetworkChannel::ResetRegisterBackoffEntryForTest( |
+ const net::BackoffEntry::Policy* policy) { |
+ register_backoff_entry_.reset(new net::BackoffEntry(policy)); |
+} |
+ |
+GCMNetworkChannelDiagnostic::GCMNetworkChannelDiagnostic( |
+ GCMNetworkChannel* parent) |
+ : parent_(parent), |
+ last_message_empty_echo_token_(false), |
+ last_post_response_code_(0), |
+ registration_result_(gcm::GCMClient::UNKNOWN_ERROR), |
+ sent_messages_count_(0) {} |
+ |
+scoped_ptr<base::DictionaryValue> |
+GCMNetworkChannelDiagnostic::CollectDebugData() const { |
+ scoped_ptr<base::DictionaryValue> status(new base::DictionaryValue); |
+ status->SetString("GCMNetworkChannel.Channel", "GCM"); |
+ std::string reg_id_hash = base::SHA1HashString(registration_id_); |
+ status->SetString("GCMNetworkChannel.HashedRegistrationID", |
+ base::HexEncode(reg_id_hash.c_str(), reg_id_hash.size())); |
+ status->SetString("GCMNetworkChannel.RegistrationResult", |
+ GCMClientResultToString(registration_result_)); |
+ status->SetBoolean("GCMNetworkChannel.HadLastMessageEmptyEchoToken", |
+ last_message_empty_echo_token_); |
+ status->SetString( |
+ "GCMNetworkChannel.LastMessageReceivedTime", |
+ base::TimeFormatShortDateAndTime(last_message_received_time_)); |
+ status->SetInteger("GCMNetworkChannel.LastPostResponseCode", |
+ last_post_response_code_); |
+ status->SetInteger("GCMNetworkChannel.SentMessages", sent_messages_count_); |
+ status->SetInteger("GCMNetworkChannel.ReceivedMessages", |
+ parent_->GetReceivedMessagesCount()); |
+ return status.Pass(); |
+} |
+ |
+std::string GCMNetworkChannelDiagnostic::GCMClientResultToString( |
+ const gcm::GCMClient::Result result) const { |
+#define ENUM_CASE(x) case x: return #x; break; |
+ switch (result) { |
+ ENUM_CASE(gcm::GCMClient::SUCCESS); |
+ ENUM_CASE(gcm::GCMClient::NETWORK_ERROR); |
+ ENUM_CASE(gcm::GCMClient::SERVER_ERROR); |
+ ENUM_CASE(gcm::GCMClient::TTL_EXCEEDED); |
+ ENUM_CASE(gcm::GCMClient::UNKNOWN_ERROR); |
+ ENUM_CASE(gcm::GCMClient::NOT_SIGNED_IN); |
+ ENUM_CASE(gcm::GCMClient::INVALID_PARAMETER); |
+ ENUM_CASE(gcm::GCMClient::ASYNC_OPERATION_PENDING); |
+ } |
+ NOTREACHED(); |
+ return ""; |
+} |
+ |
} // namespace syncer |