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

Unified Diff: components/gcm_driver/gcm_account_mapper.cc

Issue 618003002: [GCM] Handling connection events in GCMAccountTracker (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing to Jian Li's patch and addressing unit tests failures Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: components/gcm_driver/gcm_account_mapper.cc
diff --git a/components/gcm_driver/gcm_account_mapper.cc b/components/gcm_driver/gcm_account_mapper.cc
index 046abcd3918554b99c316ee0d9266d5549884704..d95ae1c3d0355958aa2ae4ee190c4fe4be1ffac7 100644
--- a/components/gcm_driver/gcm_account_mapper.cc
+++ b/components/gcm_driver/gcm_account_mapper.cc
@@ -16,7 +16,6 @@ namespace gcm {
namespace {
const char kGCMAccountMapperSenderId[] = "745476177629";
-const char kGCMAccountMapperAppId[] = "com.google.android.gms";
const int kGCMAddMappingMessageTTL = 30 * 60; // 0.5 hours in seconds.
const int kGCMRemoveMappingMessageTTL = 24 * 60 * 60; // 1 day in seconds.
const int kGCMUpdateIntervalHours = 24;
@@ -36,6 +35,8 @@ std::string GenerateMessageID() {
} // namespace
+const char kGCMAccountMapperAppId[] = "com.google.android.gms";
+
GCMAccountMapper::GCMAccountMapper(GCMDriver* gcm_driver)
: gcm_driver_(gcm_driver),
clock_(new base::DefaultClock),
@@ -48,7 +49,6 @@ GCMAccountMapper::~GCMAccountMapper() {
void GCMAccountMapper::Initialize(
const std::vector<AccountMapping>& account_mappings) {
- DCHECK(!initialized_);
initialized_ = true;
accounts_ = account_mappings;
gcm_driver_->AddAppHandler(kGCMAccountMapperAppId, this);
@@ -57,13 +57,16 @@ void GCMAccountMapper::Initialize(
void GCMAccountMapper::SetAccountTokens(
const std::vector<GCMClient::AccountTokenInfo>& account_tokens) {
+ DVLOG(1) << "GCMAccountMapper::SetAccountTokens called with "
+ << account_tokens.size() << " accounts.";
+
// If account mapper is not ready to handle tasks yet, save the latest
// account tokens and return.
if (!IsReady()) {
pending_account_tokens_ = account_tokens;
// If mapper is initialized, but still does not have registration ID,
// maybe the registration gave up. Retrying in case.
- if (initialized_)
+ if (initialized_ && gcm_driver_->IsStarted())
GetRegistration();
return;
}
@@ -134,7 +137,9 @@ void GCMAccountMapper::SetAccountTokens(
}
void GCMAccountMapper::ShutdownHandler() {
- gcm_driver_->RemoveAppHandler(kGCMAccountMapperAppId);
+ initialized_ = false;
+ accounts_.clear();
+ registration_id_.clear();
}
void GCMAccountMapper::OnMessage(const std::string& app_id,
@@ -219,7 +224,7 @@ bool GCMAccountMapper::CanHandle(const std::string& app_id) const {
}
bool GCMAccountMapper::IsReady() {
- return initialized_ && !registration_id_.empty();
+ return initialized_ && gcm_driver_->IsStarted() && !registration_id_.empty();
}
void GCMAccountMapper::SendAddMappingMessage(AccountMapping& account_mapping) {

Powered by Google App Engine
This is Rietveld 408576698