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

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

Issue 189803002: [GCM] Observe the event listener adding such that GCM can be started (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix trybots 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 | Annotate | Revision Log
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 518 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 chrome::NOTIFICATION_GOOGLE_SIGNED_OUT, 529 chrome::NOTIFICATION_GOOGLE_SIGNED_OUT,
530 content::Source<Profile>(profile_)); 530 content::Source<Profile>(profile_));
531 registrar_.Add(this, 531 registrar_.Add(this,
532 chrome::NOTIFICATION_PROFILE_DESTROYED, 532 chrome::NOTIFICATION_PROFILE_DESTROYED,
533 content::Source<Profile>(profile_)); 533 content::Source<Profile>(profile_));
534 // TODO(jianli): move extension specific logic out of GCMProfileService. 534 // TODO(jianli): move extension specific logic out of GCMProfileService.
535 registrar_.Add(this, 535 registrar_.Add(this,
536 chrome:: NOTIFICATION_EXTENSION_UNINSTALLED, 536 chrome:: NOTIFICATION_EXTENSION_UNINSTALLED,
537 content::Source<Profile>(profile_)); 537 content::Source<Profile>(profile_));
538 538
539 #if !defined(OS_ANDROID)
540 js_event_router_.reset(new extensions::GcmJsEventRouter(profile_));
541 #endif
542
539 // Get the list of available accounts. 543 // Get the list of available accounts.
540 std::vector<std::string> account_ids; 544 std::vector<std::string> account_ids;
541 #if !defined(OS_ANDROID) 545 #if !defined(OS_ANDROID)
542 account_ids = 546 account_ids =
543 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)->GetAccounts(); 547 ProfileOAuth2TokenServiceFactory::GetForProfile(profile_)->GetAccounts();
544 #endif 548 #endif
545 549
546 // Create and initialize the GCMClient. Note that this does not initiate the 550 // Create and initialize the GCMClient. Note that this does not initiate the
547 // GCM check-in. 551 // GCM check-in.
548 io_worker_ = new IOWorker(); 552 io_worker_ = new IOWorker();
(...skipping 29 matching lines...) Expand all
578 return; 582 return;
579 583
580 RemoveCachedData(); 584 RemoveCachedData();
581 585
582 content::BrowserThread::PostTask( 586 content::BrowserThread::PostTask(
583 content::BrowserThread::IO, 587 content::BrowserThread::IO,
584 FROM_HERE, 588 FROM_HERE,
585 base::Bind(&GCMProfileService::IOWorker::Stop, io_worker_)); 589 base::Bind(&GCMProfileService::IOWorker::Stop, io_worker_));
586 } 590 }
587 591
592 void GCMProfileService::Shutdown() {
593 #if !defined(OS_ANDROID)
594 js_event_router_.reset();
595 #endif
596 }
597
588 void GCMProfileService::Register(const std::string& app_id, 598 void GCMProfileService::Register(const std::string& app_id,
589 const std::vector<std::string>& sender_ids, 599 const std::vector<std::string>& sender_ids,
590 RegisterCallback callback) { 600 RegisterCallback callback) {
591 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); 601 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
592 DCHECK(!app_id.empty() && !sender_ids.empty() && !callback.is_null()); 602 DCHECK(!app_id.empty() && !sender_ids.empty() && !callback.is_null());
593 603
594 // Ensure that check-in has been done. 604 // Ensure that check-in has been done.
595 EnsureLoaded(); 605 EnsureLoaded();
596 606
597 // If the profile was not signed in, bail out. 607 // If the profile was not signed in, bail out.
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
764 if (username.empty()) 774 if (username.empty())
765 return; 775 return;
766 776
767 // CheckIn could be called more than once when: 777 // CheckIn could be called more than once when:
768 // 1) The password changes. 778 // 1) The password changes.
769 // 2) Register/send function calls it to ensure CheckIn is done. 779 // 2) Register/send function calls it to ensure CheckIn is done.
770 if (username_ == username) 780 if (username_ == username)
771 return; 781 return;
772 username_ = username; 782 username_ = username;
773 783
774 #if !defined(OS_ANDROID)
775 if (!js_event_router_)
776 js_event_router_.reset(new extensions::GcmJsEventRouter(profile_));
777 #endif
778
779 DCHECK(!delayed_task_controller_); 784 DCHECK(!delayed_task_controller_);
780 delayed_task_controller_.reset(new DelayedTaskController); 785 delayed_task_controller_.reset(new DelayedTaskController);
781 786
782 // Load all the registered apps. 787 // Load all the registered apps.
783 ReadRegisteredAppIDs(); 788 ReadRegisteredAppIDs();
784 789
785 // This will load the data from the gcm store and trigger the check-in if 790 // This will load the data from the gcm store and trigger the check-in if
786 // the persisted check-in info is not found. 791 // the persisted check-in info is not found.
787 // Note that we need to pass weak pointer again since the existing weak 792 // Note that we need to pass weak pointer again since the existing weak
788 // pointer in IOWorker might have been invalidated when check-out occurs. 793 // pointer in IOWorker might have been invalidated when check-out occurs.
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 1106
1102 return true; 1107 return true;
1103 } 1108 }
1104 1109
1105 // static 1110 // static
1106 const char* GCMProfileService::GetPersistentRegisterKeyForTesting() { 1111 const char* GCMProfileService::GetPersistentRegisterKeyForTesting() {
1107 return kRegistrationKey; 1112 return kRegistrationKey;
1108 } 1113 }
1109 1114
1110 } // namespace gcm 1115 } // namespace gcm
OLDNEW
« no previous file with comments | « chrome/browser/services/gcm/gcm_profile_service.h ('k') | chrome/browser/services/gcm/gcm_profile_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698