Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Side by Side Diff: google_apis/gcm/gcm_client_impl.cc

Issue 270783002: [GCM] Add more UMA to GCM (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch to land Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « google_apis/gcm/gcm_client.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "google_apis/gcm/gcm_client_impl.h" 5 #include "google_apis/gcm/gcm_client_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 }; 62 };
63 63
64 // Indicates a message type of the received message. 64 // Indicates a message type of the received message.
65 enum MessageType { 65 enum MessageType {
66 UNKNOWN, // Undetermined type. 66 UNKNOWN, // Undetermined type.
67 DATA_MESSAGE, // Regular data message. 67 DATA_MESSAGE, // Regular data message.
68 DELETED_MESSAGES, // Messages were deleted on the server. 68 DELETED_MESSAGES, // Messages were deleted on the server.
69 SEND_ERROR, // Error sending a message. 69 SEND_ERROR, // Error sending a message.
70 }; 70 };
71 71
72 enum OutgoingMessageTTLCategory {
73 TTL_ZERO,
74 TTL_LESS_THAN_OR_EQUAL_TO_ONE_MINUTE,
75 TTL_LESS_THAN_OR_EQUAL_TO_ONE_HOUR,
76 TTL_LESS_THAN_OR_EQUAL_TO_ONE_DAY,
77 TTL_LESS_THAN_OR_EQUAL_TO_ONE_WEEK,
78 TTL_MORE_THAN_ONE_WEEK,
79 TTL_MAXIMUM,
80 // NOTE: always keep this entry at the end. Add new TTL category only
81 // immediately above this line. Make sure to update the corresponding
82 // histogram enum accordingly.
83 TTL_CATEGORY_COUNT
84 };
85
72 // MCS endpoints. SSL Key pinning is done automatically due to the *.google.com 86 // MCS endpoints. SSL Key pinning is done automatically due to the *.google.com
73 // pinning rule. 87 // pinning rule.
74 // Note: modifying the endpoints will affect the ability to compare the 88 // Note: modifying the endpoints will affect the ability to compare the
75 // GCM.CurrentEnpoint histogram across versions. 89 // GCM.CurrentEnpoint histogram across versions.
76 const char kMCSEndpointMain[] = "https://mtalk.google.com:5228"; 90 const char kMCSEndpointMain[] = "https://mtalk.google.com:5228";
77 const char kMCSEndpointFallback[] = "https://mtalk.google.com:443"; 91 const char kMCSEndpointFallback[] = "https://mtalk.google.com:443";
78 92
79 const int kMaxRegistrationRetries = 5; 93 const int kMaxRegistrationRetries = 5;
80 const char kMessageTypeDataMessage[] = "gcm"; 94 const char kMessageTypeDataMessage[] = "gcm";
81 const char kMessageTypeDeletedMessagesKey[] = "deleted_messages"; 95 const char kMessageTypeDeletedMessagesKey[] = "deleted_messages";
(...skipping 28 matching lines...) Expand all
110 MessageType DecodeMessageType(const std::string& value) { 124 MessageType DecodeMessageType(const std::string& value) {
111 if (kMessageTypeDeletedMessagesKey == value) 125 if (kMessageTypeDeletedMessagesKey == value)
112 return DELETED_MESSAGES; 126 return DELETED_MESSAGES;
113 if (kMessageTypeSendErrorKey == value) 127 if (kMessageTypeSendErrorKey == value)
114 return SEND_ERROR; 128 return SEND_ERROR;
115 if (kMessageTypeDataMessage == value) 129 if (kMessageTypeDataMessage == value)
116 return DATA_MESSAGE; 130 return DATA_MESSAGE;
117 return UNKNOWN; 131 return UNKNOWN;
118 } 132 }
119 133
134 void RecordOutgoingMessageToUMA(
135 const gcm::GCMClient::OutgoingMessage& message) {
136 OutgoingMessageTTLCategory ttl_category;
137 if (message.time_to_live == 0)
138 ttl_category = TTL_ZERO;
139 else if (message.time_to_live <= 60 )
140 ttl_category = TTL_LESS_THAN_OR_EQUAL_TO_ONE_MINUTE;
141 else if (message.time_to_live <= 60 * 60)
142 ttl_category = TTL_LESS_THAN_OR_EQUAL_TO_ONE_HOUR;
143 else if (message.time_to_live <= 24 * 60 * 60)
144 ttl_category = TTL_LESS_THAN_OR_EQUAL_TO_ONE_DAY;
145 else if (message.time_to_live <= 7 * 24 * 60 * 60)
146 ttl_category = TTL_LESS_THAN_OR_EQUAL_TO_ONE_WEEK;
147 else if (message.time_to_live < gcm::GCMClient::OutgoingMessage::kMaximumTTL)
148 ttl_category = TTL_MORE_THAN_ONE_WEEK;
149 else
150 ttl_category = TTL_MAXIMUM;
151
152 UMA_HISTOGRAM_ENUMERATION("GCM.GCMOutgoingMessageTTLCategory",
153 ttl_category,
154 TTL_CATEGORY_COUNT);
155 }
156
120 } // namespace 157 } // namespace
121 158
122 GCMInternalsBuilder::GCMInternalsBuilder() {} 159 GCMInternalsBuilder::GCMInternalsBuilder() {}
123 GCMInternalsBuilder::~GCMInternalsBuilder() {} 160 GCMInternalsBuilder::~GCMInternalsBuilder() {}
124 161
125 scoped_ptr<base::Clock> GCMInternalsBuilder::BuildClock() { 162 scoped_ptr<base::Clock> GCMInternalsBuilder::BuildClock() {
126 return make_scoped_ptr<base::Clock>(new base::DefaultClock()); 163 return make_scoped_ptr<base::Clock>(new base::DefaultClock());
127 } 164 }
128 165
129 scoped_ptr<MCSClient> GCMInternalsBuilder::BuildMCSClient( 166 scoped_ptr<MCSClient> GCMInternalsBuilder::BuildMCSClient(
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 void GCMClientImpl::OnGCMStoreDestroyed(bool success) { 587 void GCMClientImpl::OnGCMStoreDestroyed(bool success) {
551 DLOG_IF(ERROR, !success) << "GCM store failed to be destroyed!"; 588 DLOG_IF(ERROR, !success) << "GCM store failed to be destroyed!";
552 UMA_HISTOGRAM_BOOLEAN("GCM.StoreDestroySucceeded", success); 589 UMA_HISTOGRAM_BOOLEAN("GCM.StoreDestroySucceeded", success);
553 } 590 }
554 591
555 void GCMClientImpl::Send(const std::string& app_id, 592 void GCMClientImpl::Send(const std::string& app_id,
556 const std::string& receiver_id, 593 const std::string& receiver_id,
557 const OutgoingMessage& message) { 594 const OutgoingMessage& message) {
558 DCHECK_EQ(state_, READY); 595 DCHECK_EQ(state_, READY);
559 596
597 RecordOutgoingMessageToUMA(message);
598
560 mcs_proto::DataMessageStanza stanza; 599 mcs_proto::DataMessageStanza stanza;
561 stanza.set_ttl(message.time_to_live); 600 stanza.set_ttl(message.time_to_live);
562 stanza.set_sent(clock_->Now().ToInternalValue() / 601 stanza.set_sent(clock_->Now().ToInternalValue() /
563 base::Time::kMicrosecondsPerSecond); 602 base::Time::kMicrosecondsPerSecond);
564 stanza.set_id(message.id); 603 stanza.set_id(message.id);
565 stanza.set_from(kSendMessageFromValue); 604 stanza.set_from(kSendMessageFromValue);
566 stanza.set_to(receiver_id); 605 stanza.set_to(receiver_id);
567 stanza.set_category(app_id); 606 stanza.set_category(app_id);
568 607
569 for (MessageData::const_iterator iter = message.data.begin(); 608 for (MessageData::const_iterator iter = message.data.begin();
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 803
765 recorder_.RecordIncomingSendError( 804 recorder_.RecordIncomingSendError(
766 data_message_stanza.category(), 805 data_message_stanza.category(),
767 data_message_stanza.to(), 806 data_message_stanza.to(),
768 data_message_stanza.id()); 807 data_message_stanza.id());
769 delegate_->OnMessageSendError(data_message_stanza.category(), 808 delegate_->OnMessageSendError(data_message_stanza.category(),
770 send_error_details); 809 send_error_details);
771 } 810 }
772 811
773 } // namespace gcm 812 } // namespace gcm
OLDNEW
« no previous file with comments | « google_apis/gcm/gcm_client.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698