| 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 <memory> |
| 7 #include <string> | 8 #include <string> |
| 8 | 9 |
| 9 #include "base/at_exit.h" | 10 #include "base/at_exit.h" |
| 10 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 11 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
| 12 #include "base/logging.h" | 13 #include "base/logging.h" |
| 13 #include "base/macros.h" | 14 #include "base/macros.h" |
| 15 #include "base/memory/ptr_util.h" |
| 14 #include "base/memory/ref_counted.h" | 16 #include "base/memory/ref_counted.h" |
| 15 #include "base/memory/scoped_ptr.h" | |
| 16 #include "base/message_loop/message_loop.h" | 17 #include "base/message_loop/message_loop.h" |
| 17 #include "base/rand_util.h" | 18 #include "base/rand_util.h" |
| 18 #include "base/threading/thread.h" | 19 #include "base/threading/thread.h" |
| 19 #include "build/build_config.h" | 20 #include "build/build_config.h" |
| 20 #include "components/invalidation/impl/invalidation_state_tracker.h" | 21 #include "components/invalidation/impl/invalidation_state_tracker.h" |
| 21 #include "components/invalidation/impl/invalidator.h" | 22 #include "components/invalidation/impl/invalidator.h" |
| 22 #include "components/invalidation/impl/non_blocking_invalidator.h" | 23 #include "components/invalidation/impl/non_blocking_invalidator.h" |
| 23 #include "components/invalidation/public/invalidation_handler.h" | 24 #include "components/invalidation/public/invalidation_handler.h" |
| 24 #include "components/invalidation/public/invalidation_util.h" | 25 #include "components/invalidation/public/invalidation_util.h" |
| 25 #include "components/invalidation/public/object_id_invalidation_map.h" | 26 #include "components/invalidation/public/object_id_invalidation_map.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 DISALLOW_COPY_AND_ASSIGN(NotificationPrinter); | 77 DISALLOW_COPY_AND_ASSIGN(NotificationPrinter); |
| 77 }; | 78 }; |
| 78 | 79 |
| 79 // Needed to use a real host resolver. | 80 // Needed to use a real host resolver. |
| 80 class MyTestURLRequestContext : public net::TestURLRequestContext { | 81 class MyTestURLRequestContext : public net::TestURLRequestContext { |
| 81 public: | 82 public: |
| 82 MyTestURLRequestContext() : TestURLRequestContext(true) { | 83 MyTestURLRequestContext() : TestURLRequestContext(true) { |
| 83 context_storage_.set_host_resolver( | 84 context_storage_.set_host_resolver( |
| 84 net::HostResolver::CreateDefaultResolver(NULL)); | 85 net::HostResolver::CreateDefaultResolver(NULL)); |
| 85 context_storage_.set_transport_security_state( | 86 context_storage_.set_transport_security_state( |
| 86 make_scoped_ptr(new net::TransportSecurityState())); | 87 base::WrapUnique(new net::TransportSecurityState())); |
| 87 Init(); | 88 Init(); |
| 88 } | 89 } |
| 89 | 90 |
| 90 ~MyTestURLRequestContext() override {} | 91 ~MyTestURLRequestContext() override {} |
| 91 }; | 92 }; |
| 92 | 93 |
| 93 class MyTestURLRequestContextGetter : public net::TestURLRequestContextGetter { | 94 class MyTestURLRequestContextGetter : public net::TestURLRequestContextGetter { |
| 94 public: | 95 public: |
| 95 explicit MyTestURLRequestContextGetter( | 96 explicit MyTestURLRequestContextGetter( |
| 96 const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) | 97 const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) |
| 97 : TestURLRequestContextGetter(io_task_runner) {} | 98 : TestURLRequestContextGetter(io_task_runner) {} |
| 98 | 99 |
| 99 net::TestURLRequestContext* GetURLRequestContext() override { | 100 net::TestURLRequestContext* GetURLRequestContext() override { |
| 100 // Construct |context_| lazily so it gets constructed on the right | 101 // Construct |context_| lazily so it gets constructed on the right |
| 101 // thread (the IO thread). | 102 // thread (the IO thread). |
| 102 if (!context_) | 103 if (!context_) |
| 103 context_.reset(new MyTestURLRequestContext()); | 104 context_.reset(new MyTestURLRequestContext()); |
| 104 return context_.get(); | 105 return context_.get(); |
| 105 } | 106 } |
| 106 | 107 |
| 107 private: | 108 private: |
| 108 ~MyTestURLRequestContextGetter() override {} | 109 ~MyTestURLRequestContextGetter() override {} |
| 109 | 110 |
| 110 scoped_ptr<MyTestURLRequestContext> context_; | 111 std::unique_ptr<MyTestURLRequestContext> context_; |
| 111 }; | 112 }; |
| 112 | 113 |
| 113 notifier::NotifierOptions ParseNotifierOptions( | 114 notifier::NotifierOptions ParseNotifierOptions( |
| 114 const base::CommandLine& command_line, | 115 const base::CommandLine& command_line, |
| 115 const scoped_refptr<net::URLRequestContextGetter>& request_context_getter) { | 116 const scoped_refptr<net::URLRequestContextGetter>& request_context_getter) { |
| 116 notifier::NotifierOptions notifier_options; | 117 notifier::NotifierOptions notifier_options; |
| 117 notifier_options.request_context_getter = request_context_getter; | 118 notifier_options.request_context_getter = request_context_getter; |
| 118 | 119 |
| 119 if (command_line.HasSwitch(kHostPortSwitch)) { | 120 if (command_line.HasSwitch(kHostPortSwitch)) { |
| 120 notifier_options.xmpp_host_port = | 121 notifier_options.xmpp_host_port = |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 "syncer::SyncManagerImpl::UpdateCredentials() " | 168 "syncer::SyncManagerImpl::UpdateCredentials() " |
| 168 "after logging into\n" | 169 "after logging into\n" |
| 169 "sync to get the token to pass into this utility.\n", | 170 "sync to get the token to pass into this utility.\n", |
| 170 argv[0], | 171 argv[0], |
| 171 kEmailSwitch, kTokenSwitch, kHostPortSwitch, | 172 kEmailSwitch, kTokenSwitch, kHostPortSwitch, |
| 172 kTrySslTcpFirstSwitch, kAllowInsecureConnectionSwitch); | 173 kTrySslTcpFirstSwitch, kAllowInsecureConnectionSwitch); |
| 173 return -1; | 174 return -1; |
| 174 } | 175 } |
| 175 | 176 |
| 176 // Set up objects that monitor the network. | 177 // Set up objects that monitor the network. |
| 177 scoped_ptr<net::NetworkChangeNotifier> network_change_notifier( | 178 std::unique_ptr<net::NetworkChangeNotifier> network_change_notifier( |
| 178 net::NetworkChangeNotifier::Create()); | 179 net::NetworkChangeNotifier::Create()); |
| 179 | 180 |
| 180 const notifier::NotifierOptions& notifier_options = | 181 const notifier::NotifierOptions& notifier_options = |
| 181 ParseNotifierOptions( | 182 ParseNotifierOptions( |
| 182 command_line, | 183 command_line, |
| 183 new MyTestURLRequestContextGetter(io_thread.task_runner())); | 184 new MyTestURLRequestContextGetter(io_thread.task_runner())); |
| 184 syncer::NetworkChannelCreator network_channel_creator = | 185 syncer::NetworkChannelCreator network_channel_creator = |
| 185 syncer::NonBlockingInvalidator::MakePushClientChannelCreator( | 186 syncer::NonBlockingInvalidator::MakePushClientChannelCreator( |
| 186 notifier_options); | 187 notifier_options); |
| 187 const char kClientInfo[] = "sync_listen_notifications"; | 188 const char kClientInfo[] = "sync_listen_notifications"; |
| 188 NullInvalidationStateTracker null_invalidation_state_tracker; | 189 NullInvalidationStateTracker null_invalidation_state_tracker; |
| 189 scoped_ptr<Invalidator> invalidator( | 190 std::unique_ptr<Invalidator> invalidator(new NonBlockingInvalidator( |
| 190 new NonBlockingInvalidator( | 191 network_channel_creator, base::RandBytesAsString(8), |
| 191 network_channel_creator, | 192 null_invalidation_state_tracker.GetSavedInvalidations(), |
| 192 base::RandBytesAsString(8), | 193 null_invalidation_state_tracker.GetBootstrapData(), |
| 193 null_invalidation_state_tracker.GetSavedInvalidations(), | 194 &null_invalidation_state_tracker, kClientInfo, |
| 194 null_invalidation_state_tracker.GetBootstrapData(), | 195 notifier_options.request_context_getter)); |
| 195 &null_invalidation_state_tracker, | |
| 196 kClientInfo, | |
| 197 notifier_options.request_context_getter)); | |
| 198 | 196 |
| 199 NotificationPrinter notification_printer; | 197 NotificationPrinter notification_printer; |
| 200 | 198 |
| 201 invalidator->UpdateCredentials(email, token); | 199 invalidator->UpdateCredentials(email, token); |
| 202 | 200 |
| 203 // Listen for notifications for all known types. | 201 // Listen for notifications for all known types. |
| 204 invalidator->RegisterHandler(¬ification_printer); | 202 invalidator->RegisterHandler(¬ification_printer); |
| 205 CHECK(invalidator->UpdateRegisteredIds( | 203 CHECK(invalidator->UpdateRegisteredIds( |
| 206 ¬ification_printer, ModelTypeSetToObjectIdSet(ModelTypeSet::All()))); | 204 ¬ification_printer, ModelTypeSetToObjectIdSet(ModelTypeSet::All()))); |
| 207 | 205 |
| 208 ui_loop.Run(); | 206 ui_loop.Run(); |
| 209 | 207 |
| 210 invalidator->UnregisterHandler(¬ification_printer); | 208 invalidator->UnregisterHandler(¬ification_printer); |
| 211 io_thread.Stop(); | 209 io_thread.Stop(); |
| 212 return 0; | 210 return 0; |
| 213 } | 211 } |
| 214 | 212 |
| 215 } // namespace | 213 } // namespace |
| 216 } // namespace syncer | 214 } // namespace syncer |
| 217 | 215 |
| 218 int main(int argc, char* argv[]) { | 216 int main(int argc, char* argv[]) { |
| 219 return syncer::SyncListenNotificationsMain(argc, argv); | 217 return syncer::SyncListenNotificationsMain(argc, argv); |
| 220 } | 218 } |
| OLD | NEW |