1// Copyright (c) 2012 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_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_
6#define CHROME_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_
7
8#include <string>
9
10#include "base/callback.h"
11#include "base/compiler_specific.h"
12#include "base/memory/scoped_ptr.h"
13#include "base/message_loop/message_loop.h"
14#include "chrome/browser/sync/profile_sync_components_factory_mock.h"
15#include "content/public/test/test_browser_thread_bundle.h"
16#include "sync/internal_api/public/base/model_type.h"
17#include "sync/internal_api/public/change_record.h"
18#include "testing/gtest/include/gtest/gtest.h"
19
20class ProfileSyncService;
21class TestProfileSyncService;
22
23namespace syncer {
24struct UserShare;
25}  //  namespace syncer
26
27class ProfileSyncServiceTestHelper {
28 public:
29  static syncer::ImmutableChangeRecordList MakeSingletonChangeRecordList(
30      int64 node_id, syncer::ChangeRecord::Action action);
31
32  // Deletions must provide an EntitySpecifics for the deleted data.
33  static syncer::ImmutableChangeRecordList
34      MakeSingletonDeletionChangeRecordList(
35          int64 node_id,
36          const sync_pb::EntitySpecifics& specifics);
37};
38
39class AbstractProfileSyncServiceTest : public testing::Test {
40 public:
41  AbstractProfileSyncServiceTest();
42  virtual ~AbstractProfileSyncServiceTest();
43
44  virtual void SetUp() OVERRIDE;
45
46  virtual void TearDown() OVERRIDE;
47
48  bool CreateRoot(syncer::ModelType model_type);
49
50 protected:
51  content::TestBrowserThreadBundle thread_bundle_;
52  TestProfileSyncService* sync_service_;
53};
54
55class CreateRootHelper {
56 public:
57  CreateRootHelper(AbstractProfileSyncServiceTest* test,
58                   syncer::ModelType model_type);
59  virtual ~CreateRootHelper();
60
61  const base::Closure& callback() const;
62  bool success();
63
64 private:
65  void CreateRootCallback();
66
67  base::Closure callback_;
68  AbstractProfileSyncServiceTest* test_;
69  syncer::ModelType model_type_;
70  bool success_;
71};
72
73#endif  // CHROME_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_
74