summaryrefslogtreecommitdiffstats
path: root/sync/tools/sync_client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sync/tools/sync_client.cc')
-rw-r--r--sync/tools/sync_client.cc77
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();