OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ | 5 #ifndef CHROME_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ |
6 #define CHROME_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ | 6 #define CHROME_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 using syncable::SERVER_IS_DIR; | 44 using syncable::SERVER_IS_DIR; |
45 using syncable::SERVER_VERSION; | 45 using syncable::SERVER_VERSION; |
46 using syncable::SPECIFICS; | 46 using syncable::SPECIFICS; |
47 using syncable::ScopedDirLookup; | 47 using syncable::ScopedDirLookup; |
48 using syncable::UNIQUE_SERVER_TAG; | 48 using syncable::UNIQUE_SERVER_TAG; |
49 using syncable::UNITTEST; | 49 using syncable::UNITTEST; |
50 using syncable::WriteTransaction; | 50 using syncable::WriteTransaction; |
51 | 51 |
52 class ProfileSyncServiceTestHelper { | 52 class ProfileSyncServiceTestHelper { |
53 public: | 53 public: |
| 54 static const std::string GetTagForType(ModelType type) { |
| 55 switch (type) { |
| 56 case syncable::AUTOFILL: |
| 57 return browser_sync::kAutofillTag; |
| 58 case syncable::PREFERENCES: |
| 59 return browser_sync::kPreferencesTag; |
| 60 case syncable::PASSWORDS: |
| 61 return browser_sync::kPasswordTag; |
| 62 case syncable::NIGORI: |
| 63 return browser_sync::kNigoriTag; |
| 64 case syncable::TYPED_URLS: |
| 65 return browser_sync::kTypedUrlTag; |
| 66 case syncable::SESSIONS: |
| 67 return browser_sync::kSessionsTag; |
| 68 case syncable::BOOKMARKS: |
| 69 return "google_chrome_bookmarks"; |
| 70 default: |
| 71 NOTREACHED(); |
| 72 return std::string(); |
| 73 } |
| 74 } |
| 75 |
54 static bool CreateRoot(ModelType model_type, ProfileSyncService* service, | 76 static bool CreateRoot(ModelType model_type, ProfileSyncService* service, |
55 TestIdFactory* ids) { | 77 TestIdFactory* ids) { |
56 UserShare* user_share = service->backend()->GetUserShareHandle(); | 78 UserShare* user_share = service->backend()->GetUserShareHandle(); |
57 DirectoryManager* dir_manager = user_share->dir_manager.get(); | 79 DirectoryManager* dir_manager = user_share->dir_manager.get(); |
58 | 80 |
59 ScopedDirLookup dir(dir_manager, user_share->name); | 81 ScopedDirLookup dir(dir_manager, user_share->name); |
60 if (!dir.good()) | 82 if (!dir.good()) |
61 return false; | 83 return false; |
62 | 84 |
63 std::string tag_name; | 85 std::string tag_name = GetTagForType(model_type); |
64 switch (model_type) { | |
65 case syncable::AUTOFILL: | |
66 tag_name = browser_sync::kAutofillTag; | |
67 break; | |
68 case syncable::PREFERENCES: | |
69 tag_name = browser_sync::kPreferencesTag; | |
70 break; | |
71 case syncable::PASSWORDS: | |
72 tag_name = browser_sync::kPasswordTag; | |
73 break; | |
74 case syncable::NIGORI: | |
75 tag_name = browser_sync::kNigoriTag; | |
76 break; | |
77 case syncable::TYPED_URLS: | |
78 tag_name = browser_sync::kTypedUrlTag; | |
79 break; | |
80 case syncable::SESSIONS: | |
81 tag_name = browser_sync::kSessionsTag; | |
82 break; | |
83 default: | |
84 return false; | |
85 } | |
86 | |
87 WriteTransaction wtrans(dir, UNITTEST, __FILE__, __LINE__); | 86 WriteTransaction wtrans(dir, UNITTEST, __FILE__, __LINE__); |
88 MutableEntry node(&wtrans, | 87 MutableEntry node(&wtrans, |
89 CREATE, | 88 CREATE, |
90 wtrans.root_id(), | 89 wtrans.root_id(), |
91 tag_name); | 90 tag_name); |
92 node.Put(UNIQUE_SERVER_TAG, tag_name); | 91 node.Put(UNIQUE_SERVER_TAG, tag_name); |
93 node.Put(IS_DIR, true); | 92 node.Put(IS_DIR, true); |
94 node.Put(SERVER_IS_DIR, false); | 93 node.Put(SERVER_IS_DIR, false); |
95 node.Put(IS_UNSYNCED, false); | 94 node.Put(IS_UNSYNCED, false); |
96 node.Put(IS_UNAPPLIED_UPDATE, false); | 95 node.Put(IS_UNAPPLIED_UPDATE, false); |
97 node.Put(SERVER_VERSION, 20); | 96 node.Put(SERVER_VERSION, 20); |
98 node.Put(BASE_VERSION, 20); | 97 node.Put(BASE_VERSION, 20); |
99 node.Put(IS_DEL, false); | 98 node.Put(IS_DEL, false); |
100 node.Put(syncable::ID, ids->MakeServer(tag_name)); | 99 EXPECT_TRUE(node.Put(syncable::ID, ids->MakeServer(tag_name))); |
101 sync_pb::EntitySpecifics specifics; | 100 sync_pb::EntitySpecifics specifics; |
102 syncable::AddDefaultExtensionValue(model_type, &specifics); | 101 syncable::AddDefaultExtensionValue(model_type, &specifics); |
103 node.Put(SPECIFICS, specifics); | 102 node.Put(SPECIFICS, specifics); |
104 | 103 |
105 return true; | 104 return true; |
106 } | 105 } |
107 }; | 106 }; |
108 | 107 |
109 class AbstractProfileSyncServiceTest : public testing::Test { | 108 class AbstractProfileSyncServiceTest : public testing::Test { |
110 public: | 109 public: |
111 AbstractProfileSyncServiceTest() | 110 AbstractProfileSyncServiceTest() |
112 : ui_thread_(BrowserThread::UI, &message_loop_) {} | 111 : ui_thread_(BrowserThread::UI, &message_loop_) {} |
113 | 112 |
114 bool CreateRoot(ModelType model_type) { | 113 bool CreateRoot(ModelType model_type) { |
115 return ProfileSyncServiceTestHelper::CreateRoot(model_type, | 114 return ProfileSyncServiceTestHelper::CreateRoot(model_type, |
116 service_.get(), &ids_); | 115 service_.get(), |
| 116 service_->id_factory()); |
117 } | 117 } |
118 | 118 |
119 protected: | 119 protected: |
120 | 120 |
121 MessageLoopForUI message_loop_; | 121 MessageLoopForUI message_loop_; |
122 BrowserThread ui_thread_; | 122 BrowserThread ui_thread_; |
123 ProfileSyncFactoryMock factory_; | 123 ProfileSyncFactoryMock factory_; |
124 TokenService token_service_; | 124 TokenService token_service_; |
125 scoped_ptr<TestProfileSyncService> service_; | 125 scoped_ptr<TestProfileSyncService> service_; |
126 TestIdFactory ids_; | |
127 }; | 126 }; |
128 | 127 |
129 class CreateRootTask : public Task { | 128 class CreateRootTask : public Task { |
130 public: | 129 public: |
131 CreateRootTask(AbstractProfileSyncServiceTest* test, ModelType model_type) | 130 CreateRootTask(AbstractProfileSyncServiceTest* test, ModelType model_type) |
132 : test_(test), model_type_(model_type), success_(false) { | 131 : test_(test), model_type_(model_type), success_(false) { |
133 } | 132 } |
134 | 133 |
135 virtual ~CreateRootTask() {} | 134 virtual ~CreateRootTask() {} |
136 virtual void Run() { | 135 virtual void Run() { |
137 success_ = test_->CreateRoot(model_type_); | 136 success_ = test_->CreateRoot(model_type_); |
138 } | 137 } |
139 | 138 |
140 bool success() { return success_; } | 139 bool success() { return success_; } |
141 | 140 |
142 private: | 141 private: |
143 AbstractProfileSyncServiceTest* test_; | 142 AbstractProfileSyncServiceTest* test_; |
144 ModelType model_type_; | 143 ModelType model_type_; |
145 bool success_; | 144 bool success_; |
146 }; | 145 }; |
147 | 146 |
148 #endif // CHROME_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ | 147 #endif // CHROME_BROWSER_SYNC_ABSTRACT_PROFILE_SYNC_SERVICE_TEST_H_ |
OLD | NEW |