Chromium Code Reviews| Index: chrome/browser/services/gcm/gcm_profile_service.cc |
| diff --git a/chrome/browser/services/gcm/gcm_profile_service.cc b/chrome/browser/services/gcm/gcm_profile_service.cc |
| index 376f6abc9e3eb7400d5f6459f419185e1993e3ed..daa1a6e6b66fb634adda70ca787253a243ed5640 100644 |
| --- a/chrome/browser/services/gcm/gcm_profile_service.cc |
| +++ b/chrome/browser/services/gcm/gcm_profile_service.cc |
| @@ -14,6 +14,7 @@ |
| #include "base/path_service.h" |
| #include "base/prefs/pref_service.h" |
| #include "base/strings/string_number_conversions.h" |
| +#include "base/strings/string_util.h" |
| #include "base/threading/sequenced_worker_pool.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| #if !defined(OS_ANDROID) |
| @@ -274,7 +275,8 @@ class GCMProfileService::IOWorker |
| void Send(const std::string& app_id, |
| const std::string& receiver_id, |
| const GCMClient::OutgoingMessage& message); |
| - void RequestGCMStatistics(); |
| + void RequestGCMStatistics(bool clear_logs); |
| + void SetGCMRecording(bool recording); |
| // For testing purpose. Can be called from UI thread. Use with care. |
| GCMClient* gcm_client_for_testing() const { return gcm_client_.get(); } |
| @@ -464,13 +466,33 @@ void GCMProfileService::IOWorker::Send( |
| gcm_client_->Send(app_id, receiver_id, message); |
| } |
| -void GCMProfileService::IOWorker::RequestGCMStatistics() { |
| +void GCMProfileService::IOWorker::RequestGCMStatistics(bool clear_logs) { |
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| gcm::GCMClient::GCMStatistics stats; |
| if (gcm_client_.get()) { |
| + if (clear_logs) |
| + gcm_client_->ClearActivityLogs(); |
| + stats = gcm_client_->GetStatistics(); |
| stats.gcm_client_created = true; |
| + } |
| + |
| + content::BrowserThread::PostTask( |
| + content::BrowserThread::UI, |
| + FROM_HERE, |
| + base::Bind(&GCMProfileService::RequestGCMStatisticsFinished, |
| + service_, |
| + stats)); |
| +} |
| + |
| +void GCMProfileService::IOWorker::SetGCMRecording(bool recording) { |
| + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| + gcm::GCMClient::GCMStatistics stats; |
| + |
| + if (gcm_client_.get()) { |
| + gcm_client_->SetRecording(recording); |
| stats = gcm_client_->GetStatistics(); |
| + stats.gcm_client_created = true; |
| } |
| content::BrowserThread::PostTask( |
| @@ -790,7 +812,7 @@ bool GCMProfileService::IsGCMClientReady() const { |
| } |
| void GCMProfileService::RequestGCMStatistics( |
| - RequestGCMStatisticsCallback callback) { |
| + RequestGCMStatisticsCallback callback, bool clear_logs) { |
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| DCHECK(!callback.is_null()); |
| @@ -799,7 +821,21 @@ void GCMProfileService::RequestGCMStatistics( |
| content::BrowserThread::IO, |
| FROM_HERE, |
| base::Bind(&GCMProfileService::IOWorker::RequestGCMStatistics, |
| - io_worker_)); |
| + io_worker_, |
| + clear_logs)); |
| +} |
| + |
| +void GCMProfileService::SetGCMRecording( |
| + RequestGCMStatisticsCallback callback, bool recording) { |
| + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| + |
| + request_gcm_statistics_callback_ = callback; |
| + content::BrowserThread::PostTask( |
| + content::BrowserThread::IO, |
| + FROM_HERE, |
| + base::Bind(&GCMProfileService::IOWorker::SetGCMRecording, |
| + io_worker_, |
| + recording)); |
| } |
| void GCMProfileService::Observe(int type, |
| @@ -1192,6 +1228,12 @@ void GCMProfileService::RequestGCMStatisticsFinished( |
| GCMClient::GCMStatistics stats) { |
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
| + std::vector<std::string> ids; |
| + for (RegistrationInfoMap::const_iterator it = registration_info_map_.begin(); |
|
jianli
2014/03/21 18:25:27
FYI, the registration info map will be moved to GC
juyik
2014/03/26 04:06:03
Done.
|
| + it != registration_info_map_.end(); ++it) { |
| + ids.push_back(it->first); |
| + } |
| + stats.app_ids_cached = JoinString(ids, ',');; |
| request_gcm_statistics_callback_.Run(stats); |
| } |