| Index: google_apis/gcm/gcm_client_impl.cc
|
| diff --git a/google_apis/gcm/gcm_client_impl.cc b/google_apis/gcm/gcm_client_impl.cc
|
| index a0a2142f2167aca1d681e7a320605bdba02f7e11..00134f780c82ade7aa1cd38a3c7883dca48f24c6 100644
|
| --- a/google_apis/gcm/gcm_client_impl.cc
|
| +++ b/google_apis/gcm/gcm_client_impl.cc
|
| @@ -69,6 +69,20 @@ enum MessageType {
|
| SEND_ERROR, // Error sending a message.
|
| };
|
|
|
| +enum OutgoingMessageTTLCategory {
|
| + TTL_ZERO,
|
| + TTL_LESS_THAN_OR_EQUAL_TO_ONE_MINUTE,
|
| + TTL_LESS_THAN_OR_EQUAL_TO_ONE_HOUR,
|
| + TTL_LESS_THAN_OR_EQUAL_TO_ONE_DAY,
|
| + TTL_LESS_THAN_OR_EQUAL_TO_ONE_WEEK,
|
| + TTL_MORE_THAN_ONE_WEEK,
|
| + TTL_MAXIMUM,
|
| + // NOTE: always keep this entry at the end. Add new TTL category only
|
| + // immediately above this line. Make sure to update the corresponding
|
| + // histogram enum accordingly.
|
| + TTL_CATEGORY_COUNT
|
| +};
|
| +
|
| // MCS endpoints. SSL Key pinning is done automatically due to the *.google.com
|
| // pinning rule.
|
| // Note: modifying the endpoints will affect the ability to compare the
|
| @@ -117,6 +131,29 @@ MessageType DecodeMessageType(const std::string& value) {
|
| return UNKNOWN;
|
| }
|
|
|
| +void RecordOutgoingMessageToUMA(
|
| + const gcm::GCMClient::OutgoingMessage& message) {
|
| + OutgoingMessageTTLCategory ttl_category;
|
| + if (message.time_to_live == 0)
|
| + ttl_category = TTL_ZERO;
|
| + else if (message.time_to_live <= 60 )
|
| + ttl_category = TTL_LESS_THAN_OR_EQUAL_TO_ONE_MINUTE;
|
| + else if (message.time_to_live <= 60 * 60)
|
| + ttl_category = TTL_LESS_THAN_OR_EQUAL_TO_ONE_HOUR;
|
| + else if (message.time_to_live <= 24 * 60 * 60)
|
| + ttl_category = TTL_LESS_THAN_OR_EQUAL_TO_ONE_DAY;
|
| + else if (message.time_to_live <= 7 * 24 * 60 * 60)
|
| + ttl_category = TTL_LESS_THAN_OR_EQUAL_TO_ONE_WEEK;
|
| + else if (message.time_to_live < gcm::GCMClient::OutgoingMessage::kMaximumTTL)
|
| + ttl_category = TTL_MORE_THAN_ONE_WEEK;
|
| + else
|
| + ttl_category = TTL_MAXIMUM;
|
| +
|
| + UMA_HISTOGRAM_ENUMERATION("GCM.GCMOutgoingMessageTTLCategory",
|
| + ttl_category,
|
| + TTL_CATEGORY_COUNT);
|
| +}
|
| +
|
| } // namespace
|
|
|
| GCMInternalsBuilder::GCMInternalsBuilder() {}
|
| @@ -557,6 +594,8 @@ void GCMClientImpl::Send(const std::string& app_id,
|
| const OutgoingMessage& message) {
|
| DCHECK_EQ(state_, READY);
|
|
|
| + RecordOutgoingMessageToUMA(message);
|
| +
|
| mcs_proto::DataMessageStanza stanza;
|
| stanza.set_ttl(message.time_to_live);
|
| stanza.set_sent(clock_->Now().ToInternalValue() /
|
|
|