| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <cstddef> | 5 #include <cstddef> |
| 6 #include <cstdio> | 6 #include <cstdio> |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/at_exit.h" | 9 #include "base/at_exit.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 #include "sync/internal_api/public/http_bridge.h" | 35 #include "sync/internal_api/public/http_bridge.h" |
| 36 #include "sync/internal_api/public/internal_components_factory_impl.h" | 36 #include "sync/internal_api/public/internal_components_factory_impl.h" |
| 37 #include "sync/internal_api/public/read_node.h" | 37 #include "sync/internal_api/public/read_node.h" |
| 38 #include "sync/internal_api/public/sync_manager.h" | 38 #include "sync/internal_api/public/sync_manager.h" |
| 39 #include "sync/internal_api/public/sync_manager_factory.h" | 39 #include "sync/internal_api/public/sync_manager_factory.h" |
| 40 #include "sync/internal_api/public/util/report_unrecoverable_error_function.h" | 40 #include "sync/internal_api/public/util/report_unrecoverable_error_function.h" |
| 41 #include "sync/internal_api/public/util/unrecoverable_error_handler.h" | 41 #include "sync/internal_api/public/util/unrecoverable_error_handler.h" |
| 42 #include "sync/internal_api/public/util/weak_handle.h" | 42 #include "sync/internal_api/public/util/weak_handle.h" |
| 43 #include "sync/js/js_event_details.h" | 43 #include "sync/js/js_event_details.h" |
| 44 #include "sync/js/js_event_handler.h" | 44 #include "sync/js/js_event_handler.h" |
| 45 #include "sync/notifier/object_id_invalidation_map.h" |
| 45 #include "sync/test/fake_encryptor.h" | 46 #include "sync/test/fake_encryptor.h" |
| 46 #include "sync/tools/null_invalidation_state_tracker.h" | 47 #include "sync/tools/null_invalidation_state_tracker.h" |
| 47 | 48 |
| 48 #if defined(OS_MACOSX) | 49 #if defined(OS_MACOSX) |
| 49 #include "base/mac/scoped_nsautorelease_pool.h" | 50 #include "base/mac/scoped_nsautorelease_pool.h" |
| 50 #endif | 51 #endif |
| 51 | 52 |
| 52 // This is a simple utility that initializes a sync client and | 53 // This is a simple utility that initializes a sync client and |
| 53 // prints out any events. | 54 // prints out any events. |
| 54 | 55 |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 public: | 178 public: |
| 178 virtual ~LoggingJsEventHandler() {} | 179 virtual ~LoggingJsEventHandler() {} |
| 179 | 180 |
| 180 virtual void HandleJsEvent( | 181 virtual void HandleJsEvent( |
| 181 const std::string& name, | 182 const std::string& name, |
| 182 const JsEventDetails& details) OVERRIDE { | 183 const JsEventDetails& details) OVERRIDE { |
| 183 VLOG(1) << name << ": " << details.ToString(); | 184 VLOG(1) << name << ": " << details.ToString(); |
| 184 } | 185 } |
| 185 }; | 186 }; |
| 186 | 187 |
| 188 class InvalidationAdapter : public syncer::InvalidationInterface { |
| 189 public: |
| 190 explicit InvalidationAdapter(const syncer::Invalidation& invalidation) |
| 191 : invalidation_(invalidation) {} |
| 192 virtual ~InvalidationAdapter() {} |
| 193 |
| 194 virtual bool IsUnknownVersion() const OVERRIDE { |
| 195 return invalidation_.is_unknown_version(); |
| 196 } |
| 197 |
| 198 virtual const std::string& GetPayload() const OVERRIDE { |
| 199 return invalidation_.payload(); |
| 200 } |
| 201 |
| 202 virtual int64 GetVersion() const OVERRIDE { |
| 203 return invalidation_.version(); |
| 204 } |
| 205 |
| 206 virtual void Acknowledge() OVERRIDE { |
| 207 invalidation_.Acknowledge(); |
| 208 } |
| 209 |
| 210 virtual void Drop() OVERRIDE { |
| 211 invalidation_.Drop(); |
| 212 } |
| 213 |
| 214 private: |
| 215 syncer::Invalidation invalidation_; |
| 216 }; |
| 217 |
| 218 class InvalidatorShim : public InvalidationHandler { |
| 219 public: |
| 220 explicit InvalidatorShim(SyncManager* sync_manager) |
| 221 : sync_manager_(sync_manager) {} |
| 222 |
| 223 virtual void OnInvalidatorStateChange(InvalidatorState state) OVERRIDE { |
| 224 sync_manager_->OnInvalidatorStateChange(state); |
| 225 } |
| 226 |
| 227 virtual void OnIncomingInvalidation( |
| 228 const ObjectIdInvalidationMap& invalidation_map) OVERRIDE { |
| 229 syncer::ObjectIdSet ids = invalidation_map.GetObjectIds(); |
| 230 for (syncer::ObjectIdSet::const_iterator ids_it = ids.begin(); |
| 231 ids_it != ids.end(); |
| 232 ++ids_it) { |
| 233 syncer::ModelType type; |
| 234 if (!NotificationTypeToRealModelType(ids_it->name(), &type)) { |
| 235 DLOG(WARNING) << "Notification has invalid id: " |
| 236 << syncer::ObjectIdToString(*ids_it); |
| 237 } else { |
| 238 syncer::SingleObjectInvalidationSet invalidation_set = |
| 239 invalidation_map.ForObject(*ids_it); |
| 240 for (syncer::SingleObjectInvalidationSet::const_iterator inv_it = |
| 241 invalidation_set.begin(); |
| 242 inv_it != invalidation_set.end(); |
| 243 ++inv_it) { |
| 244 scoped_ptr<syncer::InvalidationInterface> inv_adapter( |
| 245 new InvalidationAdapter(*inv_it)); |
| 246 sync_manager_->OnIncomingInvalidation(type, inv_adapter.Pass()); |
| 247 } |
| 248 } |
| 249 } |
| 250 } |
| 251 |
| 252 virtual std::string GetOwnerName() const OVERRIDE { |
| 253 return "InvalidatorShim"; |
| 254 } |
| 255 |
| 256 private: |
| 257 SyncManager* sync_manager_; |
| 258 }; |
| 259 |
| 187 void LogUnrecoverableErrorContext() { | 260 void LogUnrecoverableErrorContext() { |
| 188 base::debug::StackTrace().Print(); | 261 base::debug::StackTrace().Print(); |
| 189 } | 262 } |
| 190 | 263 |
| 191 notifier::NotifierOptions ParseNotifierOptions( | 264 notifier::NotifierOptions ParseNotifierOptions( |
| 192 const CommandLine& command_line, | 265 const CommandLine& command_line, |
| 193 const scoped_refptr<net::URLRequestContextGetter>& | 266 const scoped_refptr<net::URLRequestContextGetter>& |
| 194 request_context_getter) { | 267 request_context_getter) { |
| 195 notifier::NotifierOptions notifier_options; | 268 notifier::NotifierOptions notifier_options; |
| 196 notifier_options.request_context_getter = request_context_getter; | 269 notifier_options.request_context_getter = request_context_getter; |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 kRestoredKeystoreKeyForBootstrapping, | 446 kRestoredKeystoreKeyForBootstrapping, |
| 374 new InternalComponentsFactoryImpl(factory_switches), | 447 new InternalComponentsFactoryImpl(factory_switches), |
| 375 &null_encryptor, | 448 &null_encryptor, |
| 376 scoped_ptr<UnrecoverableErrorHandler>( | 449 scoped_ptr<UnrecoverableErrorHandler>( |
| 377 new LoggingUnrecoverableErrorHandler).Pass(), | 450 new LoggingUnrecoverableErrorHandler).Pass(), |
| 378 &LogUnrecoverableErrorContext, | 451 &LogUnrecoverableErrorContext, |
| 379 &scm_cancelation_signal); | 452 &scm_cancelation_signal); |
| 380 // TODO(akalin): Avoid passing in model parameters multiple times by | 453 // TODO(akalin): Avoid passing in model parameters multiple times by |
| 381 // organizing handling of model types. | 454 // organizing handling of model types. |
| 382 invalidator->UpdateCredentials(credentials.email, credentials.sync_token); | 455 invalidator->UpdateCredentials(credentials.email, credentials.sync_token); |
| 383 invalidator->RegisterHandler(sync_manager.get()); | 456 scoped_ptr<InvalidatorShim> shim(new InvalidatorShim(sync_manager.get())); |
| 457 invalidator->RegisterHandler(shim.get()); |
| 384 invalidator->UpdateRegisteredIds( | 458 invalidator->UpdateRegisteredIds( |
| 385 sync_manager.get(), ModelTypeSetToObjectIdSet(model_types)); | 459 shim.get(), ModelTypeSetToObjectIdSet(model_types)); |
| 386 sync_manager->StartSyncingNormally(routing_info); | 460 sync_manager->StartSyncingNormally(routing_info); |
| 387 | 461 |
| 388 sync_loop.Run(); | 462 sync_loop.Run(); |
| 389 | 463 |
| 390 io_thread.Stop(); | 464 io_thread.Stop(); |
| 391 return 0; | 465 return 0; |
| 392 } | 466 } |
| 393 | 467 |
| 394 } // namespace | 468 } // namespace |
| 395 } // namespace syncer | 469 } // namespace syncer |
| 396 | 470 |
| 397 int main(int argc, char* argv[]) { | 471 int main(int argc, char* argv[]) { |
| 398 return syncer::SyncClientMain(argc, argv); | 472 return syncer::SyncClientMain(argc, argv); |
| 399 } | 473 } |
| OLD | NEW |