OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "chrome/browser/sync/notifier/chrome_invalidation_client.h" | 8 #include "chrome/browser/sync/notifier/chrome_invalidation_client.h" |
9 #include "chrome/browser/sync/notifier/state_writer.h" | 9 #include "chrome/browser/sync/notifier/state_writer.h" |
10 #include "chrome/browser/sync/syncable/model_type.h" | 10 #include "chrome/browser/sync/syncable/model_type.h" |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 | 135 |
136 namespace { | 136 namespace { |
137 | 137 |
138 syncable::ModelTypePayloadMap MakeMap(syncable::ModelType model_type, | 138 syncable::ModelTypePayloadMap MakeMap(syncable::ModelType model_type, |
139 const std::string& payload) { | 139 const std::string& payload) { |
140 syncable::ModelTypePayloadMap type_payloads; | 140 syncable::ModelTypePayloadMap type_payloads; |
141 type_payloads[model_type] = payload; | 141 type_payloads[model_type] = payload; |
142 return type_payloads; | 142 return type_payloads; |
143 } | 143 } |
144 | 144 |
145 syncable::ModelTypePayloadMap MakeMapFromSet(syncable::ModelTypeSet types, | 145 syncable::ModelTypePayloadMap MakeMapFromSet(syncable::ModelEnumSet types, |
146 const std::string& payload) { | 146 const std::string& payload) { |
147 syncable::ModelTypePayloadMap type_payloads; | 147 return syncable::ModelTypePayloadMapFromEnumSet(types, payload); |
148 for (syncable::ModelTypeSet::const_iterator it = types.begin(); | |
149 it != types.end(); ++it) { | |
150 type_payloads[*it] = payload; | |
151 } | |
152 return type_payloads; | |
153 } | 148 } |
154 | 149 |
155 } // namespace | 150 } // namespace |
156 | 151 |
157 TEST_F(ChromeInvalidationClientTest, InvalidateBadObjectId) { | 152 TEST_F(ChromeInvalidationClientTest, InvalidateBadObjectId) { |
158 syncable::ModelTypeSet types; | 153 syncable::ModelEnumSet types(syncable::BOOKMARKS, syncable::APPS); |
159 types.insert(syncable::BOOKMARKS); | |
160 types.insert(syncable::APPS); | |
161 client_.RegisterTypes(types); | 154 client_.RegisterTypes(types); |
162 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); | 155 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); |
163 FireInvalidate("bad", 1, NULL); | 156 FireInvalidate("bad", 1, NULL); |
164 message_loop_.RunAllPending(); | 157 message_loop_.RunAllPending(); |
165 } | 158 } |
166 | 159 |
167 TEST_F(ChromeInvalidationClientTest, InvalidateNoPayload) { | 160 TEST_F(ChromeInvalidationClientTest, InvalidateNoPayload) { |
168 EXPECT_CALL(mock_listener_, | 161 EXPECT_CALL(mock_listener_, |
169 OnInvalidate(MakeMap(syncable::BOOKMARKS, ""))); | 162 OnInvalidate(MakeMap(syncable::BOOKMARKS, ""))); |
170 EXPECT_CALL(mock_invalidation_version_tracker_, | 163 EXPECT_CALL(mock_invalidation_version_tracker_, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 .Times(2); | 196 .Times(2); |
204 | 197 |
205 // Should trigger twice. | 198 // Should trigger twice. |
206 FireInvalidateUnknownVersion("EXTENSION"); | 199 FireInvalidateUnknownVersion("EXTENSION"); |
207 FireInvalidateUnknownVersion("EXTENSION"); | 200 FireInvalidateUnknownVersion("EXTENSION"); |
208 } | 201 } |
209 | 202 |
210 TEST_F(ChromeInvalidationClientTest, InvalidateVersionMultipleTypes) { | 203 TEST_F(ChromeInvalidationClientTest, InvalidateVersionMultipleTypes) { |
211 using ::testing::Mock; | 204 using ::testing::Mock; |
212 | 205 |
213 syncable::ModelTypeSet types; | 206 syncable::ModelEnumSet types(syncable::BOOKMARKS, syncable::APPS); |
214 types.insert(syncable::BOOKMARKS); | |
215 types.insert(syncable::APPS); | |
216 client_.RegisterTypes(types); | 207 client_.RegisterTypes(types); |
217 | 208 |
218 EXPECT_CALL(mock_listener_, | 209 EXPECT_CALL(mock_listener_, |
219 OnInvalidate(MakeMap(syncable::APPS, ""))); | 210 OnInvalidate(MakeMap(syncable::APPS, ""))); |
220 EXPECT_CALL(mock_listener_, | 211 EXPECT_CALL(mock_listener_, |
221 OnInvalidate(MakeMap(syncable::EXTENSIONS, ""))); | 212 OnInvalidate(MakeMap(syncable::EXTENSIONS, ""))); |
222 | 213 |
223 EXPECT_CALL(mock_invalidation_version_tracker_, | 214 EXPECT_CALL(mock_invalidation_version_tracker_, |
224 SetMaxVersion(syncable::APPS, 3)); | 215 SetMaxVersion(syncable::APPS, 3)); |
225 EXPECT_CALL(mock_invalidation_version_tracker_, | 216 EXPECT_CALL(mock_invalidation_version_tracker_, |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 EXPECT_CALL(mock_invalidation_version_tracker_, | 251 EXPECT_CALL(mock_invalidation_version_tracker_, |
261 SetMaxVersion(syncable::APPS, 4)); | 252 SetMaxVersion(syncable::APPS, 4)); |
262 | 253 |
263 // Should trigger all three. | 254 // Should trigger all three. |
264 FireInvalidate("PREFERENCE", 5, NULL); | 255 FireInvalidate("PREFERENCE", 5, NULL); |
265 FireInvalidate("EXTENSION", 3, NULL); | 256 FireInvalidate("EXTENSION", 3, NULL); |
266 FireInvalidate("APP", 4, NULL); | 257 FireInvalidate("APP", 4, NULL); |
267 } | 258 } |
268 | 259 |
269 TEST_F(ChromeInvalidationClientTest, InvalidateAll) { | 260 TEST_F(ChromeInvalidationClientTest, InvalidateAll) { |
270 syncable::ModelTypeSet types; | 261 syncable::ModelEnumSet types(syncable::PREFERENCES, syncable::EXTENSIONS); |
271 types.insert(syncable::PREFERENCES); | |
272 types.insert(syncable::EXTENSIONS); | |
273 client_.RegisterTypes(types); | 262 client_.RegisterTypes(types); |
274 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); | 263 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); |
275 FireInvalidateAll(); | 264 FireInvalidateAll(); |
276 } | 265 } |
277 | 266 |
278 TEST_F(ChromeInvalidationClientTest, RegisterTypes) { | 267 TEST_F(ChromeInvalidationClientTest, RegisterTypes) { |
279 syncable::ModelTypeSet types; | 268 syncable::ModelEnumSet types(syncable::PREFERENCES, syncable::EXTENSIONS); |
280 types.insert(syncable::PREFERENCES); | |
281 types.insert(syncable::EXTENSIONS); | |
282 client_.RegisterTypes(types); | 269 client_.RegisterTypes(types); |
283 // Registered types should be preserved across Stop/Start. | 270 // Registered types should be preserved across Stop/Start. |
284 TearDown(); | 271 TearDown(); |
285 SetUp(); | 272 SetUp(); |
286 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); | 273 EXPECT_CALL(mock_listener_, OnInvalidate(MakeMapFromSet(types, ""))); |
287 FireInvalidateAll(); | 274 FireInvalidateAll(); |
288 } | 275 } |
289 | 276 |
290 // TODO(akalin): Flesh out unit tests. | 277 // TODO(akalin): Flesh out unit tests. |
291 | 278 |
292 } // namespace sync_notifier | 279 } // namespace sync_notifier |
OLD | NEW |