Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(292)

Side by Side Diff: sync/internal_api/sync_manager_impl_unittest.cc

Issue 11571092: sync: Move unique_client_tag hashing code (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/internal_api/read_node.cc ('k') | sync/internal_api/write_node.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 TEST_F(SyncApiTest, GenerateSyncableHash) {
283 EXPECT_EQ("OyaXV5mEzrPS4wbogmtKvRfekAI=", 284 EXPECT_EQ("TrJxl8908A2qDbaLzjxjyUzskpY=",
284 BaseNode::GenerateSyncableHash(BOOKMARKS, "tag1")); 285 syncable::GenerateSyncableHash(THEMES, "tag1"));
285 EXPECT_EQ("iNFQtRFQb+IZcn1kKUJEZDDkLs4=", 286 EXPECT_EQ("iNFQtRFQb+IZcn1kKUJEZDDkLs4=",
286 BaseNode::GenerateSyncableHash(PREFERENCES, "tag1")); 287 syncable::GenerateSyncableHash(PREFERENCES, "tag1"));
287 EXPECT_EQ("gO1cPZQXaM73sHOvSA+tKCKFs58=", 288 EXPECT_EQ("gO1cPZQXaM73sHOvSA+tKCKFs58=",
288 BaseNode::GenerateSyncableHash(AUTOFILL, "tag1")); 289 syncable::GenerateSyncableHash(AUTOFILL, "tag1"));
289 290
290 EXPECT_EQ("A0eYIHXM1/jVwKDDp12Up20IkKY=", 291 EXPECT_EQ("YCbRusldaxqFnrd36Y7cJagN8TA=",
291 BaseNode::GenerateSyncableHash(BOOKMARKS, "tag2")); 292 syncable::GenerateSyncableHash(THEMES, "tag2"));
tim (not reviewing) 2012/12/21 17:26:31 This looks like it should be moved to syncable_uti
rlarocque 2012/12/21 18:39:48 Good idea. That file didn't exist before, but it'
292 EXPECT_EQ("XYxkF7bhS4eItStFgiOIAU23swI=", 293 EXPECT_EQ("XYxkF7bhS4eItStFgiOIAU23swI=",
293 BaseNode::GenerateSyncableHash(PREFERENCES, "tag2")); 294 syncable::GenerateSyncableHash(PREFERENCES, "tag2"));
294 EXPECT_EQ("GFiWzo5NGhjLlN+OyCfhy28DJTQ=", 295 EXPECT_EQ("GFiWzo5NGhjLlN+OyCfhy28DJTQ=",
295 BaseNode::GenerateSyncableHash(AUTOFILL, "tag2")); 296 syncable::GenerateSyncableHash(AUTOFILL, "tag2"));
296 } 297 }
297 298
298 TEST_F(SyncApiTest, ModelTypesSiloed) { 299 TEST_F(SyncApiTest, ModelTypesSiloed) {
299 { 300 {
300 WriteTransaction trans(FROM_HERE, test_user_share_.user_share()); 301 WriteTransaction trans(FROM_HERE, test_user_share_.user_share());
301 ReadNode root_node(&trans); 302 ReadNode root_node(&trans);
302 root_node.InitByRootLookup(); 303 root_node.InitByRootLookup();
303 EXPECT_EQ(root_node.GetFirstChildId(), 0); 304 EXPECT_EQ(root_node.GetFirstChildId(), 0);
304 } 305 }
305 306
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 } 950 }
950 951
951 // Looks up an entry by client tag and resets IS_UNSYNCED value to false. 952 // 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 953 // Returns true if entry was previously unsynced, false if IS_UNSYNCED was
953 // already false. 954 // already false.
954 bool ResetUnsyncedEntry(ModelType type, 955 bool ResetUnsyncedEntry(ModelType type,
955 const std::string& client_tag) { 956 const std::string& client_tag) {
956 UserShare* share = sync_manager_.GetUserShare(); 957 UserShare* share = sync_manager_.GetUserShare();
957 syncable::WriteTransaction trans( 958 syncable::WriteTransaction trans(
958 FROM_HERE, syncable::UNITTEST, share->directory.get()); 959 FROM_HERE, syncable::UNITTEST, share->directory.get());
959 const std::string hash = BaseNode::GenerateSyncableHash(type, client_tag); 960 const std::string hash = syncable::GenerateSyncableHash(type, client_tag);
960 syncable::MutableEntry entry(&trans, syncable::GET_BY_CLIENT_TAG, 961 syncable::MutableEntry entry(&trans, syncable::GET_BY_CLIENT_TAG,
961 hash); 962 hash);
962 EXPECT_TRUE(entry.good()); 963 EXPECT_TRUE(entry.good());
963 if (!entry.Get(IS_UNSYNCED)) 964 if (!entry.Get(IS_UNSYNCED))
964 return false; 965 return false;
965 entry.Put(IS_UNSYNCED, false); 966 entry.Put(IS_UNSYNCED, false);
966 return true; 967 return true;
967 } 968 }
968 969
969 virtual InternalComponentsFactory* GetFactory() { 970 virtual InternalComponentsFactory* GetFactory() {
(...skipping 1220 matching lines...) Expand 10 before | Expand all | Expand 10 after
2190 } 2191 }
2191 2192
2192 // Verifies WriteNode::UpdateEntryWithEncryption does not make unnecessary 2193 // Verifies WriteNode::UpdateEntryWithEncryption does not make unnecessary
2193 // changes. 2194 // changes.
2194 TEST_F(SyncManagerTest, UpdateEntryWithEncryption) { 2195 TEST_F(SyncManagerTest, UpdateEntryWithEncryption) {
2195 std::string client_tag = "title"; 2196 std::string client_tag = "title";
2196 sync_pb::EntitySpecifics entity_specifics; 2197 sync_pb::EntitySpecifics entity_specifics;
2197 entity_specifics.mutable_bookmark()->set_url("url"); 2198 entity_specifics.mutable_bookmark()->set_url("url");
2198 entity_specifics.mutable_bookmark()->set_title("title"); 2199 entity_specifics.mutable_bookmark()->set_title("title");
2199 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2200 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2200 BaseNode::GenerateSyncableHash(BOOKMARKS, 2201 syncable::GenerateSyncableHash(BOOKMARKS,
2201 client_tag), 2202 client_tag),
2202 entity_specifics); 2203 entity_specifics);
2203 // New node shouldn't start off unsynced. 2204 // New node shouldn't start off unsynced.
2204 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2205 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2205 // Manually change to the same data. Should not set is_unsynced. 2206 // Manually change to the same data. Should not set is_unsynced.
2206 { 2207 {
2207 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2208 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2208 WriteNode node(&trans); 2209 WriteNode node(&trans);
2209 EXPECT_EQ(BaseNode::INIT_OK, 2210 EXPECT_EQ(BaseNode::INIT_OK,
2210 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2211 node.InitByClientTagLookup(BOOKMARKS, client_tag));
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
2339 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2340 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2340 Cryptographer* cryptographer = trans.GetCryptographer(); 2341 Cryptographer* cryptographer = trans.GetCryptographer();
2341 sync_pb::PasswordSpecificsData data; 2342 sync_pb::PasswordSpecificsData data;
2342 data.set_password_value("secret"); 2343 data.set_password_value("secret");
2343 cryptographer->Encrypt( 2344 cryptographer->Encrypt(
2344 data, 2345 data,
2345 entity_specifics.mutable_password()-> 2346 entity_specifics.mutable_password()->
2346 mutable_encrypted()); 2347 mutable_encrypted());
2347 } 2348 }
2348 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, 2349 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag,
2349 BaseNode::GenerateSyncableHash(PASSWORDS, 2350 syncable::GenerateSyncableHash(PASSWORDS,
2350 client_tag), 2351 client_tag),
2351 entity_specifics); 2352 entity_specifics);
2352 // New node shouldn't start off unsynced. 2353 // New node shouldn't start off unsynced.
2353 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2354 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2354 2355
2355 // Manually change to the same data via SetEntitySpecifics. Should not set 2356 // Manually change to the same data via SetEntitySpecifics. Should not set
2356 // is_unsynced. 2357 // is_unsynced.
2357 { 2358 {
2358 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2359 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2359 WriteNode node(&trans); 2360 WriteNode node(&trans);
(...skipping 14 matching lines...) Expand all
2374 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2375 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2375 Cryptographer* cryptographer = trans.GetCryptographer(); 2376 Cryptographer* cryptographer = trans.GetCryptographer();
2376 sync_pb::PasswordSpecificsData data; 2377 sync_pb::PasswordSpecificsData data;
2377 data.set_password_value("secret"); 2378 data.set_password_value("secret");
2378 cryptographer->Encrypt( 2379 cryptographer->Encrypt(
2379 data, 2380 data,
2380 entity_specifics.mutable_password()-> 2381 entity_specifics.mutable_password()->
2381 mutable_encrypted()); 2382 mutable_encrypted());
2382 } 2383 }
2383 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, 2384 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag,
2384 BaseNode::GenerateSyncableHash(PASSWORDS, 2385 syncable::GenerateSyncableHash(PASSWORDS,
2385 client_tag), 2386 client_tag),
2386 entity_specifics); 2387 entity_specifics);
2387 // New node shouldn't start off unsynced. 2388 // New node shouldn't start off unsynced.
2388 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2389 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2389 2390
2390 // Manually change to the same data via SetPasswordSpecifics. Should not set 2391 // Manually change to the same data via SetPasswordSpecifics. Should not set
2391 // is_unsynced. 2392 // is_unsynced.
2392 { 2393 {
2393 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2394 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2394 WriteNode node(&trans); 2395 WriteNode node(&trans);
(...skipping 30 matching lines...) Expand all
2425 { 2426 {
2426 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2427 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2427 Cryptographer* cryptographer = trans.GetCryptographer(); 2428 Cryptographer* cryptographer = trans.GetCryptographer();
2428 sync_pb::PasswordSpecificsData data; 2429 sync_pb::PasswordSpecificsData data;
2429 data.set_password_value("secret"); 2430 data.set_password_value("secret");
2430 cryptographer->Encrypt( 2431 cryptographer->Encrypt(
2431 data, 2432 data,
2432 entity_specifics.mutable_password()->mutable_encrypted()); 2433 entity_specifics.mutable_password()->mutable_encrypted());
2433 } 2434 }
2434 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, 2435 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag,
2435 BaseNode::GenerateSyncableHash(PASSWORDS, 2436 syncable::GenerateSyncableHash(PASSWORDS,
2436 client_tag), 2437 client_tag),
2437 entity_specifics); 2438 entity_specifics);
2438 // New node shouldn't start off unsynced. 2439 // New node shouldn't start off unsynced.
2439 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2440 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2440 2441
2441 // Set a new passphrase. Should set is_unsynced. 2442 // Set a new passphrase. Should set is_unsynced.
2442 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2443 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2443 EXPECT_CALL(encryption_observer_, 2444 EXPECT_CALL(encryption_observer_,
2444 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN)); 2445 OnBootstrapTokenUpdated(_, PASSPHRASE_BOOTSTRAP_TOKEN));
2445 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted()); 2446 EXPECT_CALL(encryption_observer_, OnPassphraseAccepted());
(...skipping 18 matching lines...) Expand all
2464 { 2465 {
2465 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2466 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2466 Cryptographer* cryptographer = trans.GetCryptographer(); 2467 Cryptographer* cryptographer = trans.GetCryptographer();
2467 sync_pb::PasswordSpecificsData data; 2468 sync_pb::PasswordSpecificsData data;
2468 data.set_password_value("secret"); 2469 data.set_password_value("secret");
2469 cryptographer->Encrypt( 2470 cryptographer->Encrypt(
2470 data, 2471 data,
2471 entity_specifics.mutable_password()->mutable_encrypted()); 2472 entity_specifics.mutable_password()->mutable_encrypted());
2472 } 2473 }
2473 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag, 2474 MakeServerNode(sync_manager_.GetUserShare(), PASSWORDS, client_tag,
2474 BaseNode::GenerateSyncableHash(PASSWORDS, 2475 syncable::GenerateSyncableHash(PASSWORDS,
2475 client_tag), 2476 client_tag),
2476 entity_specifics); 2477 entity_specifics);
2477 // New node shouldn't start off unsynced. 2478 // New node shouldn't start off unsynced.
2478 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2479 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2479 2480
2480 // Force a re-encrypt everything. Should not set is_unsynced. 2481 // Force a re-encrypt everything. Should not set is_unsynced.
2481 testing::Mock::VerifyAndClearExpectations(&encryption_observer_); 2482 testing::Mock::VerifyAndClearExpectations(&encryption_observer_);
2482 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2483 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
2483 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_)); 2484 EXPECT_CALL(encryption_observer_, OnCryptographerStateChanged(_));
2484 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false)); 2485 EXPECT_CALL(encryption_observer_, OnEncryptedTypesChanged(_, false));
2485 sync_manager_.GetEncryptionHandler()->Init(); 2486 sync_manager_.GetEncryptionHandler()->Init();
2486 PumpLoop(); 2487 PumpLoop();
2487 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag)); 2488 EXPECT_FALSE(ResetUnsyncedEntry(PASSWORDS, client_tag));
2488 } 2489 }
2489 2490
2490 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for bookmarks 2491 // 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. 2492 // when we write the same data, but does set it when we write new data.
2492 TEST_F(SyncManagerTest, SetBookmarkTitle) { 2493 TEST_F(SyncManagerTest, SetBookmarkTitle) {
2493 std::string client_tag = "title"; 2494 std::string client_tag = "title";
2494 sync_pb::EntitySpecifics entity_specifics; 2495 sync_pb::EntitySpecifics entity_specifics;
2495 entity_specifics.mutable_bookmark()->set_url("url"); 2496 entity_specifics.mutable_bookmark()->set_url("url");
2496 entity_specifics.mutable_bookmark()->set_title("title"); 2497 entity_specifics.mutable_bookmark()->set_title("title");
2497 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2498 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2498 BaseNode::GenerateSyncableHash(BOOKMARKS, 2499 syncable::GenerateSyncableHash(BOOKMARKS,
2499 client_tag), 2500 client_tag),
2500 entity_specifics); 2501 entity_specifics);
2501 // New node shouldn't start off unsynced. 2502 // New node shouldn't start off unsynced.
2502 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2503 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2503 2504
2504 // Manually change to the same title. Should not set is_unsynced. 2505 // Manually change to the same title. Should not set is_unsynced.
2505 { 2506 {
2506 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2507 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2507 WriteNode node(&trans); 2508 WriteNode node(&trans);
2508 EXPECT_EQ(BaseNode::INIT_OK, 2509 EXPECT_EQ(BaseNode::INIT_OK,
(...skipping 15 matching lines...) Expand all
2524 2525
2525 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for encrypted 2526 // 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 2527 // bookmarks when we write the same data, but does set it when we write new
2527 // data. 2528 // data.
2528 TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) { 2529 TEST_F(SyncManagerTest, SetBookmarkTitleWithEncryption) {
2529 std::string client_tag = "title"; 2530 std::string client_tag = "title";
2530 sync_pb::EntitySpecifics entity_specifics; 2531 sync_pb::EntitySpecifics entity_specifics;
2531 entity_specifics.mutable_bookmark()->set_url("url"); 2532 entity_specifics.mutable_bookmark()->set_url("url");
2532 entity_specifics.mutable_bookmark()->set_title("title"); 2533 entity_specifics.mutable_bookmark()->set_title("title");
2533 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2534 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2534 BaseNode::GenerateSyncableHash(BOOKMARKS, 2535 syncable::GenerateSyncableHash(BOOKMARKS,
2535 client_tag), 2536 client_tag),
2536 entity_specifics); 2537 entity_specifics);
2537 // New node shouldn't start off unsynced. 2538 // New node shouldn't start off unsynced.
2538 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag)); 2539 EXPECT_FALSE(ResetUnsyncedEntry(BOOKMARKS, client_tag));
2539 2540
2540 // Encrypt the datatatype, should set is_unsynced. 2541 // Encrypt the datatatype, should set is_unsynced.
2541 EXPECT_CALL(encryption_observer_, 2542 EXPECT_CALL(encryption_observer_,
2542 OnEncryptedTypesChanged( 2543 OnEncryptedTypesChanged(
2543 HasModelTypes(EncryptableUserTypes()), true)); 2544 HasModelTypes(EncryptableUserTypes()), true));
2544 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2545 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
2583 // Verify SetTitle(..) doesn't unnecessarily set IS_UNSYNCED for non-bookmarks 2584 // 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. 2585 // when we write the same data, but does set it when we write new data.
2585 TEST_F(SyncManagerTest, SetNonBookmarkTitle) { 2586 TEST_F(SyncManagerTest, SetNonBookmarkTitle) {
2586 std::string client_tag = "title"; 2587 std::string client_tag = "title";
2587 sync_pb::EntitySpecifics entity_specifics; 2588 sync_pb::EntitySpecifics entity_specifics;
2588 entity_specifics.mutable_preference()->set_name("name"); 2589 entity_specifics.mutable_preference()->set_name("name");
2589 entity_specifics.mutable_preference()->set_value("value"); 2590 entity_specifics.mutable_preference()->set_value("value");
2590 MakeServerNode(sync_manager_.GetUserShare(), 2591 MakeServerNode(sync_manager_.GetUserShare(),
2591 PREFERENCES, 2592 PREFERENCES,
2592 client_tag, 2593 client_tag,
2593 BaseNode::GenerateSyncableHash(PREFERENCES, 2594 syncable::GenerateSyncableHash(PREFERENCES,
2594 client_tag), 2595 client_tag),
2595 entity_specifics); 2596 entity_specifics);
2596 // New node shouldn't start off unsynced. 2597 // New node shouldn't start off unsynced.
2597 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2598 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2598 2599
2599 // Manually change to the same title. Should not set is_unsynced. 2600 // Manually change to the same title. Should not set is_unsynced.
2600 { 2601 {
2601 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2602 WriteTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2602 WriteNode node(&trans); 2603 WriteNode node(&trans);
2603 EXPECT_EQ(BaseNode::INIT_OK, 2604 EXPECT_EQ(BaseNode::INIT_OK,
(...skipping 17 matching lines...) Expand all
2621 // non-bookmarks when we write the same data or when we write new data 2622 // non-bookmarks when we write the same data or when we write new data
2622 // data (should remained kEncryptedString). 2623 // data (should remained kEncryptedString).
2623 TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) { 2624 TEST_F(SyncManagerTest, SetNonBookmarkTitleWithEncryption) {
2624 std::string client_tag = "title"; 2625 std::string client_tag = "title";
2625 sync_pb::EntitySpecifics entity_specifics; 2626 sync_pb::EntitySpecifics entity_specifics;
2626 entity_specifics.mutable_preference()->set_name("name"); 2627 entity_specifics.mutable_preference()->set_name("name");
2627 entity_specifics.mutable_preference()->set_value("value"); 2628 entity_specifics.mutable_preference()->set_value("value");
2628 MakeServerNode(sync_manager_.GetUserShare(), 2629 MakeServerNode(sync_manager_.GetUserShare(),
2629 PREFERENCES, 2630 PREFERENCES,
2630 client_tag, 2631 client_tag,
2631 BaseNode::GenerateSyncableHash(PREFERENCES, 2632 syncable::GenerateSyncableHash(PREFERENCES,
2632 client_tag), 2633 client_tag),
2633 entity_specifics); 2634 entity_specifics);
2634 // New node shouldn't start off unsynced. 2635 // New node shouldn't start off unsynced.
2635 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag)); 2636 EXPECT_FALSE(ResetUnsyncedEntry(PREFERENCES, client_tag));
2636 2637
2637 // Encrypt the datatatype, should set is_unsynced. 2638 // Encrypt the datatatype, should set is_unsynced.
2638 EXPECT_CALL(encryption_observer_, 2639 EXPECT_CALL(encryption_observer_,
2639 OnEncryptedTypesChanged( 2640 OnEncryptedTypesChanged(
2640 HasModelTypes(EncryptableUserTypes()), true)); 2641 HasModelTypes(EncryptableUserTypes()), true));
2641 EXPECT_CALL(encryption_observer_, OnEncryptionComplete()); 2642 EXPECT_CALL(encryption_observer_, OnEncryptionComplete());
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
2692 Cryptographer* crypto = trans.GetCryptographer(); 2693 Cryptographer* crypto = trans.GetCryptographer();
2693 sync_pb::EntitySpecifics bm_specifics; 2694 sync_pb::EntitySpecifics bm_specifics;
2694 bm_specifics.mutable_bookmark()->set_title("title"); 2695 bm_specifics.mutable_bookmark()->set_title("title");
2695 bm_specifics.mutable_bookmark()->set_url("url"); 2696 bm_specifics.mutable_bookmark()->set_url("url");
2696 sync_pb::EncryptedData encrypted; 2697 sync_pb::EncryptedData encrypted;
2697 crypto->Encrypt(bm_specifics, &encrypted); 2698 crypto->Encrypt(bm_specifics, &encrypted);
2698 entity_specifics.mutable_encrypted()->CopyFrom(encrypted); 2699 entity_specifics.mutable_encrypted()->CopyFrom(encrypted);
2699 AddDefaultFieldValue(BOOKMARKS, &entity_specifics); 2700 AddDefaultFieldValue(BOOKMARKS, &entity_specifics);
2700 } 2701 }
2701 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2702 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2702 BaseNode::GenerateSyncableHash(BOOKMARKS, 2703 syncable::GenerateSyncableHash(BOOKMARKS,
2703 client_tag), 2704 client_tag),
2704 entity_specifics); 2705 entity_specifics);
2705 2706
2706 { 2707 {
2707 // Verify the data. 2708 // Verify the data.
2708 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare()); 2709 ReadTransaction trans(FROM_HERE, sync_manager_.GetUserShare());
2709 ReadNode node(&trans); 2710 ReadNode node(&trans);
2710 EXPECT_EQ(BaseNode::INIT_OK, 2711 EXPECT_EQ(BaseNode::INIT_OK,
2711 node.InitByClientTagLookup(BOOKMARKS, client_tag)); 2712 node.InitByClientTagLookup(BOOKMARKS, client_tag));
2712 EXPECT_EQ(title, node.GetTitle()); 2713 EXPECT_EQ(title, node.GetTitle());
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2757 GetTransactionVersion(i->first)); 2758 GetTransactionVersion(i->first));
2758 } 2759 }
2759 } 2760 }
2760 2761
2761 // Create bookmark node to increment transaction version of bookmark model. 2762 // Create bookmark node to increment transaction version of bookmark model.
2762 std::string client_tag = "title"; 2763 std::string client_tag = "title";
2763 sync_pb::EntitySpecifics entity_specifics; 2764 sync_pb::EntitySpecifics entity_specifics;
2764 entity_specifics.mutable_bookmark()->set_url("url"); 2765 entity_specifics.mutable_bookmark()->set_url("url");
2765 entity_specifics.mutable_bookmark()->set_title("title"); 2766 entity_specifics.mutable_bookmark()->set_title("title");
2766 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag, 2767 MakeServerNode(sync_manager_.GetUserShare(), BOOKMARKS, client_tag,
2767 BaseNode::GenerateSyncableHash(BOOKMARKS, 2768 syncable::GenerateSyncableHash(BOOKMARKS,
2768 client_tag), 2769 client_tag),
2769 entity_specifics); 2770 entity_specifics);
2770 2771
2771 { 2772 {
2772 ReadTransaction read_trans(FROM_HERE, sync_manager_.GetUserShare()); 2773 ReadTransaction read_trans(FROM_HERE, sync_manager_.GetUserShare());
2773 for (ModelSafeRoutingInfo::iterator i = routing_info.begin(); 2774 for (ModelSafeRoutingInfo::iterator i = routing_info.begin();
2774 i != routing_info.end(); ++i) { 2775 i != routing_info.end(); ++i) {
2775 EXPECT_EQ(i->first == BOOKMARKS ? 2 : 1, 2776 EXPECT_EQ(i->first == BOOKMARKS ? 2 : 1,
2776 sync_manager_.GetUserShare()->directory-> 2777 sync_manager_.GetUserShare()->directory->
2777 GetTransactionVersion(i->first)); 2778 GetTransactionVersion(i->first));
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
3072 Difference(ModelTypeSet::All(), disabled_types); 3073 Difference(ModelTypeSet::All(), disabled_types);
3073 3074
3074 // Verify only the non-disabled types remain after cleanup. 3075 // Verify only the non-disabled types remain after cleanup.
3075 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types); 3076 sync_manager_.PurgeDisabledTypes(enabled_types, new_enabled_types);
3076 EXPECT_TRUE(new_enabled_types.Equals(sync_manager_.InitialSyncEndedTypes())); 3077 EXPECT_TRUE(new_enabled_types.Equals(sync_manager_.InitialSyncEndedTypes()));
3077 EXPECT_TRUE(disabled_types.Equals( 3078 EXPECT_TRUE(disabled_types.Equals(
3078 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All()))); 3079 sync_manager_.GetTypesWithEmptyProgressMarkerToken(ModelTypeSet::All())));
3079 } 3080 }
3080 3081
3081 } // namespace 3082 } // namespace
OLDNEW
« no previous file with comments | « sync/internal_api/read_node.cc ('k') | sync/internal_api/write_node.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698