OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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 // Unit tests for the SyncApi. Note that a lot of the underlying | 5 // Unit tests for the SyncApi. Note that a lot of the underlying |
6 // functionality is provided by the Syncable layer, which has its own | 6 // functionality is provided by the Syncable layer, which has its own |
7 // unit tests. We'll test SyncApi specific things in this harness. | 7 // unit tests. We'll test SyncApi specific things in this harness. |
8 | 8 |
9 #include <cstddef> | 9 #include <cstddef> |
10 #include <map> | 10 #include <map> |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 #include "sync/protocol/preference_specifics.pb.h" | 56 #include "sync/protocol/preference_specifics.pb.h" |
57 #include "sync/protocol/proto_value_conversions.h" | 57 #include "sync/protocol/proto_value_conversions.h" |
58 #include "sync/protocol/sync.pb.h" | 58 #include "sync/protocol/sync.pb.h" |
59 #include "sync/sessions/sync_session.h" | 59 #include "sync/sessions/sync_session.h" |
60 #include "sync/syncable/directory.h" | 60 #include "sync/syncable/directory.h" |
61 #include "sync/syncable/entry.h" | 61 #include "sync/syncable/entry.h" |
62 #include "sync/syncable/mutable_entry.h" | 62 #include "sync/syncable/mutable_entry.h" |
63 #include "sync/syncable/nigori_util.h" | 63 #include "sync/syncable/nigori_util.h" |
64 #include "sync/syncable/syncable_id.h" | 64 #include "sync/syncable/syncable_id.h" |
65 #include "sync/syncable/syncable_read_transaction.h" | 65 #include "sync/syncable/syncable_read_transaction.h" |
| 66 #include "sync/syncable/syncable_util.h" |
66 #include "sync/syncable/syncable_write_transaction.h" | 67 #include "sync/syncable/syncable_write_transaction.h" |
67 #include "sync/test/callback_counter.h" | 68 #include "sync/test/callback_counter.h" |
68 #include "sync/test/engine/fake_sync_scheduler.h" | 69 #include "sync/test/engine/fake_sync_scheduler.h" |
69 #include "sync/test/fake_encryptor.h" | 70 #include "sync/test/fake_encryptor.h" |
70 #include "sync/test/fake_extensions_activity_monitor.h" | 71 #include "sync/test/fake_extensions_activity_monitor.h" |
71 #include "sync/util/cryptographer.h" | 72 #include "sync/util/cryptographer.h" |
72 #include "sync/util/extensions_activity_monitor.h" | 73 #include "sync/util/extensions_activity_monitor.h" |
73 #include "sync/util/test_unrecoverable_error_handler.h" | 74 #include "sync/util/test_unrecoverable_error_handler.h" |
74 #include "sync/util/time.h" | 75 #include "sync/util/time.h" |
75 #include "testing/gmock/include/gmock/gmock.h" | 76 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 EXPECT_EQ(BaseNode::INIT_OK, | 273 EXPECT_EQ(BaseNode::INIT_OK, |
273 node.InitByClientTagLookup(BOOKMARKS, "testtag")); | 274 node.InitByClientTagLookup(BOOKMARKS, "testtag")); |
274 | 275 |
275 ReadNode root_node(&trans); | 276 ReadNode root_node(&trans); |
276 root_node.InitByRootLookup(); | 277 root_node.InitByRootLookup(); |
277 EXPECT_NE(node.GetId(), 0); | 278 EXPECT_NE(node.GetId(), 0); |
278 EXPECT_EQ(node.GetId(), root_node.GetFirstChildId()); | 279 EXPECT_EQ(node.GetId(), root_node.GetFirstChildId()); |
279 } | 280 } |
280 } | 281 } |
281 | 282 |
282 TEST_F(SyncApiTest, GenerateSyncableHash) { | |
283 EXPECT_EQ("OyaXV5mEzrPS4wbogmtKvRfekAI=", | |
284 BaseNode::GenerateSyncableHash(BOOKMARKS, "tag1")); | |
285 EXPECT_EQ("iNFQtRFQb+IZcn1kKUJEZDDkLs4=", | |
286 BaseNode::GenerateSyncableHash(PREFERENCES, "tag1")); | |
287 EXPECT_EQ("gO1cPZQXaM73sHOvSA+tKCKFs58=", | |
288 BaseNode::GenerateSyncableHash(AUTOFILL, "tag1")); | |
289 | |
290 EXPECT_EQ("A0eYIHXM1/jVwKDDp12Up20IkKY=", | |
291 BaseNode::GenerateSyncableHash(BOOKMARKS, "tag2")); | |
292 EXPECT_EQ("XYxkF7bhS4eItStFgiOIAU23swI=", | |
293 BaseNode::GenerateSyncableHash(PREFERENCES, "tag2")); | |
294 EXPECT_EQ("GFiWzo5NGhjLlN+OyCfhy28DJTQ=", | |
295 BaseNode::GenerateSyncableHash(AUTOFILL, "tag2")); | |
296 } | |
297 | |
298 TEST_F(SyncApiTest, ModelTypesSiloed) { | 283 TEST_F(SyncApiTest, ModelTypesSiloed) { |
299 { | 284 { |
300 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); | 285 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); |
301 ReadNode root_node(&trans); | 286 ReadNode root_node(&trans); |
302 root_node.InitByRootLookup(); | 287 root_node.InitByRootLookup(); |
303 EXPECT_EQ(root_node.GetFirstChildId(), 0); | 288 EXPECT_EQ(root_node.GetFirstChildId(), 0); |
304 } | 289 } |
305 | 290 |
306 ignore_result(MakeNode(test_user_share_.user_share(), | 291 ignore_result(MakeNode(test_user_share_.user_share(), |
307 BOOKMARKS, "collideme")); | 292 BOOKMARKS, "collideme")); |
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
949 } | 934 } |
950 | 935 |
951 // Looks up an entry by client tag and resets IS_UNSYNCED value to false. | 936 // Looks up an entry by client tag and resets IS_UNSYNCED value to false. |
952 // Returns true if entry was previously unsynced, false if IS_UNSYNCED was | 937 // Returns true if entry was previously unsynced, false if IS_UNSYNCED was |
953 // already false. | 938 // already false. |
954 bool ResetUnsyncedEntry(ModelType type, | 939 bool ResetUnsyncedEntry(ModelType type, |
955 const std::string& client_tag) { | 940 const std::string& client_tag) { |
956 UserShare* share = sync_manager_.GetUserShare(); | 941 UserShare* share = sync_manager_.GetUserShare(); |
957 syncable::WriteTransaction trans( | 942 syncable::WriteTransaction trans( |
958 FROM_HERE, syncable::UNITTEST, share->directory.get()); | 943 FROM_HERE, syncable::UNITTEST, share->directory.get()); |
959 const std::string hash = BaseNode::GenerateSyncableHash(type, client_tag); | 944 const std::string hash = syncable::GenerateSyncableHash(type, client_tag); |
960 syncable::MutableEntry entry(&trans, syncable::GET_BY_CLIENT_TAG, | 945 syncable::MutableEntry entry(&trans, syncable::GET_BY_CLIENT_TAG, |
961 hash); | 946 hash); |
962 EXPECT_TRUE(entry.good()); | 947 EXPECT_TRUE(entry.good()); |
963 if (!entry.Get(IS_UNSYNCED)) | 948 if (!entry.Get(IS_UNSYNCED)) |
964 return false; | 949 return false; |
965 entry.Put(IS_UNSYNCED, false); | 950 entry.Put(IS_UNSYNCED, false); |
966 return true; | 951 return true; |
967 } | 952 } |
968 | 953 |
969 virtual InternalComponentsFactory* GetFactory() { | 954 virtual InternalComponentsFactory* GetFactory() { |
(...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2190 } | 2175 } |
2191 | 2176 |
2192 // Verifies WriteNode::UpdateEntryWithEncryption does not make unnecessary | 2177 // Verifies WriteNode::UpdateEntryWithEncryption does not make unnecessary |
2193 // changes. | 2178 // changes. |
2194 TEST_F(SyncManagerTest, UpdateEntryWithEncryption) { | 2179 TEST_F(SyncManagerTest, UpdateEntryWithEncryption) { |
2195 std::string client_tag = "title"; | 2180 std::string client_tag = "title"; |
2196 sync_pb::EntitySpecifics entity_specifics; | 2181 sync_pb::EntitySpecifics entity_specifics; |
2197 entity_specifics.mutable_bookmark()->set_url("url"); | 2182 entity_specifics.mutable_bookmark()->set_url("url"); |
2198 entity_specifics.mutable_bookmark()->set_title("title"); | 2183 entity_specifics.mutable_bookmark()->set_title("title"); |
2199 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, | 2184 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, |
2200 BaseNode::GenerateSyncableHash(BOOKMARKS, | 2185 syncable::GenerateSyncableHash(BOOKMARKS, |
2201 client_tag), | 2186 client_tag), |
2202 entity_specifics); | 2187 entity_specifics); |
2203 // New node shouldn't start off unsynced. | 2188 // New node shouldn't start off unsynced. |
2204 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); | 2189 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
2205 // Manually change to the same data. Should not set is_unsynced. | 2190 // Manually change to the same data. Should not set is_unsynced. |
2206 { | 2191 { |
2207 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2192 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2208 WriteNode node(&trans); | 2193 WriteNode node(&trans); |
2209 EXPECT_EQ(BaseNode::INIT_OK, | 2194 EXPECT_EQ(BaseNode::INIT_OK, |
2210 node.InitByClientTagLookup(BOOKMARKS, client_tag)); | 2195 node.InitByClientTagLookup(BOOKMARKS, client_tag)); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2339 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2324 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2340 Cryptographer* cryptographer = trans.GetCryptographer(); | 2325 Cryptographer* cryptographer = trans.GetCryptographer(); |
2341 sync_pb::PasswordSpecificsData data; | 2326 sync_pb::PasswordSpecificsData data; |
2342 data.set_password_value("secret"); | 2327 data.set_password_value("secret"); |
2343 cryptographer->Encrypt( | 2328 cryptographer->Encrypt( |
2344 data, | 2329 data, |
2345 entity_specifics.mutable_password()-> | 2330 entity_specifics.mutable_password()-> |
2346 mutable_encrypted()); | 2331 mutable_encrypted()); |
2347 } | 2332 } |
2348 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, | 2333 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, |
2349 BaseNode::GenerateSyncableHash(PASSWORDS, | 2334 syncable::GenerateSyncableHash(PASSWORDS, |
2350 client_tag), | 2335 client_tag), |
2351 entity_specifics); | 2336 entity_specifics); |
2352 // New node shouldn't start off unsynced. | 2337 // New node shouldn't start off unsynced. |
2353 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2338 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
2354 | 2339 |
2355 // Manually change to the same data via SetEntitySpecifics. Should not set | 2340 // Manually change to the same data via SetEntitySpecifics. Should not set |
2356 // is_unsynced. | 2341 // is_unsynced. |
2357 { | 2342 { |
2358 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2343 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2359 WriteNode node(&trans); | 2344 WriteNode node(&trans); |
(...skipping 14 matching lines...) Expand all Loading... |
2374 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2359 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2375 Cryptographer* cryptographer = trans.GetCryptographer(); | 2360 Cryptographer* cryptographer = trans.GetCryptographer(); |
2376 sync_pb::PasswordSpecificsData data; | 2361 sync_pb::PasswordSpecificsData data; |
2377 data.set_password_value("secret"); | 2362 data.set_password_value("secret"); |
2378 cryptographer->Encrypt( | 2363 cryptographer->Encrypt( |
2379 data, | 2364 data, |
2380 entity_specifics.mutable_password()-> | 2365 entity_specifics.mutable_password()-> |
2381 mutable_encrypted()); | 2366 mutable_encrypted()); |
2382 } | 2367 } |
2383 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, | 2368 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, |
2384 BaseNode::GenerateSyncableHash(PASSWORDS, | 2369 syncable::GenerateSyncableHash(PASSWORDS, |
2385 client_tag), | 2370 client_tag), |
2386 entity_specifics); | 2371 entity_specifics); |
2387 // New node shouldn't start off unsynced. | 2372 // New node shouldn't start off unsynced. |
2388 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2373 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
2389 | 2374 |
2390 // Manually change to the same data via SetPasswordSpecifics. Should not set | 2375 // Manually change to the same data via SetPasswordSpecifics. Should not set |
2391 // is_unsynced. | 2376 // is_unsynced. |
2392 { | 2377 { |
2393 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2378 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2394 WriteNode node(&trans); | 2379 WriteNode node(&trans); |
(...skipping 30 matching lines...) Expand all Loading... |
2425 { | 2410 { |
2426 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2411 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2427 Cryptographer* cryptographer = trans.GetCryptographer(); | 2412 Cryptographer* cryptographer = trans.GetCryptographer(); |
2428 sync_pb::PasswordSpecificsData data; | 2413 sync_pb::PasswordSpecificsData data; |
2429 data.set_password_value("secret"); | 2414 data.set_password_value("secret"); |
2430 cryptographer->Encrypt( | 2415 cryptographer->Encrypt( |
2431 data, | 2416 data, |
2432 entity_specifics.mutable_password()->mutable_encrypted()); | 2417 entity_specifics.mutable_password()->mutable_encrypted()); |
2433 } | 2418 } |
2434 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, | 2419 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, |
2435 BaseNode::GenerateSyncableHash(PASSWORDS, | 2420 syncable::GenerateSyncableHash(PASSWORDS, |
2436 client_tag), | 2421 client_tag), |
2437 entity_specifics); | 2422 entity_specifics); |
2438 // New node shouldn't start off unsynced. | 2423 // New node shouldn't start off unsynced. |
2439 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2424 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
2440 | 2425 |
2441 // Set a new passphrase. Should set is_unsynced. | 2426 // Set a new passphrase. Should set is_unsynced. |
2442 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 2427 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
2443 EXPECT_CALL(encryption_observer_, | 2428 EXPECT_CALL(encryption_observer_, |
2444 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); | 2429 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); |
2445 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); | 2430 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); |
(...skipping 18 matching lines...) Expand all Loading... |
2464 { | 2449 { |
2465 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2450 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2466 Cryptographer* cryptographer = trans.GetCryptographer(); | 2451 Cryptographer* cryptographer = trans.GetCryptographer(); |
2467 sync_pb::PasswordSpecificsData data; | 2452 sync_pb::PasswordSpecificsData data; |
2468 data.set_password_value("secret"); | 2453 data.set_password_value("secret"); |
2469 cryptographer->Encrypt( | 2454 cryptographer->Encrypt( |
2470 data, | 2455 data, |
2471 entity_specifics.mutable_password()->mutable_encrypted()); | 2456 entity_specifics.mutable_password()->mutable_encrypted()); |
2472 } | 2457 } |
2473 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, | 2458 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, |
2474 BaseNode::GenerateSyncableHash(PASSWORDS, | 2459 syncable::GenerateSyncableHash(PASSWORDS, |
2475 client_tag), | 2460 client_tag), |
2476 entity_specifics); | 2461 entity_specifics); |
2477 // New node shouldn't start off unsynced. | 2462 // New node shouldn't start off unsynced. |
2478 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2463 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
2479 | 2464 |
2480 // Force a re-encrypt everything. Should not set is_unsynced. | 2465 // Force a re-encrypt everything. Should not set is_unsynced. |
2481 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); | 2466 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); |
2482 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2467 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
2483 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); | 2468 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); |
2484 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false)); | 2469 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false)); |
2485 sync_manager_.GetEncryptionHandler()->Init(); | 2470 sync_manager_.GetEncryptionHandler()->Init(); |
2486 PumpLoop(); | 2471 PumpLoop(); |
2487 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); | 2472 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); |
2488 } | 2473 } |
2489 | 2474 |
2490 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks | 2475 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks |
2491 // when we write the same data, but does set it when we write new data. | 2476 // when we write the same data, but does set it when we write new data. |
2492 TEST_F(SyncManagerTest, SetBookmarkTitle) { | 2477 TEST_F(SyncManagerTest, SetBookmarkTitle) { |
2493 std::string client_tag = "title"; | 2478 std::string client_tag = "title"; |
2494 sync_pb::EntitySpecifics entity_specifics; | 2479 sync_pb::EntitySpecifics entity_specifics; |
2495 entity_specifics.mutable_bookmark()->set_url("url"); | 2480 entity_specifics.mutable_bookmark()->set_url("url"); |
2496 entity_specifics.mutable_bookmark()->set_title("title"); | 2481 entity_specifics.mutable_bookmark()->set_title("title"); |
2497 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, | 2482 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, |
2498 BaseNode::GenerateSyncableHash(BOOKMARKS, | 2483 syncable::GenerateSyncableHash(BOOKMARKS, |
2499 client_tag), | 2484 client_tag), |
2500 entity_specifics); | 2485 entity_specifics); |
2501 // New node shouldn't start off unsynced. | 2486 // New node shouldn't start off unsynced. |
2502 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); | 2487 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
2503 | 2488 |
2504 // Manually change to the same title. Should not set is_unsynced. | 2489 // Manually change to the same title. Should not set is_unsynced. |
2505 { | 2490 { |
2506 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2491 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2507 WriteNode node(&trans); | 2492 WriteNode node(&trans); |
2508 EXPECT_EQ(BaseNode::INIT_OK, | 2493 EXPECT_EQ(BaseNode::INIT_OK, |
(...skipping 15 matching lines...) Expand all Loading... |
2524 | 2509 |
2525 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted | 2510 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted |
2526 // bookmarks when we write the same data, but does set it when we write new | 2511 // bookmarks when we write the same data, but does set it when we write new |
2527 // data. | 2512 // data. |
2528 TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) { | 2513 TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) { |
2529 std::string client_tag = "title"; | 2514 std::string client_tag = "title"; |
2530 sync_pb::EntitySpecifics entity_specifics; | 2515 sync_pb::EntitySpecifics entity_specifics; |
2531 entity_specifics.mutable_bookmark()->set_url("url"); | 2516 entity_specifics.mutable_bookmark()->set_url("url"); |
2532 entity_specifics.mutable_bookmark()->set_title("title"); | 2517 entity_specifics.mutable_bookmark()->set_title("title"); |
2533 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, | 2518 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, |
2534 BaseNode::GenerateSyncableHash(BOOKMARKS, | 2519 syncable::GenerateSyncableHash(BOOKMARKS, |
2535 client_tag), | 2520 client_tag), |
2536 entity_specifics); | 2521 entity_specifics); |
2537 // New node shouldn't start off unsynced. | 2522 // New node shouldn't start off unsynced. |
2538 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); | 2523 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); |
2539 | 2524 |
2540 // Encrypt the datatatype, should set is_unsynced. | 2525 // Encrypt the datatatype, should set is_unsynced. |
2541 EXPECT_CALL(encryption_observer_, | 2526 EXPECT_CALL(encryption_observer_, |
2542 OnEncryptedTypesChanged( | 2527 OnEncryptedTypesChanged( |
2543 HasModelTypes(EncryptableUserTypes()), true)); | 2528 HasModelTypes(EncryptableUserTypes()), true)); |
2544 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2529 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2583 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for non-bookmarks | 2568 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for non-bookmarks |
2584 // when we write the same data, but does set it when we write new data. | 2569 // when we write the same data, but does set it when we write new data. |
2585 TEST_F(SyncManagerTest, SetNonBookmarkTitle) { | 2570 TEST_F(SyncManagerTest, SetNonBookmarkTitle) { |
2586 std::string client_tag = "title"; | 2571 std::string client_tag = "title"; |
2587 sync_pb::EntitySpecifics entity_specifics; | 2572 sync_pb::EntitySpecifics entity_specifics; |
2588 entity_specifics.mutable_preference()->set_name("name"); | 2573 entity_specifics.mutable_preference()->set_name("name"); |
2589 entity_specifics.mutable_preference()->set_value("value"); | 2574 entity_specifics.mutable_preference()->set_value("value"); |
2590 MakeServerNode(sync_manager_.GetUserShare(), | 2575 MakeServerNode(sync_manager_.GetUserShare(), |
2591 PREFERENCES, | 2576 PREFERENCES, |
2592 client_tag, | 2577 client_tag, |
2593 BaseNode::GenerateSyncableHash(PREFERENCES, | 2578 syncable::GenerateSyncableHash(PREFERENCES, |
2594 client_tag), | 2579 client_tag), |
2595 entity_specifics); | 2580 entity_specifics); |
2596 // New node shouldn't start off unsynced. | 2581 // New node shouldn't start off unsynced. |
2597 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); | 2582 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); |
2598 | 2583 |
2599 // Manually change to the same title. Should not set is_unsynced. | 2584 // Manually change to the same title. Should not set is_unsynced. |
2600 { | 2585 { |
2601 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2586 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2602 WriteNode node(&trans); | 2587 WriteNode node(&trans); |
2603 EXPECT_EQ(BaseNode::INIT_OK, | 2588 EXPECT_EQ(BaseNode::INIT_OK, |
(...skipping 17 matching lines...) Expand all Loading... |
2621 // non-bookmarks when we write the same data or when we write new data | 2606 // non-bookmarks when we write the same data or when we write new data |
2622 // data (should remained kEncryptedString). | 2607 // data (should remained kEncryptedString). |
2623 TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) { | 2608 TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) { |
2624 std::string client_tag = "title"; | 2609 std::string client_tag = "title"; |
2625 sync_pb::EntitySpecifics entity_specifics; | 2610 sync_pb::EntitySpecifics entity_specifics; |
2626 entity_specifics.mutable_preference()->set_name("name"); | 2611 entity_specifics.mutable_preference()->set_name("name"); |
2627 entity_specifics.mutable_preference()->set_value("value"); | 2612 entity_specifics.mutable_preference()->set_value("value"); |
2628 MakeServerNode(sync_manager_.GetUserShare(), | 2613 MakeServerNode(sync_manager_.GetUserShare(), |
2629 PREFERENCES, | 2614 PREFERENCES, |
2630 client_tag, | 2615 client_tag, |
2631 BaseNode::GenerateSyncableHash(PREFERENCES, | 2616 syncable::GenerateSyncableHash(PREFERENCES, |
2632 client_tag), | 2617 client_tag), |
2633 entity_specifics); | 2618 entity_specifics); |
2634 // New node shouldn't start off unsynced. | 2619 // New node shouldn't start off unsynced. |
2635 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); | 2620 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); |
2636 | 2621 |
2637 // Encrypt the datatatype, should set is_unsynced. | 2622 // Encrypt the datatatype, should set is_unsynced. |
2638 EXPECT_CALL(encryption_observer_, | 2623 EXPECT_CALL(encryption_observer_, |
2639 OnEncryptedTypesChanged( | 2624 OnEncryptedTypesChanged( |
2640 HasModelTypes(EncryptableUserTypes()), true)); | 2625 HasModelTypes(EncryptableUserTypes()), true)); |
2641 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); | 2626 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2692 Cryptographer* crypto = trans.GetCryptographer(); | 2677 Cryptographer* crypto = trans.GetCryptographer(); |
2693 sync_pb::EntitySpecifics bm_specifics; | 2678 sync_pb::EntitySpecifics bm_specifics; |
2694 bm_specifics.mutable_bookmark()->set_title("title"); | 2679 bm_specifics.mutable_bookmark()->set_title("title"); |
2695 bm_specifics.mutable_bookmark()->set_url("url"); | 2680 bm_specifics.mutable_bookmark()->set_url("url"); |
2696 sync_pb::EncryptedData encrypted; | 2681 sync_pb::EncryptedData encrypted; |
2697 crypto->Encrypt(bm_specifics, &encrypted); | 2682 crypto->Encrypt(bm_specifics, &encrypted); |
2698 entity_specifics.mutable_encrypted()->CopyFrom(encrypted); | 2683 entity_specifics.mutable_encrypted()->CopyFrom(encrypted); |
2699 AddDefaultFieldValue(BOOKMARKS, &entity_specifics); | 2684 AddDefaultFieldValue(BOOKMARKS, &entity_specifics); |
2700 } | 2685 } |
2701 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, | 2686 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, |
2702 BaseNode::GenerateSyncableHash(BOOKMARKS, | 2687 syncable::GenerateSyncableHash(BOOKMARKS, |
2703 client_tag), | 2688 client_tag), |
2704 entity_specifics); | 2689 entity_specifics); |
2705 | 2690 |
2706 { | 2691 { |
2707 // Verify the data. | 2692 // Verify the data. |
2708 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); | 2693 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); |
2709 ReadNode node(&trans); | 2694 ReadNode node(&trans); |
2710 EXPECT_EQ(BaseNode::INIT_OK, | 2695 EXPECT_EQ(BaseNode::INIT_OK, |
2711 node.InitByClientTagLookup(BOOKMARKS, client_tag)); | 2696 node.InitByClientTagLookup(BOOKMARKS, client_tag)); |
2712 EXPECT_EQ(title, node.GetTitle()); | 2697 EXPECT_EQ(title, node.GetTitle()); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2757 GetTransactionVersion(i->first)); | 2742 GetTransactionVersion(i->first)); |
2758 } | 2743 } |
2759 } | 2744 } |
2760 | 2745 |
2761 // Create bookmark node to increment transaction version of bookmark model. | 2746 // Create bookmark node to increment transaction version of bookmark model. |
2762 std::string client_tag = "title"; | 2747 std::string client_tag = "title"; |
2763 sync_pb::EntitySpecifics entity_specifics; | 2748 sync_pb::EntitySpecifics entity_specifics; |
2764 entity_specifics.mutable_bookmark()->set_url("url"); | 2749 entity_specifics.mutable_bookmark()->set_url("url"); |
2765 entity_specifics.mutable_bookmark()->set_title("title"); | 2750 entity_specifics.mutable_bookmark()->set_title("title"); |
2766 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, | 2751 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, |
2767 BaseNode::GenerateSyncableHash(BOOKMARKS, | 2752 syncable::GenerateSyncableHash(BOOKMARKS, |
2768 client_tag), | 2753 client_tag), |
2769 entity_specifics); | 2754 entity_specifics); |
2770 | 2755 |
2771 { | 2756 { |
2772 ReadTransaction read_trans(FROM_HERE, sync_manager_.GetUserShare()); | 2757 ReadTransaction read_trans(FROM_HERE, sync_manager_.GetUserShare()); |
2773 for (ModelSafeRoutingInfo::iterator i = routing_info.begin(); | 2758 for (ModelSafeRoutingInfo::iterator i = routing_info.begin(); |
2774 i != routing_info.end(); ++i) { | 2759 i != routing_info.end(); ++i) { |
2775 EXPECT_EQ(i->first == BOOKMARKS ? 2 : 1, | 2760 EXPECT_EQ(i->first == BOOKMARKS ? 2 : 1, |
2776 sync_manager_.GetUserShare()->directory-> | 2761 sync_manager_.GetUserShare()->directory-> |
2777 GetTransactionVersion(i->first)); | 2762 GetTransactionVersion(i->first)); |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3072 Difference(ModelTypeSet::All(), disabled_types); | 3057 Difference(ModelTypeSet::All(), disabled_types); |
3073 | 3058 |
3074 // Verify only the non-disabled types remain after cleanup. | 3059 // Verify only the non-disabled types remain after cleanup. |
3075 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); | 3060 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); |
3076 EXPECT_TRUE(new_enabled_types.Equals(sync_manager_.InitialSyncEndedTypes())); | 3061 EXPECT_TRUE(new_enabled_types.Equals(sync_manager_.InitialSyncEndedTypes())); |
3077 EXPECT_TRUE(disabled_types.Equals( | 3062 EXPECT_TRUE(disabled_types.Equals( |
3078 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); | 3063 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); |
3079 } | 3064 } |
3080 | 3065 |
3081 } // namespace | 3066 } // namespace |
OLD | NEW |