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

Side by Side Diff: chrome/browser/services/gcm/gcm_service.cc

Issue 266913015: Enable auto-refreshing of the gcm-internals page whenever a GCM activity is recorded. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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
« no previous file with comments | « no previous file | google_apis/gcm/gcm_client.h » ('j') | google_apis/gcm/gcm_client.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/services/gcm/gcm_service.h" 5 #include "chrome/browser/services/gcm/gcm_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 const std::string& message_id, 139 const std::string& message_id,
140 GCMClient::Result result) OVERRIDE; 140 GCMClient::Result result) OVERRIDE;
141 virtual void OnMessageReceived( 141 virtual void OnMessageReceived(
142 const std::string& app_id, 142 const std::string& app_id,
143 const GCMClient::IncomingMessage& message) OVERRIDE; 143 const GCMClient::IncomingMessage& message) OVERRIDE;
144 virtual void OnMessagesDeleted(const std::string& app_id) OVERRIDE; 144 virtual void OnMessagesDeleted(const std::string& app_id) OVERRIDE;
145 virtual void OnMessageSendError( 145 virtual void OnMessageSendError(
146 const std::string& app_id, 146 const std::string& app_id,
147 const GCMClient::SendErrorDetails& send_error_details) OVERRIDE; 147 const GCMClient::SendErrorDetails& send_error_details) OVERRIDE;
148 virtual void OnGCMReady() OVERRIDE; 148 virtual void OnGCMReady() OVERRIDE;
149 virtual void OnActivityRecorded() OVERRIDE;
149 150
150 // Called on IO thread. 151 // Called on IO thread.
151 void Initialize(scoped_ptr<GCMClientFactory> gcm_client_factory, 152 void Initialize(scoped_ptr<GCMClientFactory> gcm_client_factory,
152 const base::FilePath& store_path, 153 const base::FilePath& store_path,
153 const std::vector<std::string>& account_ids, 154 const std::vector<std::string>& account_ids,
154 const scoped_refptr<net::URLRequestContextGetter>& 155 const scoped_refptr<net::URLRequestContextGetter>&
155 url_request_context_getter); 156 url_request_context_getter);
156 void Load(const base::WeakPtr<GCMService>& service); 157 void Load(const base::WeakPtr<GCMService>& service);
157 void Stop(); 158 void Stop();
158 void CheckOut(); 159 void CheckOut();
159 void Register(const std::string& app_id, 160 void Register(const std::string& app_id,
160 const std::vector<std::string>& sender_ids); 161 const std::vector<std::string>& sender_ids);
161 void Unregister(const std::string& app_id); 162 void Unregister(const std::string& app_id);
162 void Send(const std::string& app_id, 163 void Send(const std::string& app_id,
163 const std::string& receiver_id, 164 const std::string& receiver_id,
164 const GCMClient::OutgoingMessage& message); 165 const GCMClient::OutgoingMessage& message);
165 void GetGCMStatistics(bool clear_logs); 166 void GetGCMStatistics(bool clear_logs);
166 void SetGCMRecording(bool recording); 167 void SetGCMRecording(bool recording);
167 168
168 // For testing purpose. Can be called from UI thread. Use with care. 169 // For testing purpose. Can be called from UI thread. Use with care.
169 GCMClient* gcm_client_for_testing() const { return gcm_client_.get(); } 170 GCMClient* gcm_client_for_testing() const { return gcm_client_.get(); }
170 171
171 private: 172 private:
173 // Do the actual work of fetching GCM stats from GCM client and post back.
174 void DoGetGCMStatistics();
175
172 base::WeakPtr<GCMService> service_; 176 base::WeakPtr<GCMService> service_;
173 177
174 scoped_ptr<GCMClient> gcm_client_; 178 scoped_ptr<GCMClient> gcm_client_;
175 179
176 DISALLOW_COPY_AND_ASSIGN(IOWorker); 180 DISALLOW_COPY_AND_ASSIGN(IOWorker);
177 }; 181 };
178 182
179 GCMService::IOWorker::IOWorker() { 183 GCMService::IOWorker::IOWorker() {
180 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 184 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
181 } 185 }
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 send_error_details)); 293 send_error_details));
290 } 294 }
291 295
292 void GCMService::IOWorker::OnGCMReady() { 296 void GCMService::IOWorker::OnGCMReady() {
293 content::BrowserThread::PostTask(content::BrowserThread::UI, 297 content::BrowserThread::PostTask(content::BrowserThread::UI,
294 FROM_HERE, 298 FROM_HERE,
295 base::Bind(&GCMService::GCMClientReady, 299 base::Bind(&GCMService::GCMClientReady,
296 service_)); 300 service_));
297 } 301 }
298 302
303 void GCMService::IOWorker::OnActivityRecorded() {
304 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
305 // When an activity is recorded, get all the stats and refresh the UI of
306 // gcm-internals page.
307 DoGetGCMStatistics();
jianli 2014/05/06 22:54:53 Why not just calleding GetGCMStatistics with false
juyik 2014/05/07 00:07:48 Done.
308 }
309
299 void GCMService::IOWorker::Load(const base::WeakPtr<GCMService>& service) { 310 void GCMService::IOWorker::Load(const base::WeakPtr<GCMService>& service) {
300 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 311 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
301 312
302 service_ = service; 313 service_ = service;
303 gcm_client_->Load(); 314 gcm_client_->Load();
304 } 315 }
305 316
306 void GCMService::IOWorker::Stop() { 317 void GCMService::IOWorker::Stop() {
307 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 318 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
308 319
(...skipping 26 matching lines...) Expand all
335 void GCMService::IOWorker::Send(const std::string& app_id, 346 void GCMService::IOWorker::Send(const std::string& app_id,
336 const std::string& receiver_id, 347 const std::string& receiver_id,
337 const GCMClient::OutgoingMessage& message) { 348 const GCMClient::OutgoingMessage& message) {
338 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 349 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
339 350
340 gcm_client_->Send(app_id, receiver_id, message); 351 gcm_client_->Send(app_id, receiver_id, message);
341 } 352 }
342 353
343 void GCMService::IOWorker::GetGCMStatistics(bool clear_logs) { 354 void GCMService::IOWorker::GetGCMStatistics(bool clear_logs) {
344 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 355 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
345 gcm::GCMClient::GCMStatistics stats;
346 356
347 if (gcm_client_.get()) { 357 if (gcm_client_.get()) {
jianli 2014/05/06 22:54:53 It seems that there is behavior change when gcm_cl
juyik 2014/05/07 00:07:48 Done.
348 if (clear_logs) 358 if (clear_logs)
349 gcm_client_->ClearActivityLogs(); 359 gcm_client_->ClearActivityLogs();
360 DoGetGCMStatistics();
361 }
362 }
363
364 void GCMService::IOWorker::DoGetGCMStatistics() {
365 gcm::GCMClient::GCMStatistics stats;
366
367 if (gcm_client_.get()) {
jianli 2014/05/06 22:54:53 nit: brackets not needed
juyik 2014/05/07 00:07:48 Done.
350 stats = gcm_client_->GetStatistics(); 368 stats = gcm_client_->GetStatistics();
351 } 369 }
352 370
353 content::BrowserThread::PostTask( 371 content::BrowserThread::PostTask(
354 content::BrowserThread::UI, 372 content::BrowserThread::UI,
355 FROM_HERE, 373 FROM_HERE,
356 base::Bind(&GCMService::GetGCMStatisticsFinished, service_, stats)); 374 base::Bind(&GCMService::GetGCMStatisticsFinished, service_, stats));
357 } 375 }
358 376
359 void GCMService::IOWorker::SetGCMRecording(bool recording) { 377 void GCMService::IOWorker::SetGCMRecording(bool recording) {
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 return iter == app_handlers_.end() ? &default_app_handler_ : iter->second; 859 return iter == app_handlers_.end() ? &default_app_handler_ : iter->second;
842 } 860 }
843 861
844 void GCMService::GetGCMStatisticsFinished( 862 void GCMService::GetGCMStatisticsFinished(
845 GCMClient::GCMStatistics stats) { 863 GCMClient::GCMStatistics stats) {
846 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 864 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
847 request_gcm_statistics_callback_.Run(stats); 865 request_gcm_statistics_callback_.Run(stats);
848 } 866 }
849 867
850 } // namespace gcm 868 } // namespace gcm
OLDNEW
« no previous file with comments | « no previous file | google_apis/gcm/gcm_client.h » ('j') | google_apis/gcm/gcm_client.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698