| Index: chrome/browser/sync/tools/sync_listen_notifications.cc
|
| diff --git a/chrome/browser/sync/tools/sync_listen_notifications.cc b/chrome/browser/sync/tools/sync_listen_notifications.cc
|
| index 5fa6759e580f8b3dc49c9dbbdafc9572716a55e5..7e5df7cdaa186ecaf8d56305a3e5c3dc762ef74e 100644
|
| --- a/chrome/browser/sync/tools/sync_listen_notifications.cc
|
| +++ b/chrome/browser/sync/tools/sync_listen_notifications.cc
|
| @@ -16,7 +16,6 @@
|
| #include "chrome/browser/sync/notifier/cache_invalidation_packet_handler.h"
|
| #include "chrome/browser/sync/notifier/chrome_invalidation_client.h"
|
| #include "chrome/browser/sync/notifier/chrome_system_resources.h"
|
| -#include "chrome/browser/sync/notifier/invalidation_util.h"
|
| #include "chrome/browser/sync/sync_constants.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/net/notifier/base/task_pump.h"
|
| @@ -24,7 +23,6 @@
|
| #include "chrome/common/net/notifier/listener/listen_task.h"
|
| #include "chrome/common/net/notifier/listener/notification_constants.h"
|
| #include "chrome/common/net/notifier/listener/subscribe_task.h"
|
| -#include "google/cacheinvalidation/invalidation-client.h"
|
| #include "talk/base/cryptstring.h"
|
| #include "talk/base/logging.h"
|
| #include "talk/base/sigslot.h"
|
| @@ -194,49 +192,23 @@ class LegacyNotifierDelegate : public XmppNotificationClient::Delegate {
|
| }
|
| };
|
|
|
| -// The actual listener for sync notifications from the cache
|
| -// invalidation service.
|
| +// The actual listener for sync notifications.
|
| class ChromeInvalidationListener
|
| - : public invalidation::InvalidationListener {
|
| + : public sync_notifier::ChromeInvalidationClient::Listener {
|
| public:
|
| ChromeInvalidationListener() {}
|
|
|
| - virtual void Invalidate(const invalidation::Invalidation& invalidation,
|
| - invalidation::Closure* callback) {
|
| - CHECK(invalidation::IsCallbackRepeatable(callback));
|
| - LOG(INFO) << "Invalidate: "
|
| - << sync_notifier::InvalidationToString(invalidation);
|
| - sync_notifier::RunAndDeleteClosure(callback);
|
| - // A real implementation would respond to the invalidation for the
|
| - // given object (e.g., refetch the invalidated object).
|
| + virtual void OnInvalidate(syncable::ModelType model_type) {
|
| + LOG(INFO) << "Invalidate: " << syncable::ModelTypeToString(model_type);
|
| + // A real implementation would respond to the invalidation.
|
| }
|
|
|
| - virtual void InvalidateAll(invalidation::Closure* callback) {
|
| - CHECK(invalidation::IsCallbackRepeatable(callback));
|
| + virtual void OnInvalidateAll() {
|
| LOG(INFO) << "InvalidateAll";
|
| - sync_notifier::RunAndDeleteClosure(callback);
|
| // A real implementation would loop over the current registered
|
| // data types and send notifications for those.
|
| }
|
|
|
| - virtual void AllRegistrationsLost(invalidation::Closure* callback) {
|
| - CHECK(invalidation::IsCallbackRepeatable(callback));
|
| - LOG(INFO) << "AllRegistrationsLost";
|
| - sync_notifier::RunAndDeleteClosure(callback);
|
| - // A real implementation would try to re-register for all
|
| - // registered data types.
|
| - }
|
| -
|
| - virtual void RegistrationLost(const invalidation::ObjectId& object_id,
|
| - invalidation::Closure* callback) {
|
| - CHECK(invalidation::IsCallbackRepeatable(callback));
|
| - LOG(INFO) << "RegistrationLost: "
|
| - << sync_notifier::ObjectIdToString(object_id);
|
| - sync_notifier::RunAndDeleteClosure(callback);
|
| - // A real implementation would try to re-register for this
|
| - // particular data type.
|
| - }
|
| -
|
| private:
|
| DISALLOW_COPY_AND_ASSIGN(ChromeInvalidationListener);
|
| };
|
| @@ -245,20 +217,7 @@ class ChromeInvalidationListener
|
| class CacheInvalidationNotifierDelegate
|
| : public XmppNotificationClient::Delegate {
|
| public:
|
| - CacheInvalidationNotifierDelegate(
|
| - MessageLoop* message_loop,
|
| - const std::vector<std::string>& data_types) {
|
| - if (data_types.empty()) {
|
| - LOG(WARNING) << "No data types given";
|
| - }
|
| - for (std::vector<std::string>::const_iterator it = data_types.begin();
|
| - it != data_types.end(); ++it) {
|
| - invalidation::ObjectId object_id;
|
| - object_id.mutable_name()->set_string_value(*it);
|
| - object_id.set_source(invalidation::ObjectId::CHROME_SYNC);
|
| - object_ids_.push_back(object_id);
|
| - }
|
| - }
|
| + CacheInvalidationNotifierDelegate() {}
|
|
|
| virtual ~CacheInvalidationNotifierDelegate() {}
|
|
|
| @@ -272,53 +231,20 @@ class CacheInvalidationNotifierDelegate
|
| chrome_invalidation_client_.Start(kAppName,
|
| &chrome_invalidation_listener_,
|
| xmpp_client);
|
| -
|
| - for (std::vector<invalidation::ObjectId>::const_iterator it =
|
| - object_ids_.begin(); it != object_ids_.end(); ++it) {
|
| - chrome_invalidation_client_.Register(
|
| - *it,
|
| - invalidation::NewPermanentCallback(
|
| - this, &CacheInvalidationNotifierDelegate::RegisterCallback));
|
| - }
|
| + chrome_invalidation_client_.RegisterTypes();
|
| }
|
|
|
| virtual void OnLogout() {
|
| LOG(INFO) << "Logged out";
|
| -
|
| - // TODO(akalin): Figure out the correct place to put this.
|
| - for (std::vector<invalidation::ObjectId>::const_iterator it =
|
| - object_ids_.begin(); it != object_ids_.end(); ++it) {
|
| - chrome_invalidation_client_.Unregister(
|
| - *it,
|
| - invalidation::NewPermanentCallback(
|
| - this, &CacheInvalidationNotifierDelegate::RegisterCallback));
|
| - }
|
| -
|
| chrome_invalidation_client_.Stop();
|
| }
|
|
|
| virtual void OnError(buzz::XmppEngine::Error error, int subcode) {
|
| LOG(INFO) << "Error: " << error << ", subcode: " << subcode;
|
| -
|
| - // TODO(akalin): Figure out whether we should unregister here,
|
| - // too.
|
| chrome_invalidation_client_.Stop();
|
| }
|
|
|
| private:
|
| - void RegisterCallback(
|
| - const invalidation::RegistrationUpdateResult& result) {
|
| - LOG(INFO) << "Registered: "
|
| - << sync_notifier::RegistrationUpdateResultToString(result);
|
| - }
|
| -
|
| - void UnregisterCallback(
|
| - const invalidation::RegistrationUpdateResult& result) {
|
| - LOG(INFO) << "Unregistered: "
|
| - << sync_notifier::RegistrationUpdateResultToString(result);
|
| - }
|
| -
|
| - std::vector<invalidation::ObjectId> object_ids_;
|
| ChromeInvalidationListener chrome_invalidation_listener_;
|
| sync_notifier::ChromeInvalidationClient chrome_invalidation_client_;
|
| };
|
| @@ -396,19 +322,9 @@ int main(int argc, char* argv[]) {
|
| talk_base::ThreadManager::SetCurrent(&main_thread);
|
| MessageLoopForIO message_loop;
|
|
|
| - // TODO(akalin): Make this configurable.
|
| - // TODO(akalin): Store these constants in a header somewhere (maybe
|
| - // browser/sync/protocol).
|
| - std::vector<std::string> data_types;
|
| - data_types.push_back("AUTOFILL");
|
| - data_types.push_back("BOOKMARK");
|
| - data_types.push_back("THEME");
|
| - data_types.push_back("PREFERENCE");
|
| -
|
| // Connect and listen.
|
| LegacyNotifierDelegate legacy_notifier_delegate;
|
| - CacheInvalidationNotifierDelegate cache_invalidation_notifier_delegate(
|
| - &message_loop, data_types);
|
| + CacheInvalidationNotifierDelegate cache_invalidation_notifier_delegate;
|
| XmppNotificationClient::Delegate* delegate = NULL;
|
| if (command_line.HasSwitch(switches::kSyncUseCacheInvalidation)) {
|
| delegate = &cache_invalidation_notifier_delegate;
|
|
|