Index: components/gcm_driver/gcm_stats_recorder_android.cc |
diff --git a/components/gcm_driver/gcm_stats_recorder_android.cc b/components/gcm_driver/gcm_stats_recorder_android.cc |
index 3e2d1ca1bda0fadfb533e4377705b7cac8fe13ad..918638b5c1fe704300dba5a43d6a2d1625628ce6 100644 |
--- a/components/gcm_driver/gcm_stats_recorder_android.cc |
+++ b/components/gcm_driver/gcm_stats_recorder_android.cc |
@@ -25,6 +25,7 @@ GCMStatsRecorderAndroid::~GCMStatsRecorderAndroid() {} |
void GCMStatsRecorderAndroid::Clear() { |
registration_activities_.clear(); |
receiving_activities_.clear(); |
+ decryption_failure_activities_.clear(); |
} |
void GCMStatsRecorderAndroid::CollectActivities( |
@@ -39,6 +40,10 @@ void GCMStatsRecorderAndroid::CollectActivities( |
recorded_activities->receiving_activities.begin(), |
receiving_activities_.begin(), |
receiving_activities_.end()); |
+ recorded_activities->decryption_failure_activities.insert( |
+ recorded_activities->decryption_failure_activities.begin(), |
+ decryption_failure_activities_.begin(), |
+ decryption_failure_activities_.end()); |
} |
void GCMStatsRecorderAndroid::RecordRegistrationSent( |
@@ -116,4 +121,23 @@ void GCMStatsRecorderAndroid::RecordDataMessageReceived( |
delegate_->OnActivityRecorded(); |
} |
+void GCMStatsRecorderAndroid::RecordDecryptionFailure( |
+ const std::string& app_id, |
+ GCMEncryptionProvider::DecryptionFailure reason) { |
+ if (!is_recording_) |
+ return; |
+ |
+ DecryptionFailureActivity activity; |
+ activity.app_id = app_id; |
+ activity.details = |
+ GCMEncryptionProvider::ToDecryptionFailureDetailsString(reason); |
+ |
+ decryption_failure_activities_.push_front(activity); |
+ if (decryption_failure_activities_.size() > MAX_LOGGED_ACTIVITY_COUNT) |
+ decryption_failure_activities_.pop_back(); |
+ |
+ if (delegate_) |
+ delegate_->OnActivityRecorded(); |
+} |
+ |
} // namespace gcm |