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, |