diff options
author | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-16 17:31:55 +0000 |
---|---|---|
committer | asargent@chromium.org <asargent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-16 17:31:55 +0000 |
commit | b3ab8b16617e3cb5fe1ddb74794113312ba3632a (patch) | |
tree | 77ab30f6cb16cdf656d5777102aae5369f63f7e6 /sync | |
parent | 54a3cc1d3f8cb966541d2d751de5f487059a2280 (diff) | |
download | chromium_src-b3ab8b16617e3cb5fe1ddb74794113312ba3632a.zip chromium_src-b3ab8b16617e3cb5fe1ddb74794113312ba3632a.tar.gz chromium_src-b3ab8b16617e3cb5fe1ddb74794113312ba3632a.tar.bz2 |
Revert 264226 "Reduce dependency of TiclInvalidationService on P..."
This caused a clang compile error:
../../sync/tools/sync_client.cc:278:43:error: no matching constructor for initialization of 'syncer::NonBlockingInvalidator'
scoped_ptr<Invalidator> invalidator(new NonBlockingInvalidator(
> Reduce dependency of TiclInvalidationService on Profile
>
> With this CL, a URLRequestContext and an InvalidationStateTracker are
> passed to TiclInvalidationService as explicit dependencies. This reduces
> the dependency of TiclInvalidationService on Profile, taking a step toward
> eventually removing the dependency altogether.
>
> BUG=358696
> TEST=Updated unit tests
>
> Review URL: https://codereview.chromium.org/221963003
TBR=bartfab@chromium.org
Review URL: https://codereview.chromium.org/240153005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264241 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync')
-rw-r--r-- | sync/notifier/fake_invalidation_state_tracker.cc | 2 | ||||
-rw-r--r-- | sync/notifier/fake_invalidation_state_tracker.h | 2 | ||||
-rw-r--r-- | sync/notifier/invalidation_state_tracker.h | 11 | ||||
-rw-r--r-- | sync/notifier/non_blocking_invalidator.cc | 88 | ||||
-rw-r--r-- | sync/notifier/non_blocking_invalidator.h | 36 | ||||
-rw-r--r-- | sync/notifier/non_blocking_invalidator_unittest.cc | 7 | ||||
-rw-r--r-- | sync/tools/null_invalidation_state_tracker.cc | 2 | ||||
-rw-r--r-- | sync/tools/null_invalidation_state_tracker.h | 2 |
8 files changed, 54 insertions, 96 deletions
diff --git a/sync/notifier/fake_invalidation_state_tracker.cc b/sync/notifier/fake_invalidation_state_tracker.cc index ccef53e..47e2f0f 100644 --- a/sync/notifier/fake_invalidation_state_tracker.cc +++ b/sync/notifier/fake_invalidation_state_tracker.cc @@ -18,7 +18,7 @@ FakeInvalidationStateTracker::FakeInvalidationStateTracker() {} FakeInvalidationStateTracker::~FakeInvalidationStateTracker() {} -void FakeInvalidationStateTracker::ClearAndSetNewClientId( +void FakeInvalidationStateTracker::SetInvalidatorClientId( const std::string& client_id) { Clear(); invalidator_client_id_ = client_id; diff --git a/sync/notifier/fake_invalidation_state_tracker.h b/sync/notifier/fake_invalidation_state_tracker.h index eb62256..d1daaba 100644 --- a/sync/notifier/fake_invalidation_state_tracker.h +++ b/sync/notifier/fake_invalidation_state_tracker.h @@ -20,7 +20,7 @@ class FakeInvalidationStateTracker virtual ~FakeInvalidationStateTracker(); // InvalidationStateTracker implementation. - virtual void ClearAndSetNewClientId(const std::string& client_id) OVERRIDE; + virtual void SetInvalidatorClientId(const std::string& client_id) OVERRIDE; virtual std::string GetInvalidatorClientId() const OVERRIDE; virtual void SetBootstrapData(const std::string& data) OVERRIDE; virtual std::string GetBootstrapData() const OVERRIDE; diff --git a/sync/notifier/invalidation_state_tracker.h b/sync/notifier/invalidation_state_tracker.h index 22e3e6f..81a07ea 100644 --- a/sync/notifier/invalidation_state_tracker.h +++ b/sync/notifier/invalidation_state_tracker.h @@ -30,16 +30,14 @@ class TaskRunner; namespace syncer { -class SYNC_EXPORT InvalidationStateTracker { +class InvalidationStateTracker { public: InvalidationStateTracker() {} - virtual ~InvalidationStateTracker() {} // The per-client unique ID used to register the invalidation client with the // server. This is used to squelch invalidation notifications that originate - // from changes made by this client. Setting the client ID clears all other - // state. - virtual void ClearAndSetNewClientId(const std::string& data) = 0; + // from changes made by this client. + virtual void SetInvalidatorClientId(const std::string& data) = 0; virtual std::string GetInvalidatorClientId() const = 0; // Used by invalidation::InvalidationClient for persistence. |data| is an @@ -57,6 +55,9 @@ class SYNC_EXPORT InvalidationStateTracker { // Erases invalidation versions, client ID, and state stored on disk. virtual void Clear() = 0; + + protected: + virtual ~InvalidationStateTracker() {} }; } // namespace syncer diff --git a/sync/notifier/non_blocking_invalidator.cc b/sync/notifier/non_blocking_invalidator.cc index df40477..db8d018 100644 --- a/sync/notifier/non_blocking_invalidator.cc +++ b/sync/notifier/non_blocking_invalidator.cc @@ -13,9 +13,7 @@ #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" @@ -97,9 +95,10 @@ 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<NonBlockingInvalidator>& delegate_observer); + const WeakHandle<InvalidationHandler>& delegate_observer); // Helpers called on I/O thread. void Initialize( @@ -124,7 +123,7 @@ class NonBlockingInvalidator::Core virtual ~Core(); // The variables below should be used only on the I/O thread. - const WeakHandle<NonBlockingInvalidator> delegate_observer_; + const WeakHandle<InvalidationHandler> delegate_observer_; scoped_ptr<InvalidationNotifier> invalidation_notifier_; scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_; @@ -132,7 +131,7 @@ class NonBlockingInvalidator::Core }; NonBlockingInvalidator::Core::Core( - const WeakHandle<NonBlockingInvalidator>& delegate_observer) + const WeakHandle<InvalidationHandler>& delegate_observer) : delegate_observer_(delegate_observer) { DCHECK(delegate_observer_.IsInitialized()); } @@ -186,16 +185,15 @@ void NonBlockingInvalidator::Core::RequestDetailedStatus( void NonBlockingInvalidator::Core::OnInvalidatorStateChange( InvalidatorState reason) { DCHECK(network_task_runner_->BelongsToCurrentThread()); - delegate_observer_.Call(FROM_HERE, - &NonBlockingInvalidator::OnInvalidatorStateChange, - reason); + delegate_observer_.Call( + FROM_HERE, &InvalidationHandler::OnInvalidatorStateChange, reason); } void NonBlockingInvalidator::Core::OnIncomingInvalidation( const ObjectIdInvalidationMap& invalidation_map) { DCHECK(network_task_runner_->BelongsToCurrentThread()); delegate_observer_.Call(FROM_HERE, - &NonBlockingInvalidator::OnIncomingInvalidation, + &InvalidationHandler::OnIncomingInvalidation, invalidation_map); } @@ -208,11 +206,11 @@ NonBlockingInvalidator::NonBlockingInvalidator( const std::string& invalidator_client_id, const UnackedInvalidationsMap& saved_invalidations, const std::string& invalidation_bootstrap_data, - InvalidationStateTracker* invalidation_state_tracker, + const WeakHandle<InvalidationStateTracker>& + invalidation_state_tracker, const std::string& client_info, const scoped_refptr<net::URLRequestContextGetter>& request_context_getter) - : invalidation_state_tracker_(invalidation_state_tracker), - parent_task_runner_(base::ThreadTaskRunnerHandle::Get()), + : 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())); @@ -222,7 +220,7 @@ NonBlockingInvalidator::NonBlockingInvalidator( invalidator_client_id, saved_invalidations, invalidation_bootstrap_data, - MakeWeakHandle(weak_ptr_factory_.GetWeakPtr()), + invalidation_state_tracker, client_info, request_context_getter); @@ -300,6 +298,19 @@ 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) { @@ -315,53 +326,4 @@ 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 diff --git a/sync/notifier/non_blocking_invalidator.h b/sync/notifier/non_blocking_invalidator.h index efdf89d..47bd216 100644 --- a/sync/notifier/non_blocking_invalidator.h +++ b/sync/notifier/non_blocking_invalidator.h @@ -17,11 +17,11 @@ #include "base/memory/weak_ptr.h" #include "jingle/notifier/base/notifier_options.h" #include "sync/base/sync_export.h" +#include "sync/internal_api/public/util/weak_handle.h" +#include "sync/notifier/invalidation_handler.h" #include "sync/notifier/invalidation_state_tracker.h" #include "sync/notifier/invalidator.h" #include "sync/notifier/invalidator_registrar.h" -#include "sync/notifier/invalidator_state.h" -#include "sync/notifier/unacked_invalidation_set.h" namespace base { class SingleThreadTaskRunner; @@ -38,15 +38,17 @@ typedef base::Callback<scoped_ptr<SyncNetworkChannel>(void)> class SYNC_EXPORT_PRIVATE NonBlockingInvalidator : public Invalidator, - public InvalidationStateTracker { + // InvalidationHandler to "observe" our Core via WeakHandle. + public InvalidationHandler { public: - // |invalidation_state_tracker| must be initialized and must outlive |this|. + // |invalidation_state_tracker| must be initialized. NonBlockingInvalidator( NetworkChannelCreator network_channel_creator, const std::string& invalidator_client_id, const UnackedInvalidationsMap& saved_invalidations, const std::string& invalidation_bootstrap_data, - InvalidationStateTracker* invalidation_state_tracker, + const WeakHandle<InvalidationStateTracker>& + invalidation_state_tracker, const std::string& client_info, const scoped_refptr<net::URLRequestContextGetter>& request_context_getter); @@ -65,6 +67,12 @@ class SYNC_EXPORT_PRIVATE NonBlockingInvalidator base::Callback<void(const base::DictionaryValue&)> callback) const OVERRIDE; + // InvalidationHandler implementation. + virtual void OnInvalidatorStateChange(InvalidatorState state) OVERRIDE; + virtual void OnIncomingInvalidation( + const ObjectIdInvalidationMap& invalidation_map) OVERRIDE; + virtual std::string GetOwnerName() const OVERRIDE; + // Static functions to construct callback that creates network channel for // SyncSystemResources. The goal is to pass network channel to invalidator at // the same time not exposing channel specific parameters to invalidator and @@ -74,29 +82,11 @@ class SYNC_EXPORT_PRIVATE NonBlockingInvalidator static NetworkChannelCreator MakeGCMNetworkChannelCreator( scoped_refptr<net::URLRequestContextGetter> request_context_getter, scoped_ptr<GCMNetworkChannelDelegate> delegate); - - // These methods are forwarded to the invalidation_state_tracker_. - virtual void ClearAndSetNewClientId(const std::string& data) OVERRIDE; - virtual std::string GetInvalidatorClientId() const OVERRIDE; - virtual void SetBootstrapData(const std::string& data) OVERRIDE; - virtual std::string GetBootstrapData() const OVERRIDE; - virtual void SetSavedInvalidations( - const UnackedInvalidationsMap& states) OVERRIDE; - virtual UnackedInvalidationsMap GetSavedInvalidations() const OVERRIDE; - virtual void Clear() OVERRIDE; - private: - void OnInvalidatorStateChange(InvalidatorState state); - void OnIncomingInvalidation(const ObjectIdInvalidationMap& invalidation_map); - std::string GetOwnerName() const; - - friend class NonBlockingInvalidatorTestDelegate; - struct InitializeOptions; class Core; InvalidatorRegistrar registrar_; - InvalidationStateTracker* invalidation_state_tracker_; // The real guts of NonBlockingInvalidator, which allows this class to live // completely on the parent thread. diff --git a/sync/notifier/non_blocking_invalidator_unittest.cc b/sync/notifier/non_blocking_invalidator_unittest.cc index 07700a5..3dd2dbb 100644 --- a/sync/notifier/non_blocking_invalidator_unittest.cc +++ b/sync/notifier/non_blocking_invalidator_unittest.cc @@ -13,6 +13,7 @@ #include "google/cacheinvalidation/types.pb.h" #include "jingle/notifier/base/fake_base_task.h" #include "net/url_request/url_request_test_util.h" +#include "sync/internal_api/public/util/weak_handle.h" #include "sync/notifier/fake_invalidation_handler.h" #include "sync/notifier/invalidation_state_tracker.h" #include "sync/notifier/invalidator_test_template.h" @@ -20,6 +21,8 @@ namespace syncer { +namespace { + class NonBlockingInvalidatorTestDelegate { public: NonBlockingInvalidatorTestDelegate() : io_thread_("IO thread") {} @@ -49,7 +52,7 @@ class NonBlockingInvalidatorTestDelegate { invalidator_client_id, UnackedInvalidationsMap(), initial_state, - invalidation_state_tracker.get(), + MakeWeakHandle(invalidation_state_tracker), "fake_client_info", request_context_getter_)); } @@ -95,4 +98,6 @@ INSTANTIATE_TYPED_TEST_CASE_P( NonBlockingInvalidatorTest, InvalidatorTest, NonBlockingInvalidatorTestDelegate); +} // namespace + } // namespace syncer diff --git a/sync/tools/null_invalidation_state_tracker.cc b/sync/tools/null_invalidation_state_tracker.cc index d7f949f..6823759 100644 --- a/sync/tools/null_invalidation_state_tracker.cc +++ b/sync/tools/null_invalidation_state_tracker.cc @@ -17,7 +17,7 @@ namespace syncer { NullInvalidationStateTracker::NullInvalidationStateTracker() {} NullInvalidationStateTracker::~NullInvalidationStateTracker() {} -void NullInvalidationStateTracker::ClearAndSetNewClientId( +void NullInvalidationStateTracker::SetInvalidatorClientId( const std::string& data) { LOG(INFO) << "Setting invalidator client ID to: " << data; } diff --git a/sync/tools/null_invalidation_state_tracker.h b/sync/tools/null_invalidation_state_tracker.h index a08fe7d..a12844c 100644 --- a/sync/tools/null_invalidation_state_tracker.h +++ b/sync/tools/null_invalidation_state_tracker.h @@ -18,7 +18,7 @@ class NullInvalidationStateTracker NullInvalidationStateTracker(); virtual ~NullInvalidationStateTracker(); - virtual void ClearAndSetNewClientId(const std::string& data) OVERRIDE; + virtual void SetInvalidatorClientId(const std::string& data) OVERRIDE; virtual std::string GetInvalidatorClientId() const OVERRIDE; virtual std::string GetBootstrapData() const OVERRIDE; |