| Index: components/gcm_driver/gcm_client_impl.cc
|
| diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc
|
| index bd44af2c7a28b9843ef1b504b8618534dac6cb39..a18b5850b5d8bb4e78dca77ee4628e696dc3f20d 100644
|
| --- a/components/gcm_driver/gcm_client_impl.cc
|
| +++ b/components/gcm_driver/gcm_client_impl.cc
|
| @@ -82,6 +82,7 @@ enum ResetStoreError {
|
| const char kGCMScope[] = "GCM";
|
| const int kMaxRegistrationRetries = 5;
|
| const int kMaxUnregistrationRetries = 5;
|
| +const char kDeletedCountKey[] = "total_deleted";
|
| const char kMessageTypeDataMessage[] = "gcm";
|
| const char kMessageTypeDeletedMessagesKey[] = "deleted_messages";
|
| const char kMessageTypeKey[] = "message_type";
|
| @@ -1335,10 +1336,7 @@ void GCMClientImpl::HandleIncomingMessage(const gcm::MCSMessage& message) {
|
| message_data);
|
| break;
|
| case DELETED_MESSAGES:
|
| - recorder_.RecordDataMessageReceived(app_id, data_message_stanza.from(),
|
| - data_message_stanza.ByteSize(), true,
|
| - GCMStatsRecorder::DELETED_MESSAGES);
|
| - delegate_->OnMessagesDeleted(app_id);
|
| + HandleIncomingDeletedMessages(app_id, data_message_stanza, message_data);
|
| break;
|
| case SEND_ERROR:
|
| HandleIncomingSendError(app_id, data_message_stanza, message_data);
|
| @@ -1401,6 +1399,14 @@ void GCMClientImpl::HandleIncomingDataMessage(
|
| }
|
| }
|
|
|
| + UMA_HISTOGRAM_BOOLEAN("GCM.DataMessageReceivedHasRegisteredApp", registered);
|
| + if (registered) {
|
| + UMA_HISTOGRAM_BOOLEAN("GCM.DataMessageReceived", true);
|
| + bool has_collapse_key =
|
| + data_message_stanza.has_token() && !data_message_stanza.token().empty();
|
| + UMA_HISTOGRAM_BOOLEAN("GCM.DataMessageReceivedHasCollapseKey",
|
| + has_collapse_key);
|
| + }
|
| recorder_.RecordDataMessageReceived(app_id, sender,
|
| data_message_stanza.ByteSize(), registered,
|
| GCMStatsRecorder::DATA_MESSAGE);
|
| @@ -1417,6 +1423,25 @@ void GCMClientImpl::HandleIncomingDataMessage(
|
| delegate_->OnMessageReceived(app_id, incoming_message);
|
| }
|
|
|
| +void GCMClientImpl::HandleIncomingDeletedMessages(
|
| + const std::string& app_id,
|
| + const mcs_proto::DataMessageStanza& data_message_stanza,
|
| + MessageData& message_data) {
|
| + int deleted_count = 0;
|
| + MessageData::iterator count_iter = message_data.find(kDeletedCountKey);
|
| + if (count_iter != message_data.end()) {
|
| + if (!base::StringToInt(count_iter->second, &deleted_count))
|
| + deleted_count = 0;
|
| + }
|
| + UMA_HISTOGRAM_COUNTS_1000("GCM.DeletedMessagesReceived", deleted_count);
|
| +
|
| + recorder_.RecordDataMessageReceived(app_id, data_message_stanza.from(),
|
| + data_message_stanza.ByteSize(),
|
| + true /* to_registered_app */,
|
| + GCMStatsRecorder::DELETED_MESSAGES);
|
| + delegate_->OnMessagesDeleted(app_id);
|
| +}
|
| +
|
| void GCMClientImpl::HandleIncomingSendError(
|
| const std::string& app_id,
|
| const mcs_proto::DataMessageStanza& data_message_stanza,
|
|
|