Chromium Code Reviews| 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 "sync/notifier/non_blocking_invalidator.h" | 5 #include "sync/notifier/non_blocking_invalidator.h" |
| 6 | 6 |
| 7 #include <cstddef> | 7 #include <cstddef> |
| 8 | 8 |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "base/single_thread_task_runner.h" | 12 #include "base/single_thread_task_runner.h" |
| 13 #include "base/thread_task_runner_handle.h" | 13 #include "base/thread_task_runner_handle.h" |
| 14 #include "base/threading/thread.h" | 14 #include "base/threading/thread.h" |
| 15 #include "jingle/notifier/listener/push_client.h" | 15 #include "jingle/notifier/listener/push_client.h" |
| 16 #include "sync/internal_api/public/util/weak_handle.h" | |
| 16 #include "sync/notifier/gcm_network_channel_delegate.h" | 17 #include "sync/notifier/gcm_network_channel_delegate.h" |
| 17 #include "sync/notifier/invalidation_notifier.h" | 18 #include "sync/notifier/invalidation_notifier.h" |
| 18 #include "sync/notifier/object_id_invalidation_map.h" | 19 #include "sync/notifier/object_id_invalidation_map.h" |
| 19 #include "sync/notifier/sync_system_resources.h" | 20 #include "sync/notifier/sync_system_resources.h" |
| 20 | 21 |
| 21 namespace syncer { | 22 namespace syncer { |
| 22 | 23 |
| 23 struct NonBlockingInvalidator::InitializeOptions { | 24 struct NonBlockingInvalidator::InitializeOptions { |
| 24 InitializeOptions( | 25 InitializeOptions( |
| 25 NetworkChannelCreator network_channel_creator, | 26 NetworkChannelCreator network_channel_creator, |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 178 | 179 |
| 179 void NonBlockingInvalidator::Core::RequestDetailedStatus( | 180 void NonBlockingInvalidator::Core::RequestDetailedStatus( |
| 180 base::Callback<void(const base::DictionaryValue&)> callback) const { | 181 base::Callback<void(const base::DictionaryValue&)> callback) const { |
| 181 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 182 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
| 182 invalidation_notifier_->RequestDetailedStatus(callback); | 183 invalidation_notifier_->RequestDetailedStatus(callback); |
| 183 } | 184 } |
| 184 | 185 |
| 185 void NonBlockingInvalidator::Core::OnInvalidatorStateChange( | 186 void NonBlockingInvalidator::Core::OnInvalidatorStateChange( |
| 186 InvalidatorState reason) { | 187 InvalidatorState reason) { |
| 187 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 188 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
| 188 delegate_observer_.Call( | 189 delegate_observer_.Call( |
|
Nicolas Zea
2014/04/15 16:30:42
these calls here would no longer interact directly
bartfab (slow)
2014/04/15 16:48:44
If it was only NonBlockingInvalidator::Core that a
Nicolas Zea
2014/04/15 17:50:55
Anything beyond the core isn't a concern though. I
| |
| 189 FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason); | 190 FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason); |
| 190 } | 191 } |
| 191 | 192 |
| 192 void NonBlockingInvalidator::Core::OnIncomingInvalidation( | 193 void NonBlockingInvalidator::Core::OnIncomingInvalidation( |
| 193 const ObjectIdInvalidationMap& invalidation_map) { | 194 const ObjectIdInvalidationMap& invalidation_map) { |
| 194 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 195 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
| 195 delegate_observer_.Call(FROM_HERE, | 196 delegate_observer_.Call(FROM_HERE, |
| 196 &InvalidationHandler::OnIncomingInvalidation, | 197 &InvalidationHandler::OnIncomingInvalidation, |
| 197 invalidation_map); | 198 invalidation_map); |
| 198 } | 199 } |
| 199 | 200 |
| 200 std::string NonBlockingInvalidator::Core::GetOwnerName() const { | 201 std::string NonBlockingInvalidator::Core::GetOwnerName() const { |
| 201 return "Sync"; | 202 return "Sync"; |
| 202 } | 203 } |
| 203 | 204 |
| 204 NonBlockingInvalidator::NonBlockingInvalidator( | 205 NonBlockingInvalidator::NonBlockingInvalidator( |
| 205 NetworkChannelCreator network_channel_creator, | 206 NetworkChannelCreator network_channel_creator, |
| 206 const std::string& invalidator_client_id, | 207 const std::string& invalidator_client_id, |
| 207 const UnackedInvalidationsMap& saved_invalidations, | 208 const UnackedInvalidationsMap& saved_invalidations, |
| 208 const std::string& invalidation_bootstrap_data, | 209 const std::string& invalidation_bootstrap_data, |
| 209 const WeakHandle<InvalidationStateTracker>& | 210 InvalidationStateTracker* invalidation_state_tracker, |
| 210 invalidation_state_tracker, | |
| 211 const std::string& client_info, | 211 const std::string& client_info, |
| 212 const scoped_refptr<net::URLRequestContextGetter>& request_context_getter) | 212 const scoped_refptr<net::URLRequestContextGetter>& request_context_getter) |
| 213 : parent_task_runner_(base::ThreadTaskRunnerHandle::Get()), | 213 : parent_task_runner_(base::ThreadTaskRunnerHandle::Get()), |
| 214 network_task_runner_(request_context_getter->GetNetworkTaskRunner()), | 214 network_task_runner_(request_context_getter->GetNetworkTaskRunner()), |
| 215 invalidation_state_tracker_weak_ptr_factory_(invalidation_state_tracker), | |
| 215 weak_ptr_factory_(this) { | 216 weak_ptr_factory_(this) { |
| 216 core_ = new Core(MakeWeakHandle(weak_ptr_factory_.GetWeakPtr())); | 217 core_ = new Core(MakeWeakHandle(weak_ptr_factory_.GetWeakPtr())); |
| 217 | 218 |
| 218 InitializeOptions initialize_options( | 219 InitializeOptions initialize_options( |
| 219 network_channel_creator, | 220 network_channel_creator, |
| 220 invalidator_client_id, | 221 invalidator_client_id, |
| 221 saved_invalidations, | 222 saved_invalidations, |
| 222 invalidation_bootstrap_data, | 223 invalidation_bootstrap_data, |
| 223 invalidation_state_tracker, | 224 MakeWeakHandle(invalidation_state_tracker_weak_ptr_factory_.GetWeakPtr()), |
|
Nicolas Zea
2014/04/15 16:30:42
I don't think this is necessary. Instead just have
| |
| 224 client_info, | 225 client_info, |
| 225 request_context_getter); | 226 request_context_getter); |
| 226 | 227 |
| 227 if (!network_task_runner_->PostTask( | 228 if (!network_task_runner_->PostTask( |
| 228 FROM_HERE, | 229 FROM_HERE, |
| 229 base::Bind( | 230 base::Bind( |
| 230 &NonBlockingInvalidator::Core::Initialize, | 231 &NonBlockingInvalidator::Core::Initialize, |
| 231 core_.get(), | 232 core_.get(), |
| 232 initialize_options))) { | 233 initialize_options))) { |
| 233 NOTREACHED(); | 234 NOTREACHED(); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 320 | 321 |
| 321 NetworkChannelCreator NonBlockingInvalidator::MakeGCMNetworkChannelCreator( | 322 NetworkChannelCreator NonBlockingInvalidator::MakeGCMNetworkChannelCreator( |
| 322 scoped_refptr<net::URLRequestContextGetter> request_context_getter, | 323 scoped_refptr<net::URLRequestContextGetter> request_context_getter, |
| 323 scoped_ptr<GCMNetworkChannelDelegate> delegate) { | 324 scoped_ptr<GCMNetworkChannelDelegate> delegate) { |
| 324 return base::Bind(&SyncNetworkChannel::CreateGCMNetworkChannel, | 325 return base::Bind(&SyncNetworkChannel::CreateGCMNetworkChannel, |
| 325 request_context_getter, | 326 request_context_getter, |
| 326 base::Passed(&delegate)); | 327 base::Passed(&delegate)); |
| 327 } | 328 } |
| 328 | 329 |
| 329 } // namespace syncer | 330 } // namespace syncer |
| OLD | NEW |