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 |