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