Chromium Code Reviews| 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..41ca43696d3dfe95a4883cf144fff635eb0e3147 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_COUNTS("GCM.DataMessageReceived", 1); |
| + 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)) |
|
Peter Beverloo
2016/12/07 19:36:20
Should we LOG(WARN)? I'm not sure if that's useful
johnme
2016/12/07 20:00:37
Well, or just that GCM changed the format of this
|
| + 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, |