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

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

Issue 176823009: Show device information in chrome://gcm-internals page. (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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "chrome/browser/services/gcm/gcm_profile_service.h" 5 #include "chrome/browser/services/gcm/gcm_profile_service.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/base64.h" 10 #include "base/base64.h"
(...skipping 18 matching lines...) Expand all
29 #include "chrome/common/chrome_constants.h" 29 #include "chrome/common/chrome_constants.h"
30 #include "chrome/common/chrome_paths.h" 30 #include "chrome/common/chrome_paths.h"
31 #include "chrome/common/chrome_version_info.h" 31 #include "chrome/common/chrome_version_info.h"
32 #include "chrome/common/pref_names.h" 32 #include "chrome/common/pref_names.h"
33 #include "components/user_prefs/pref_registry_syncable.h" 33 #include "components/user_prefs/pref_registry_syncable.h"
34 #include "content/public/browser/browser_thread.h" 34 #include "content/public/browser/browser_thread.h"
35 #include "content/public/browser/notification_details.h" 35 #include "content/public/browser/notification_details.h"
36 #include "content/public/browser/notification_source.h" 36 #include "content/public/browser/notification_source.h"
37 #include "extensions/browser/extension_system.h" 37 #include "extensions/browser/extension_system.h"
38 #include "extensions/common/extension.h" 38 #include "extensions/common/extension.h"
39 #include "google_apis/gcm/gcm_client.h"
39 #include "google_apis/gcm/protocol/android_checkin.pb.h" 40 #include "google_apis/gcm/protocol/android_checkin.pb.h"
40 #include "net/url_request/url_request_context_getter.h" 41 #include "net/url_request/url_request_context_getter.h"
41 42
42 using extensions::Extension; 43 using extensions::Extension;
43 44
44 namespace gcm { 45 namespace gcm {
45 46
46 namespace { 47 namespace {
47 48
48 const char kRegistrationKey[] = "gcm.registration"; 49 const char kRegistrationKey[] = "gcm.registration";
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 url_request_context_getter); 266 url_request_context_getter);
266 void Reset(); 267 void Reset();
267 void CheckOut(); 268 void CheckOut();
268 void Register(const std::string& app_id, 269 void Register(const std::string& app_id,
269 const std::vector<std::string>& sender_ids, 270 const std::vector<std::string>& sender_ids,
270 const std::string& cert); 271 const std::string& cert);
271 void Unregister(const std::string& app_id); 272 void Unregister(const std::string& app_id);
272 void Send(const std::string& app_id, 273 void Send(const std::string& app_id,
273 const std::string& receiver_id, 274 const std::string& receiver_id,
274 const GCMClient::OutgoingMessage& message); 275 const GCMClient::OutgoingMessage& message);
276 bool IsGCMClientCreated();
277 void RequestGCMStatistics();
275 278
276 private: 279 private:
277 friend class base::RefCountedThreadSafe<IOWorker>; 280 friend class base::RefCountedThreadSafe<IOWorker>;
278 virtual ~IOWorker(); 281 virtual ~IOWorker();
279 282
280 const base::WeakPtr<GCMProfileService> service_; 283 const base::WeakPtr<GCMProfileService> service_;
281 284
282 scoped_ptr<GCMClient> gcm_client_; 285 scoped_ptr<GCMClient> gcm_client_;
283 }; 286 };
284 287
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 450
448 void GCMProfileService::IOWorker::Send( 451 void GCMProfileService::IOWorker::Send(
449 const std::string& app_id, 452 const std::string& app_id,
450 const std::string& receiver_id, 453 const std::string& receiver_id,
451 const GCMClient::OutgoingMessage& message) { 454 const GCMClient::OutgoingMessage& message) {
452 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); 455 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
453 456
454 gcm_client_->Send(app_id, receiver_id, message); 457 gcm_client_->Send(app_id, receiver_id, message);
455 } 458 }
456 459
460 bool GCMProfileService::IOWorker::IsGCMClientCreated() {
461 return (gcm_client_.get() != NULL);
462 }
463
464 void GCMProfileService::IOWorker::RequestGCMStatistics() {
465 gcm::GCMClient::GCMStatistics stats;
466 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO));
467
468 stats.gcm_client_created = (gcm_client_.get() != NULL);
469 if (gcm_client_.get()) {
470 gcm_client_->GetStatistics(&stats);
471 }
472
473 content::BrowserThread::PostTask(
474 content::BrowserThread::UI,
475 FROM_HERE,
476 base::Bind(&GCMProfileService::RequestGCMStatisticsFinished,
477 service_,
478 stats));
479 }
480
457 GCMProfileService::RegistrationInfo::RegistrationInfo() { 481 GCMProfileService::RegistrationInfo::RegistrationInfo() {
458 } 482 }
459 483
460 GCMProfileService::RegistrationInfo::~RegistrationInfo() { 484 GCMProfileService::RegistrationInfo::~RegistrationInfo() {
461 } 485 }
462 486
463 bool GCMProfileService::RegistrationInfo::IsValid() const { 487 bool GCMProfileService::RegistrationInfo::IsValid() const {
464 return !sender_ids.empty() && !registration_id.empty(); 488 return !sender_ids.empty() && !registration_id.empty();
465 } 489 }
466 490
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 content::BrowserThread::PostTask( 697 content::BrowserThread::PostTask(
674 content::BrowserThread::IO, 698 content::BrowserThread::IO,
675 FROM_HERE, 699 FROM_HERE,
676 base::Bind(&GCMProfileService::IOWorker::Send, 700 base::Bind(&GCMProfileService::IOWorker::Send,
677 io_worker_, 701 io_worker_,
678 app_id, 702 app_id,
679 receiver_id, 703 receiver_id,
680 message)); 704 message));
681 } 705 }
682 706
707 bool GCMProfileService::IsSignedIn() const {
708 return !username_.empty();
709 }
710
711 bool GCMProfileService::IsGCMClientCreated() const {
712 return io_worker_->IsGCMClientCreated();
713 }
714
715 bool GCMProfileService::IsGCMClientReady() const {
716 return gcm_client_ready_;
717 }
718
719 void GCMProfileService::RequestGCMStatistics(
720 RequestGCMStatisticsCallback callback) {
721 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
722 DCHECK(!callback.is_null());
723
724 request_gcm_statistics_callback_ = callback;
725 content::BrowserThread::PostTask(
726 content::BrowserThread::IO,
727 FROM_HERE,
728 base::Bind(&GCMProfileService::IOWorker::RequestGCMStatistics,
729 io_worker_));
730 }
731
683 void GCMProfileService::Observe(int type, 732 void GCMProfileService::Observe(int type,
684 const content::NotificationSource& source, 733 const content::NotificationSource& source,
685 const content::NotificationDetails& details) { 734 const content::NotificationDetails& details) {
686 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 735 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
687 736
688 switch (type) { 737 switch (type) {
689 case chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL: { 738 case chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL: {
690 const GoogleServiceSigninSuccessDetails* signin_details = 739 const GoogleServiceSigninSuccessDetails* signin_details =
691 content::Details<GoogleServiceSigninSuccessDetails>(details).ptr(); 740 content::Details<GoogleServiceSigninSuccessDetails>(details).ptr();
692 // This could be called multiple times when the password changed. 741 // This could be called multiple times when the password changed.
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
1036 for (size_t i = 0; i < senders_list->GetSize(); ++i) { 1085 for (size_t i = 0; i < senders_list->GetSize(); ++i) {
1037 std::string sender; 1086 std::string sender;
1038 if (!senders_list->GetString(i, &sender)) 1087 if (!senders_list->GetString(i, &sender))
1039 return false; 1088 return false;
1040 registration_info->sender_ids.push_back(sender); 1089 registration_info->sender_ids.push_back(sender);
1041 } 1090 }
1042 1091
1043 return true; 1092 return true;
1044 } 1093 }
1045 1094
1095 void GCMProfileService::RequestGCMStatisticsFinished(
1096 GCMClient::GCMStatistics stats) {
1097 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
1098
1099 request_gcm_statistics_callback_.Run(stats);
1100 }
1101
1046 // static 1102 // static
1047 const char* GCMProfileService::GetPersistentRegisterKeyForTesting() { 1103 const char* GCMProfileService::GetPersistentRegisterKeyForTesting() {
1048 return kRegistrationKey; 1104 return kRegistrationKey;
1049 } 1105 }
1050 1106
1051 } // namespace gcm 1107 } // namespace gcm
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698