1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef CHROME_BROWSER_INVALIDATION_FAKE_INVALIDATION_SERVICE_H_ 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define CHROME_BROWSER_INVALIDATION_FAKE_INVALIDATION_SERVICE_H_ 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <list> 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <utility> 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "base/basictypes.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/callback_forward.h" 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/signin/fake_profile_oauth2_token_service.h" 140de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)#include "components/invalidation/invalidation_service.h" 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "components/invalidation/invalidator_registrar.h" 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "components/invalidation/mock_ack_handler.h" 170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "google_apis/gaia/fake_identity_provider.h" 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace syncer { 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class Invalidation; 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace invalidation { 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class InvalidationLogger; 265d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// An InvalidationService that emits invalidations only when 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// its EmitInvalidationForTest method is called. 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass FakeInvalidationService : public InvalidationService { 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch FakeInvalidationService(); 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~FakeInvalidationService(); 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void RegisterInvalidationHandler( 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch syncer::InvalidationHandler* handler) OVERRIDE; 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void UpdateRegisteredInvalidationIds( 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch syncer::InvalidationHandler* handler, 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const syncer::ObjectIdSet& ids) OVERRIDE; 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void UnregisterInvalidationHandler( 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch syncer::InvalidationHandler* handler) OVERRIDE; 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual syncer::InvalidatorState GetInvalidatorState() const OVERRIDE; 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual std::string GetInvalidatorClientId() const OVERRIDE; 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual InvalidationLogger* GetInvalidationLogger() OVERRIDE; 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual void RequestDetailedStatus( 46effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch base::Callback<void(const base::DictionaryValue&)> caller) const OVERRIDE; 470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch virtual IdentityProvider* GetIdentityProvider() OVERRIDE; 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void SetInvalidatorState(syncer::InvalidatorState state); 50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) const syncer::InvalidatorRegistrar& invalidator_registrar() const { 52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return invalidator_registrar_; 53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) void EmitInvalidationForTest(const syncer::Invalidation& invalidation); 56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Emitted invalidations will be hooked up to this AckHandler. Clients can 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // query it to assert the invalidaitons are being acked properly. 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) syncer::MockAckHandler* GetMockAckHandler(); 60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::string client_id_; 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch syncer::InvalidatorRegistrar invalidator_registrar_; 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) syncer::MockAckHandler mock_ack_handler_; 650529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch FakeProfileOAuth2TokenService token_service_; 660529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch FakeIdentityProvider identity_provider_; 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch DISALLOW_COPY_AND_ASSIGN(FakeInvalidationService); 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace invalidation 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif // CHROME_BROWSER_INVALIDATION_FAKE_INVALIDATION_SERVICE_H_ 74