OLD | NEW |
---|---|
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_driver.h" | 5 #include "chrome/browser/services/gcm/gcm_driver.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 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
482 | 482 |
483 // Ensures that the GCM service is started when there is an interest. | 483 // Ensures that the GCM service is started when there is an interest. |
484 EnsureStarted(); | 484 EnsureStarted(); |
485 } | 485 } |
486 | 486 |
487 void GCMDriver::RemoveAppHandler(const std::string& app_id) { | 487 void GCMDriver::RemoveAppHandler(const std::string& app_id) { |
488 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 488 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
489 DCHECK(!app_id.empty()); | 489 DCHECK(!app_id.empty()); |
490 | 490 |
491 app_handlers_.erase(app_id); | 491 app_handlers_.erase(app_id); |
492 | |
493 // Stops the GCM service when no app intends to consume it. | |
494 if (app_handlers_.empty()) | |
495 Stop(); | |
492 } | 496 } |
493 | 497 |
494 void GCMDriver::Register(const std::string& app_id, | 498 void GCMDriver::Register(const std::string& app_id, |
495 const std::vector<std::string>& sender_ids, | 499 const std::vector<std::string>& sender_ids, |
496 const RegisterCallback& callback) { | 500 const RegisterCallback& callback) { |
497 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 501 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
498 DCHECK(!app_id.empty()); | 502 DCHECK(!app_id.empty()); |
499 DCHECK(!sender_ids.empty()); | 503 DCHECK(!sender_ids.empty()); |
500 DCHECK(!callback.is_null()); | 504 DCHECK(!callback.is_null()); |
501 | 505 |
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
693 void GCMDriver::OnActiveAccountLogout() { | 697 void GCMDriver::OnActiveAccountLogout() { |
694 CheckOut(); | 698 CheckOut(); |
695 } | 699 } |
696 | 700 |
697 GCMClient::Result GCMDriver::EnsureStarted() { | 701 GCMClient::Result GCMDriver::EnsureStarted() { |
698 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 702 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); |
699 | 703 |
700 if (!gcm_enabled_) | 704 if (!gcm_enabled_) |
701 return GCMClient::GCM_DISABLED; | 705 return GCMClient::GCM_DISABLED; |
702 | 706 |
707 // Has any app requested the service? | |
Nicolas Zea
2014/05/22 17:06:31
nit: has -> Have
jianli
2014/05/22 18:09:26
Done.
| |
708 if (app_handlers_.empty()) | |
709 return GCMClient::UNKNOWN_ERROR; | |
710 | |
703 // Is the user signed in? | 711 // Is the user signed in? |
704 const std::string account_id = identity_provider_->GetActiveAccountId(); | 712 const std::string account_id = identity_provider_->GetActiveAccountId(); |
705 if (account_id.empty()) | 713 if (account_id.empty()) |
706 return GCMClient::NOT_SIGNED_IN; | 714 return GCMClient::NOT_SIGNED_IN; |
707 | 715 |
708 // CheckIn could be called more than once when: | 716 // CheckIn could be called more than once when: |
709 // 1) The password changes. | 717 // 1) The password changes. |
710 // 2) Register/send function calls it to ensure CheckIn is done. | 718 // 2) Register/send function calls it to ensure CheckIn is done. |
711 if (account_id_ == account_id) | 719 if (account_id_ == account_id) |
712 return GCMClient::SUCCESS; | 720 return GCMClient::SUCCESS; |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
872 LOG(WARNING) << "request_gcm_statistics_callback_ is NULL."; | 880 LOG(WARNING) << "request_gcm_statistics_callback_ is NULL."; |
873 } | 881 } |
874 | 882 |
875 std::string GCMDriver::SignedInUserName() const { | 883 std::string GCMDriver::SignedInUserName() const { |
876 if (IsStarted()) | 884 if (IsStarted()) |
877 return identity_provider_->GetActiveUsername(); | 885 return identity_provider_->GetActiveUsername(); |
878 return std::string(); | 886 return std::string(); |
879 } | 887 } |
880 | 888 |
881 } // namespace gcm | 889 } // namespace gcm |
OLD | NEW |