1// Copyright (c) 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_TEST_BASE_TESTING_PREF_SERVICE_SYNCABLE_H_
6#define CHROME_TEST_BASE_TESTING_PREF_SERVICE_SYNCABLE_H_
7
8#include "base/basictypes.h"
9#include "base/prefs/testing_pref_service.h"
10#include "chrome/browser/prefs/pref_service_syncable.h"
11
12namespace user_prefs {
13class PrefRegistrySyncable;
14}
15
16// Test version of PrefServiceSyncable.
17class TestingPrefServiceSyncable
18    : public TestingPrefServiceBase<PrefServiceSyncable,
19                                    user_prefs::PrefRegistrySyncable> {
20 public:
21  TestingPrefServiceSyncable();
22  TestingPrefServiceSyncable(TestingPrefStore* managed_prefs,
23                             TestingPrefStore* user_prefs,
24                             TestingPrefStore* recommended_prefs,
25                             user_prefs::PrefRegistrySyncable* pref_registry,
26                             PrefNotifierImpl* pref_notifier);
27  virtual ~TestingPrefServiceSyncable();
28
29  // This is provided as a convenience; on a production PrefService
30  // you would do all registrations before constructing it, passing it
31  // a PrefRegistry via its constructor (or via e.g. PrefServiceFactory).
32  user_prefs::PrefRegistrySyncable* registry();
33
34 private:
35  DISALLOW_COPY_AND_ASSIGN(TestingPrefServiceSyncable);
36};
37
38template <>
39TestingPrefServiceBase<PrefServiceSyncable, user_prefs::PrefRegistrySyncable>::
40    TestingPrefServiceBase(TestingPrefStore* managed_prefs,
41                           TestingPrefStore* user_prefs,
42                           TestingPrefStore* recommended_prefs,
43                           user_prefs::PrefRegistrySyncable* pref_registry,
44                           PrefNotifierImpl* pref_notifier);
45
46#endif  // CHROME_TEST_BASE_TESTING_PREF_SERVICE_SYNCABLE_H_
47
48