1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#ifndef COMPONENTS_INVALIDATION_INVALIDATOR_STORAGE_H_ 6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#define COMPONENTS_INVALIDATION_INVALIDATOR_STORAGE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/compiler_specific.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/macros.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/threading/thread_checker.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/invalidation/invalidation_state_tracker.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass PrefRegistrySimple; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefService; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace user_prefs { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class PrefRegistrySyncable; 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 20a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)namespace invalidation { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Wraps PrefService in an InvalidationStateTracker to allow SyncNotifiers 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// to use PrefService as persistence for invalidation state. It is not thread 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// safe, and lives on the UI thread. 250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass InvalidatorStorage : public syncer::InvalidationStateTracker { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // |pref_service| may not be NULL and must outlive |this|. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit InvalidatorStorage(PrefService* pref_service); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~InvalidatorStorage(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Register prefs to be used by per-Profile instances of this class which 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // store invalidation state in Profile prefs. 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Register prefs to be used by a device-global instance of this class which 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // stores invalidation state in local state. This is used on Chrome OS only. 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch static void RegisterPrefs(PrefRegistrySimple* registry); 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // InvalidationStateTracker implementation. 400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual void ClearAndSetNewClientId(const std::string& client_id) OVERRIDE; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual std::string GetInvalidatorClientId() const OVERRIDE; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetBootstrapData(const std::string& data) OVERRIDE; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetBootstrapData() const OVERRIDE; 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void SetSavedInvalidations( 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const syncer::UnackedInvalidationsMap& map) OVERRIDE; 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual syncer::UnackedInvalidationsMap GetSavedInvalidations() 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const OVERRIDE; 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void Clear() OVERRIDE; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::ThreadChecker thread_checker_; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrefService* const pref_service_; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(InvalidatorStorage); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 58a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} // namespace invalidation 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif // COMPONENTS_INVALIDATION_INVALIDATOR_STORAGE_H_ 61