summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/notifier/registration_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/notifier/registration_manager.cc')
-rw-r--r--chrome/browser/sync/notifier/registration_manager.cc66
1 files changed, 13 insertions, 53 deletions
diff --git a/chrome/browser/sync/notifier/registration_manager.cc b/chrome/browser/sync/notifier/registration_manager.cc
index 5b98902..c03c07c 100644
--- a/chrome/browser/sync/notifier/registration_manager.cc
+++ b/chrome/browser/sync/notifier/registration_manager.cc
@@ -8,7 +8,6 @@
#include "chrome/browser/sync/notifier/invalidation_util.h"
#include "chrome/browser/sync/syncable/model_type.h"
-#include "google/cacheinvalidation/invalidation-client.h"
namespace sync_notifier {
@@ -22,20 +21,21 @@ RegistrationManager::~RegistrationManager() {
DCHECK(non_thread_safe_.CalledOnValidThread());
}
-bool RegistrationManager::RegisterType(syncable::ModelType model_type) {
+void RegistrationManager::RegisterType(syncable::ModelType model_type) {
DCHECK(non_thread_safe_.CalledOnValidThread());
invalidation::ObjectId object_id;
if (!RealModelTypeToObjectId(model_type, &object_id)) {
- LOG(ERROR) << "Invalid model type: " << model_type;
- return false;
+ LOG(DFATAL) << "Invalid model type: " << model_type;
+ return;
}
RegistrationStatusMap::iterator it =
registration_status_.insert(
- std::make_pair(model_type, UNREGISTERED)).first;
- if (it->second == UNREGISTERED) {
+ std::make_pair(
+ model_type,
+ invalidation::RegistrationState_UNREGISTERED)).first;
+ if (it->second == invalidation::RegistrationState_UNREGISTERED) {
RegisterObject(object_id, it);
}
- return true;
}
bool RegistrationManager::IsRegistered(
@@ -46,7 +46,7 @@ bool RegistrationManager::IsRegistered(
if (it == registration_status_.end()) {
return false;
}
- return it->second == REGISTERED;
+ return it->second == invalidation::RegistrationState_REGISTERED;
}
void RegistrationManager::MarkRegistrationLost(
@@ -63,7 +63,7 @@ void RegistrationManager::MarkRegistrationLost(
LOG(ERROR) << "Unknown model type: " << model_type;
return;
}
- it->second = UNREGISTERED;
+ it->second = invalidation::RegistrationState_UNREGISTERED;
RegisterObject(object_id, it);
}
@@ -77,7 +77,7 @@ void RegistrationManager::MarkAllRegistrationsLost() {
LOG(DFATAL) << "Invalid model type: " << it->first;
continue;
}
- it->second = UNREGISTERED;
+ it->second = invalidation::RegistrationState_UNREGISTERED;
RegisterObject(object_id, it);
}
}
@@ -85,49 +85,9 @@ void RegistrationManager::MarkAllRegistrationsLost() {
void RegistrationManager::RegisterObject(
const invalidation::ObjectId& object_id,
RegistrationStatusMap::iterator it) {
- DCHECK_EQ(it->second, UNREGISTERED);
- invalidation_client_->Register(
- object_id,
- invalidation::NewPermanentCallback(
- this, &RegistrationManager::OnRegister));
- it->second = PENDING;
-}
-
-void RegistrationManager::OnRegister(
- const invalidation::RegistrationUpdateResult& result) {
- DCHECK(non_thread_safe_.CalledOnValidThread());
- LOG(INFO) << "OnRegister: " << RegistrationUpdateResultToString(result);
- if (result.operation().type() !=
- invalidation::RegistrationUpdate::REGISTER) {
- LOG(ERROR) << "Got non-register result";
- return;
- }
- syncable::ModelType model_type;
- if (!ObjectIdToRealModelType(result.operation().object_id(),
- &model_type)) {
- LOG(ERROR) << "Could not get model type";
- return;
- }
- RegistrationStatusMap::iterator it =
- registration_status_.find(model_type);
- if (it == registration_status_.end()) {
- LOG(ERROR) << "Unknown model type: " << model_type;
- return;
- }
- invalidation::Status::Code code = result.status().code();
- switch (code) {
- case invalidation::Status::SUCCESS:
- it->second = REGISTERED;
- break;
- case invalidation::Status::TRANSIENT_FAILURE:
- // TODO(akalin): Add retry logic. For now, just fall through.
- default:
- // Treat everything else as a permanent failure.
- if (VLOG_IS_ON(1)) {
- LOG(ERROR) << "Registration failed with code: " << code;
- }
- break;
- }
+ DCHECK_EQ(it->second, invalidation::RegistrationState_UNREGISTERED);
+ invalidation_client_->Register(object_id);
+ it->second = invalidation::RegistrationState_REGISTERED;
}
} // namespace sync_notifier