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

Unified Diff: google_apis/gcm/gcm_client_impl.cc

Issue 202083005: Add activity recording capability to gcm internals page. User can refresh, start/stop recording, an… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 6 years, 9 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 side-by-side diff with in-line comments
Download patch
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 0c9d0fa93713a178610c56529e0e201343eab0ab..383fbb2c188c457481d99118ed6b446159c41e2a 100644
--- a/google_apis/gcm/gcm_client_impl.cc
+++ b/google_apis/gcm/gcm_client_impl.cc
@@ -4,6 +4,8 @@
#include "google_apis/gcm/gcm_client_impl.h"
+#include <deque>
+
#include "base/bind.h"
#include "base/files/file_path.h"
#include "base/logging.h"
@@ -11,6 +13,7 @@
#include "base/message_loop/message_loop.h"
#include "base/metrics/histogram.h"
#include "base/sequenced_task_runner.h"
+#include "base/strings/stringprintf.h"
#include "base/time/default_clock.h"
#include "google_apis/gcm/base/mcs_message.h"
#include "google_apis/gcm/base/mcs_util.h"
@@ -20,6 +23,7 @@
#include "google_apis/gcm/engine/mcs_client.h"
#include "google_apis/gcm/engine/registration_request.h"
#include "google_apis/gcm/engine/unregistration_request.h"
+#include "google_apis/gcm/gcm_stats_recorder.h"
#include "google_apis/gcm/protocol/mcs.pb.h"
#include "net/http/http_network_session.h"
#include "net/url_request/url_request_context.h"
@@ -196,7 +200,8 @@ void GCMClientImpl::InitializeMCSClient(
mcs_client_.reset(new MCSClient(chrome_build_proto_.chrome_version(),
clock_.get(),
connection_factory_.get(),
- gcm_store_.get()));
+ gcm_store_.get(),
+ &recorder_));
}
mcs_client_->Initialize(
@@ -250,7 +255,9 @@ void GCMClientImpl::StartCheckin(const CheckinInfo& checkin_info) {
checkin_info.android_id,
checkin_info.secret,
account_ids_,
- url_request_context_getter_));
+ url_request_context_getter_,
+ &recorder_));
+ recorder_.RecordCheckin(checkin_info.android_id, GCMStatsRecorder::Initiated);
checkin_request_->Start();
}
@@ -318,8 +325,10 @@ void GCMClientImpl::Register(const std::string& app_id,
weak_ptr_factory_.GetWeakPtr(),
app_id),
kMaxRegistrationRetries,
- url_request_context_getter_);
+ url_request_context_getter_,
+ &recorder_);
pending_registrations_[app_id] = registration_request;
+ recorder_.RecordRegister(app_id, GCMStatsRecorder::Initiated, sender_ids);
registration_request->Start();
}
@@ -413,6 +422,8 @@ void GCMClientImpl::Send(const std::string& app_id,
MCSMessage mcs_message(stanza);
DVLOG(1) << "MCS message size: " << mcs_message.size();
+ recorder_.RecordSend(app_id, GCMStatsRecorder::Initiated, receiver_id,
+ message.id, mcs_message.size());
mcs_client_->SendMessage(mcs_message);
}
@@ -434,16 +445,51 @@ std::string GCMClientImpl::GetStateString() const {
}
}
+void GCMClientImpl::SetRecording(bool recording) {
+ recorder_.SetRecording(recording);
+}
+
+void GCMClientImpl::ClearActivityLogs() {
+ recorder_.Clear();
+}
+
GCMClient::GCMStatistics GCMClientImpl::GetStatistics() const {
GCMClient::GCMStatistics stats;
+ stats.is_recording = recorder_.IsRecording();
stats.gcm_client_state = GCMClientImpl::GetStateString();
stats.connection_client_created = mcs_client_.get() != NULL;
if (mcs_client_.get()) {
stats.connection_state = mcs_client_->GetStateString();
- // TODO(juyik): add more statistics such as message metadata list, etc.
+ stats.send_queue_size = mcs_client_->GetSendQueueSize();
+ stats.unacked_queue_size = mcs_client_->GetUnackedQueueSize();
}
if (device_checkin_info_.android_id > 0)
stats.android_id = device_checkin_info_.android_id;
+
+ for (std::deque<GCMStatsRecorder::CheckinActivity>::const_iterator it
+ = recorder_.CheckinActivities().begin();
jianli 2014/03/18 23:53:23 nit: '=' should be moved to the end of previous li
juyik 2014/03/20 01:09:53 Done.
+ it != recorder_.CheckinActivities().end();
+ ++it) {
+ stats.checkins.push_back(*it);
+ }
+ for (std::deque<GCMStatsRecorder::RegisterActivity>::const_iterator it
+ = recorder_.RegisterActivities().begin();
+ it != recorder_.RegisterActivities().end();
+ ++it) {
+ stats.registers.push_back(*it);
+ }
+ for (std::deque<GCMStatsRecorder::SendMessageActivity>::const_iterator it
+ = recorder_.SendMessageActivities().begin();
+ it != recorder_.SendMessageActivities().end();
+ ++it) {
+ stats.sent_messages.push_back(*it);
+ }
+ for (std::deque<GCMStatsRecorder::ReceiveMessageActivity>::const_iterator it
+ = recorder_.ReceiveMessageActivities().begin();
+ it != recorder_.ReceiveMessageActivities().end();
+ ++it) {
+ stats.received_messages.push_back(*it);
+ }
return stats;
}
@@ -522,6 +568,11 @@ void GCMClientImpl::HandleIncomingMessage(const gcm::MCSMessage& message) {
HandleIncomingDataMessage(data_message_stanza, message_data);
break;
case DELETED_MESSAGES:
+ recorder_.RecordReceiveWithDetails(
+ GCMStatsRecorder::Success,
+ data_message_stanza.from(),
+ data_message_stanza.category(),
+ "Received DELETED MESSAGE");
delegate_->OnMessagesDeleted(data_message_stanza.category());
break;
case SEND_ERROR:
@@ -531,6 +582,11 @@ void GCMClientImpl::HandleIncomingMessage(const gcm::MCSMessage& message) {
default: // Treat default the same as UNKNOWN.
DVLOG(1) << "Unknown message_type received. Message ignored. "
<< "App ID: " << data_message_stanza.category() << ".";
+ recorder_.RecordReceiveWithDetails(
+ GCMStatsRecorder::Success,
+ data_message_stanza.from(),
+ data_message_stanza.category(),
+ "Unknown message type received");
break;
}
}
@@ -543,6 +599,9 @@ void GCMClientImpl::HandleIncomingDataMessage(
if (data_message_stanza.has_token())
incoming_message.collapse_key = data_message_stanza.token();
incoming_message.data = message_data;
+ recorder_.RecordReceiveDataMessage(incoming_message.sender_id,
+ data_message_stanza.category(),
+ incoming_message.data.size());
delegate_->OnMessageReceived(data_message_stanza.category(),
incoming_message);
}
@@ -561,6 +620,12 @@ void GCMClientImpl::HandleIncomingSendError(
send_error_details.additional_data.erase(iter);
}
+ recorder_.RecordReceiveWithDetails(
+ GCMStatsRecorder::Error,
+ std::string(),
+ data_message_stanza.category(),
+ base::StringPrintf("Send nessage server error. Message id: %s",
+ send_error_details.message_id.c_str()));
delegate_->OnMessageSendError(data_message_stanza.category(),
send_error_details);
}

Powered by Google App Engine
This is Rietveld 408576698