diff options
Diffstat (limited to 'sync/tools/sync_client.cc')
-rw-r--r-- | sync/tools/sync_client.cc | 77 |
1 files changed, 54 insertions, 23 deletions
diff --git a/sync/tools/sync_client.cc b/sync/tools/sync_client.cc index 6ce8bde..21a46fd 100644 --- a/sync/tools/sync_client.cc +++ b/sync/tools/sync_client.cc @@ -17,6 +17,7 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/weak_ptr.h" #include "base/message_loop.h" +#include "base/rand_util.h" #include "base/task_runner.h" #include "base/threading/thread.h" #include "jingle/notifier/base/notification_method.h" @@ -40,8 +41,7 @@ #include "sync/js/js_event_details.h" #include "sync/js/js_event_handler.h" #include "sync/notifier/invalidation_state_tracker.h" -#include "sync/notifier/invalidator.h" -#include "sync/notifier/invalidator_factory.h" +#include "sync/notifier/non_blocking_invalidator.h" #include "sync/test/fake_encryptor.h" #include "sync/tools/null_invalidation_state_tracker.h" @@ -215,15 +215,14 @@ notifier::NotifierOptions ParseNotifierOptions( LOG_IF(INFO, notifier_options.allow_insecure_connection) << "Allowing insecure XMPP connections."; - if (command_line.HasSwitch(kNotificationMethodSwitch)) { - notifier_options.notification_method = - notifier::StringToNotificationMethod( - command_line.GetSwitchValueASCII(kNotificationMethodSwitch)); - } - return notifier_options; } +void StubNetworkTimeUpdateCallback(const base::Time&, + const base::TimeDelta&, + const base::TimeDelta&) { +} + int SyncClientMain(int argc, char* argv[]) { #if defined(OS_MACOSX) base::mac::ScopedNSAutoreleasePool pool; @@ -250,7 +249,6 @@ int SyncClientMain(int argc, char* argv[]) { if (credentials.email.empty() || credentials.sync_token.empty()) { std::printf("Usage: %s --%s=foo@bar.com --%s=token\n" "[--%s=host:port] [--%s] [--%s]\n" - "[--%s=(server|p2p)]\n\n" "Run chrome and set a breakpoint on\n" "syncer::SyncManagerImpl::UpdateCredentials() " "after logging into\n" @@ -258,8 +256,7 @@ int SyncClientMain(int argc, char* argv[]) { argv[0], kEmailSwitch, kTokenSwitch, kXmppHostPortSwitch, kXmppTrySslTcpFirstSwitch, - kXmppAllowInsecureConnectionSwitch, - kNotificationMethodSwitch); + kXmppAllowInsecureConnectionSwitch); return -1; } @@ -272,18 +269,49 @@ int SyncClientMain(int argc, char* argv[]) { new MyTestURLRequestContextGetter(io_thread.message_loop_proxy()); const notifier::NotifierOptions& notifier_options = ParseNotifierOptions(command_line, context_getter); - const char kClientInfo[] = "sync_listen_notifications"; + const char kClientInfo[] = "standalone_sync_client"; + std::string invalidator_id = base::RandBytesAsString(8); NullInvalidationStateTracker null_invalidation_state_tracker; - InvalidatorFactory invalidator_factory( - notifier_options, kClientInfo, - null_invalidation_state_tracker.AsWeakPtr()); + scoped_ptr<Invalidator> invalidator(new NonBlockingInvalidator( + notifier_options, + invalidator_id, + null_invalidation_state_tracker.GetAllInvalidationStates(), + null_invalidation_state_tracker.GetBootstrapData(), + WeakHandle<InvalidationStateTracker>( + null_invalidation_state_tracker.AsWeakPtr()), + kClientInfo)); // Set up database directory for the syncer. base::ScopedTempDir database_dir; CHECK(database_dir.CreateUniqueTempDir()); - // Set up model type parameters. - const ModelTypeSet model_types = ModelTypeSet::All(); + // Developers often add types to ModelTypeSet::All() before the server + // supports them. We need to be explicit about which types we want here. + ModelTypeSet model_types; + model_types.Put(BOOKMARKS); + model_types.Put(PREFERENCES); + model_types.Put(PASSWORDS); + model_types.Put(AUTOFILL); + model_types.Put(THEMES); + model_types.Put(TYPED_URLS); + model_types.Put(EXTENSIONS); + model_types.Put(NIGORI); + model_types.Put(SEARCH_ENGINES); + model_types.Put(SESSIONS); + model_types.Put(APPS); + model_types.Put(AUTOFILL_PROFILE); + model_types.Put(APP_SETTINGS); + model_types.Put(EXTENSION_SETTINGS); + model_types.Put(APP_NOTIFICATIONS); + model_types.Put(HISTORY_DELETE_DIRECTIVES); + model_types.Put(SYNCED_NOTIFICATIONS); + model_types.Put(DEVICE_INFO); + model_types.Put(EXPERIMENTS); + model_types.Put(PRIORITY_PREFERENCES); + model_types.Put(DICTIONARY); + model_types.Put(FAVICON_IMAGES); + model_types.Put(FAVICON_TRACKING); + ModelSafeRoutingInfo routing_info; for (ModelTypeSet::Iterator it = model_types.First(); it.Good(); it.Inc()) { @@ -307,8 +335,10 @@ int SyncClientMain(int argc, char* argv[]) { const char kUserAgent[] = "sync_client"; // TODO(akalin): Replace this with just the context getter once // HttpPostProviderFactory is removed. - scoped_ptr<HttpPostProviderFactory> post_factory(new HttpBridgeFactory( - context_getter.get(), kUserAgent, NetworkTimeUpdateCallback())); + scoped_ptr<HttpPostProviderFactory> post_factory( + new HttpBridgeFactory(context_getter, + kUserAgent, + base::Bind(&StubNetworkTimeUpdateCallback))); // Used only when committing bookmarks, so it's okay to leave this // as NULL. ExtensionsActivityMonitor* extensions_activity_monitor = NULL; @@ -333,9 +363,7 @@ int SyncClientMain(int argc, char* argv[]) { extensions_activity_monitor, &change_delegate, credentials, - scoped_ptr<Invalidator>( - invalidator_factory.CreateInvalidator()), - invalidator_factory.GetInvalidatorClientId(), + invalidator_id, kRestoredKeyForBootstrapping, kRestoredKeystoreKeyForBootstrapping, scoped_ptr<InternalComponentsFactory>( @@ -345,7 +373,10 @@ int SyncClientMain(int argc, char* argv[]) { &LogUnrecoverableErrorContext, false); // TODO(akalin): Avoid passing in model parameters multiple times by // organizing handling of model types. - sync_manager->UpdateEnabledTypes(model_types); + invalidator->UpdateCredentials(credentials.email, credentials.sync_token); + invalidator->RegisterHandler(sync_manager.get()); + invalidator->UpdateRegisteredIds( + sync_manager.get(), ModelTypeSetToObjectIdSet(model_types)); sync_manager->StartSyncingNormally(routing_info); sync_loop.Run(); |