| Index: sync/notifier/non_blocking_invalidator.cc
|
| diff --git a/sync/notifier/non_blocking_invalidator.cc b/sync/notifier/non_blocking_invalidator.cc
|
| index db8d018f8bc75224b1dbdf7207558db2051b1629..df40477d9bd490cebaca0edc0c36091b3a836cc5 100644
|
| --- a/sync/notifier/non_blocking_invalidator.cc
|
| +++ b/sync/notifier/non_blocking_invalidator.cc
|
| @@ -13,7 +13,9 @@
|
| #include "base/thread_task_runner_handle.h"
|
| #include "base/threading/thread.h"
|
| #include "jingle/notifier/listener/push_client.h"
|
| +#include "sync/internal_api/public/util/weak_handle.h"
|
| #include "sync/notifier/gcm_network_channel_delegate.h"
|
| +#include "sync/notifier/invalidation_handler.h"
|
| #include "sync/notifier/invalidation_notifier.h"
|
| #include "sync/notifier/object_id_invalidation_map.h"
|
| #include "sync/notifier/sync_system_resources.h"
|
| @@ -95,10 +97,9 @@ class NonBlockingInvalidator::Core
|
| // InvalidationHandler to observe the InvalidationNotifier we create.
|
| public InvalidationHandler {
|
| public:
|
| - // Called on parent thread. |delegate_observer| should be
|
| - // initialized.
|
| + // Called on parent thread. |delegate_observer| should be initialized.
|
| explicit Core(
|
| - const WeakHandle<InvalidationHandler>& delegate_observer);
|
| + const WeakHandle<NonBlockingInvalidator>& delegate_observer);
|
|
|
| // Helpers called on I/O thread.
|
| void Initialize(
|
| @@ -123,7 +124,7 @@ class NonBlockingInvalidator::Core
|
| virtual ~Core();
|
|
|
| // The variables below should be used only on the I/O thread.
|
| - const WeakHandle<InvalidationHandler> delegate_observer_;
|
| + const WeakHandle<NonBlockingInvalidator> delegate_observer_;
|
| scoped_ptr<InvalidationNotifier> invalidation_notifier_;
|
| scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_;
|
|
|
| @@ -131,7 +132,7 @@ class NonBlockingInvalidator::Core
|
| };
|
|
|
| NonBlockingInvalidator::Core::Core(
|
| - const WeakHandle<InvalidationHandler>& delegate_observer)
|
| + const WeakHandle<NonBlockingInvalidator>& delegate_observer)
|
| : delegate_observer_(delegate_observer) {
|
| DCHECK(delegate_observer_.IsInitialized());
|
| }
|
| @@ -185,15 +186,16 @@ void NonBlockingInvalidator::Core::RequestDetailedStatus(
|
| void NonBlockingInvalidator::Core::OnInvalidatorStateChange(
|
| InvalidatorState reason) {
|
| DCHECK(network_task_runner_->BelongsToCurrentThread());
|
| - delegate_observer_.Call(
|
| - FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason);
|
| + delegate_observer_.Call(FROM_HERE,
|
| + &NonBlockingInvalidator::OnInvalidatorStateChange,
|
| + reason);
|
| }
|
|
|
| void NonBlockingInvalidator::Core::OnIncomingInvalidation(
|
| const ObjectIdInvalidationMap& invalidation_map) {
|
| DCHECK(network_task_runner_->BelongsToCurrentThread());
|
| delegate_observer_.Call(FROM_HERE,
|
| - &InvalidationHandler::OnIncomingInvalidation,
|
| + &NonBlockingInvalidator::OnIncomingInvalidation,
|
| invalidation_map);
|
| }
|
|
|
| @@ -206,11 +208,11 @@ NonBlockingInvalidator::NonBlockingInvalidator(
|
| const std::string& invalidator_client_id,
|
| const UnackedInvalidationsMap& saved_invalidations,
|
| const std::string& invalidation_bootstrap_data,
|
| - const WeakHandle<InvalidationStateTracker>&
|
| - invalidation_state_tracker,
|
| + InvalidationStateTracker* invalidation_state_tracker,
|
| const std::string& client_info,
|
| const scoped_refptr<net::URLRequestContextGetter>& request_context_getter)
|
| - : parent_task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| + : invalidation_state_tracker_(invalidation_state_tracker),
|
| + parent_task_runner_(base::ThreadTaskRunnerHandle::Get()),
|
| network_task_runner_(request_context_getter->GetNetworkTaskRunner()),
|
| weak_ptr_factory_(this) {
|
| core_ = new Core(MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()));
|
| @@ -220,7 +222,7 @@ NonBlockingInvalidator::NonBlockingInvalidator(
|
| invalidator_client_id,
|
| saved_invalidations,
|
| invalidation_bootstrap_data,
|
| - invalidation_state_tracker,
|
| + MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()),
|
| client_info,
|
| request_context_getter);
|
|
|
| @@ -298,19 +300,6 @@ void NonBlockingInvalidator::RequestDetailedStatus(
|
| }
|
| }
|
|
|
| -void NonBlockingInvalidator::OnInvalidatorStateChange(InvalidatorState state) {
|
| - DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| - registrar_.UpdateInvalidatorState(state);
|
| -}
|
| -
|
| -void NonBlockingInvalidator::OnIncomingInvalidation(
|
| - const ObjectIdInvalidationMap& invalidation_map) {
|
| - DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| - registrar_.DispatchInvalidationsToHandlers(invalidation_map);
|
| -}
|
| -
|
| -std::string NonBlockingInvalidator::GetOwnerName() const { return "Sync"; }
|
| -
|
| NetworkChannelCreator
|
| NonBlockingInvalidator::MakePushClientChannelCreator(
|
| const notifier::NotifierOptions& notifier_options) {
|
| @@ -326,4 +315,53 @@ NetworkChannelCreator NonBlockingInvalidator::MakeGCMNetworkChannelCreator(
|
| base::Passed(&delegate));
|
| }
|
|
|
| +void NonBlockingInvalidator::ClearAndSetNewClientId(const std::string& data) {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + invalidation_state_tracker_->ClearAndSetNewClientId(data);
|
| +}
|
| +
|
| +std::string NonBlockingInvalidator::GetInvalidatorClientId() const {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + return invalidation_state_tracker_->GetInvalidatorClientId();
|
| +}
|
| +
|
| +void NonBlockingInvalidator::SetBootstrapData(const std::string& data) {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + invalidation_state_tracker_->SetBootstrapData(data);
|
| +}
|
| +
|
| +std::string NonBlockingInvalidator::GetBootstrapData() const {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + return invalidation_state_tracker_->GetBootstrapData();
|
| +}
|
| +
|
| +void NonBlockingInvalidator::SetSavedInvalidations(
|
| + const UnackedInvalidationsMap& states) {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + invalidation_state_tracker_->SetSavedInvalidations(states);
|
| +}
|
| +
|
| +UnackedInvalidationsMap NonBlockingInvalidator::GetSavedInvalidations() const {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + return invalidation_state_tracker_->GetSavedInvalidations();
|
| +}
|
| +
|
| +void NonBlockingInvalidator::Clear() {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + invalidation_state_tracker_->Clear();
|
| +}
|
| +
|
| +void NonBlockingInvalidator::OnInvalidatorStateChange(InvalidatorState state) {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + registrar_.UpdateInvalidatorState(state);
|
| +}
|
| +
|
| +void NonBlockingInvalidator::OnIncomingInvalidation(
|
| + const ObjectIdInvalidationMap& invalidation_map) {
|
| + DCHECK(parent_task_runner_->BelongsToCurrentThread());
|
| + registrar_.DispatchInvalidationsToHandlers(invalidation_map);
|
| +}
|
| +
|
| +std::string NonBlockingInvalidator::GetOwnerName() const { return "Sync"; }
|
| +
|
| } // namespace syncer
|
|
|