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

Unified Diff: chrome/browser/sync/notifier/chrome_invalidation_client.cc

Issue 2861034: Decomped registration logic into its own class. (Closed)
Patch Set: synced to head Created 10 years, 6 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: chrome/browser/sync/notifier/chrome_invalidation_client.cc
diff --git a/chrome/browser/sync/notifier/chrome_invalidation_client.cc b/chrome/browser/sync/notifier/chrome_invalidation_client.cc
index 0b848991c608d5bd59001f38a9c88ff04d5b7a46..f183e618059ec90c5441015e186926f3ddb873cb 100644
--- a/chrome/browser/sync/notifier/chrome_invalidation_client.cc
+++ b/chrome/browser/sync/notifier/chrome_invalidation_client.cc
@@ -10,6 +10,7 @@
#include "base/logging.h"
#include "chrome/browser/sync/notifier/cache_invalidation_packet_handler.h"
#include "chrome/browser/sync/notifier/invalidation_util.h"
+#include "chrome/browser/sync/notifier/registration_manager.h"
#include "chrome/browser/sync/syncable/model_type.h"
namespace sync_notifier {
@@ -46,6 +47,8 @@ void ChromeInvalidationClient::Start(
cache_invalidation_packet_handler_.reset(
new CacheInvalidationPacketHandler(xmpp_client,
invalidation_client_.get()));
+ registration_manager_.reset(
+ new RegistrationManager(invalidation_client_.get()));
RegisterTypes();
}
@@ -58,6 +61,7 @@ void ChromeInvalidationClient::Stop() {
chrome_system_resources_.StopScheduler();
+ registration_manager_.reset();
cache_invalidation_packet_handler_.reset();
invalidation_client_.reset();
listener_ = NULL;
@@ -70,35 +74,10 @@ void ChromeInvalidationClient::RegisterTypes() {
// notifications for all possible types.
for (int i = syncable::FIRST_REAL_MODEL_TYPE;
i < syncable::MODEL_TYPE_COUNT; ++i) {
- syncable::ModelType model_type = syncable::ModelTypeFromInt(i);
- std::string notification_type;
- if (!syncable::RealModelTypeToNotificationType(
- model_type, &notification_type)) {
- LOG(ERROR) << "Could not get notification type for model type "
- << syncable::ModelTypeToString(model_type);
- continue;
- }
- invalidation::ObjectId object_id;
- object_id.mutable_name()->set_string_value(notification_type);
- object_id.set_source(invalidation::ObjectId::CHROME_SYNC);
- invalidation_client_->Register(
- object_id,
- invalidation::NewPermanentCallback(
- this, &ChromeInvalidationClient::OnRegister));
+ registration_manager_->RegisterType(syncable::ModelTypeFromInt(i));
}
}
-namespace {
-
-bool GetInvalidationModelType(const invalidation::Invalidation& invalidation,
- syncable::ModelType* model_type) {
- return
- syncable::NotificationTypeToRealModelType(
- invalidation.object_id().name().string_value(), model_type);
-}
-
-} // namespace
-
void ChromeInvalidationClient::Invalidate(
const invalidation::Invalidation& invalidation,
invalidation::Closure* callback) {
@@ -106,7 +85,7 @@ void ChromeInvalidationClient::Invalidate(
DCHECK(invalidation::IsCallbackRepeatable(callback));
LOG(INFO) << "Invalidate: " << InvalidationToString(invalidation);
syncable::ModelType model_type;
- if (GetInvalidationModelType(invalidation, &model_type)) {
+ if (ObjectIdToRealModelType(invalidation.object_id(), &model_type)) {
listener_->OnInvalidate(model_type);
} else {
LOG(WARNING) << "Could not get invalidation model type; "
@@ -129,8 +108,8 @@ void ChromeInvalidationClient::AllRegistrationsLost(
invalidation::Closure* callback) {
DCHECK(non_thread_safe_.CalledOnValidThread());
DCHECK(invalidation::IsCallbackRepeatable(callback));
- LOG(INFO) << "AllRegistrationsLost; reregistering";
- RegisterTypes();
+ LOG(INFO) << "AllRegistrationsLost";
+ registration_manager_->MarkAllRegistrationsLost();
RunAndDeleteClosure(callback);
}
@@ -139,17 +118,14 @@ void ChromeInvalidationClient::RegistrationLost(
invalidation::Closure* callback) {
DCHECK(non_thread_safe_.CalledOnValidThread());
DCHECK(invalidation::IsCallbackRepeatable(callback));
- LOG(INFO) << "RegistrationLost; reregistering: "
- << ObjectIdToString(object_id);
- RegisterTypes();
+ LOG(INFO) << "RegistrationLost: " << ObjectIdToString(object_id);
+ syncable::ModelType model_type;
+ if (ObjectIdToRealModelType(object_id, &model_type)) {
+ registration_manager_->MarkRegistrationLost(model_type);
+ } else {
+ LOG(WARNING) << "Could not get object id model type; ignoring";
+ }
RunAndDeleteClosure(callback);
}
-void ChromeInvalidationClient::OnRegister(
- const invalidation::RegistrationUpdateResult& result) {
- DCHECK(non_thread_safe_.CalledOnValidThread());
- // TODO(akalin): Do something meaningful here.
- LOG(INFO) << "Registered: " << RegistrationUpdateResultToString(result);
-}
-
} // namespace sync_notifier
« no previous file with comments | « chrome/browser/sync/notifier/chrome_invalidation_client.h ('k') | chrome/browser/sync/notifier/invalidation_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698