| 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 "chrome/browser/sync/engine/syncapi.h" | 5 #include "chrome/browser/sync/engine/syncapi.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <bitset> | 8 #include <bitset> |
| 9 #include <iomanip> | 9 #include <iomanip> |
| 10 #include <list> | 10 #include <list> |
| (...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 GetUnencryptedSpecifics(GetEntry()); | 402 GetUnencryptedSpecifics(GetEntry()); |
| 403 return unencrypted.GetExtension(sync_pb::nigori); | 403 return unencrypted.GetExtension(sync_pb::nigori); |
| 404 } | 404 } |
| 405 | 405 |
| 406 const sync_pb::PasswordSpecificsData& BaseNode::GetPasswordSpecifics() const { | 406 const sync_pb::PasswordSpecificsData& BaseNode::GetPasswordSpecifics() const { |
| 407 DCHECK_EQ(syncable::PASSWORDS, GetModelType()); | 407 DCHECK_EQ(syncable::PASSWORDS, GetModelType()); |
| 408 DCHECK(password_data_.get()); | 408 DCHECK(password_data_.get()); |
| 409 return *password_data_; | 409 return *password_data_; |
| 410 } | 410 } |
| 411 | 411 |
| 412 const sync_pb::PreferenceSpecifics& BaseNode::GetPreferenceSpecifics() const { | |
| 413 DCHECK_EQ(syncable::PREFERENCES, GetModelType()); | |
| 414 const sync_pb::EntitySpecifics& unencrypted = | |
| 415 GetUnencryptedSpecifics(GetEntry()); | |
| 416 return unencrypted.GetExtension(sync_pb::preference); | |
| 417 } | |
| 418 | |
| 419 const sync_pb::ThemeSpecifics& BaseNode::GetThemeSpecifics() const { | 412 const sync_pb::ThemeSpecifics& BaseNode::GetThemeSpecifics() const { |
| 420 DCHECK_EQ(syncable::THEMES, GetModelType()); | 413 DCHECK_EQ(syncable::THEMES, GetModelType()); |
| 421 const sync_pb::EntitySpecifics& unencrypted = | 414 const sync_pb::EntitySpecifics& unencrypted = |
| 422 GetUnencryptedSpecifics(GetEntry()); | 415 GetUnencryptedSpecifics(GetEntry()); |
| 423 return unencrypted.GetExtension(sync_pb::theme); | 416 return unencrypted.GetExtension(sync_pb::theme); |
| 424 } | 417 } |
| 425 | 418 |
| 426 const sync_pb::TypedUrlSpecifics& BaseNode::GetTypedUrlSpecifics() const { | 419 const sync_pb::TypedUrlSpecifics& BaseNode::GetTypedUrlSpecifics() const { |
| 427 DCHECK_EQ(syncable::TYPED_URLS, GetModelType()); | 420 DCHECK_EQ(syncable::TYPED_URLS, GetModelType()); |
| 428 const sync_pb::EntitySpecifics& unencrypted = | 421 const sync_pb::EntitySpecifics& unencrypted = |
| 429 GetUnencryptedSpecifics(GetEntry()); | 422 GetUnencryptedSpecifics(GetEntry()); |
| 430 return unencrypted.GetExtension(sync_pb::typed_url); | 423 return unencrypted.GetExtension(sync_pb::typed_url); |
| 431 } | 424 } |
| 432 | 425 |
| 433 const sync_pb::ExtensionSpecifics& BaseNode::GetExtensionSpecifics() const { | 426 const sync_pb::ExtensionSpecifics& BaseNode::GetExtensionSpecifics() const { |
| 434 DCHECK_EQ(syncable::EXTENSIONS, GetModelType()); | 427 DCHECK_EQ(syncable::EXTENSIONS, GetModelType()); |
| 435 const sync_pb::EntitySpecifics& unencrypted = | 428 const sync_pb::EntitySpecifics& unencrypted = |
| 436 GetUnencryptedSpecifics(GetEntry()); | 429 GetUnencryptedSpecifics(GetEntry()); |
| 437 return unencrypted.GetExtension(sync_pb::extension); | 430 return unencrypted.GetExtension(sync_pb::extension); |
| 438 } | 431 } |
| 439 | 432 |
| 440 const sync_pb::SessionSpecifics& BaseNode::GetSessionSpecifics() const { | 433 const sync_pb::SessionSpecifics& BaseNode::GetSessionSpecifics() const { |
| 441 DCHECK_EQ(syncable::SESSIONS, GetModelType()); | 434 DCHECK_EQ(syncable::SESSIONS, GetModelType()); |
| 442 const sync_pb::EntitySpecifics& unencrypted = | 435 const sync_pb::EntitySpecifics& unencrypted = |
| 443 GetUnencryptedSpecifics(GetEntry()); | 436 GetUnencryptedSpecifics(GetEntry()); |
| 444 return unencrypted.GetExtension(sync_pb::session); | 437 return unencrypted.GetExtension(sync_pb::session); |
| 445 } | 438 } |
| 446 | 439 |
| 440 const sync_pb::EntitySpecifics& BaseNode::GetEntitySpecifics() const { |
| 441 const sync_pb::EntitySpecifics& unencrypted = |
| 442 GetUnencryptedSpecifics(GetEntry()); |
| 443 return unencrypted; |
| 444 } |
| 445 |
| 447 syncable::ModelType BaseNode::GetModelType() const { | 446 syncable::ModelType BaseNode::GetModelType() const { |
| 448 return GetEntry()->GetModelType(); | 447 return GetEntry()->GetModelType(); |
| 449 } | 448 } |
| 450 | 449 |
| 451 //////////////////////////////////// | 450 //////////////////////////////////// |
| 452 // WriteNode member definitions | 451 // WriteNode member definitions |
| 453 void WriteNode::EncryptIfNecessary(sync_pb::EntitySpecifics* unencrypted) { | 452 void WriteNode::EncryptIfNecessary(sync_pb::EntitySpecifics* unencrypted) { |
| 454 syncable::ModelType type = syncable::GetModelTypeFromSpecifics(*unencrypted); | 453 syncable::ModelType type = syncable::GetModelTypeFromSpecifics(*unencrypted); |
| 455 DCHECK_NE(type, syncable::UNSPECIFIED); | 454 DCHECK_NE(type, syncable::UNSPECIFIED); |
| 456 DCHECK_NE(type, syncable::PASSWORDS); // Passwords use their own encryption. | 455 DCHECK_NE(type, syncable::PASSWORDS); // Passwords use their own encryption. |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 return; | 592 return; |
| 594 } | 593 } |
| 595 | 594 |
| 596 sync_pb::PasswordSpecifics new_value; | 595 sync_pb::PasswordSpecifics new_value; |
| 597 if (!cryptographer->Encrypt(data, new_value.mutable_encrypted())) { | 596 if (!cryptographer->Encrypt(data, new_value.mutable_encrypted())) { |
| 598 NOTREACHED(); | 597 NOTREACHED(); |
| 599 } | 598 } |
| 600 PutPasswordSpecificsAndMarkForSyncing(new_value); | 599 PutPasswordSpecificsAndMarkForSyncing(new_value); |
| 601 } | 600 } |
| 602 | 601 |
| 603 void WriteNode::SetPreferenceSpecifics( | |
| 604 const sync_pb::PreferenceSpecifics& new_value) { | |
| 605 DCHECK_EQ(syncable::PREFERENCES, GetModelType()); | |
| 606 PutPreferenceSpecificsAndMarkForSyncing(new_value); | |
| 607 } | |
| 608 | |
| 609 void WriteNode::SetThemeSpecifics( | 602 void WriteNode::SetThemeSpecifics( |
| 610 const sync_pb::ThemeSpecifics& new_value) { | 603 const sync_pb::ThemeSpecifics& new_value) { |
| 611 DCHECK_EQ(syncable::THEMES, GetModelType()); | 604 DCHECK_EQ(syncable::THEMES, GetModelType()); |
| 612 PutThemeSpecificsAndMarkForSyncing(new_value); | 605 PutThemeSpecificsAndMarkForSyncing(new_value); |
| 613 } | 606 } |
| 614 | 607 |
| 615 void WriteNode::SetSessionSpecifics( | 608 void WriteNode::SetSessionSpecifics( |
| 616 const sync_pb::SessionSpecifics& new_value) { | 609 const sync_pb::SessionSpecifics& new_value) { |
| 617 DCHECK_EQ(syncable::SESSIONS, GetModelType()); | 610 DCHECK_EQ(syncable::SESSIONS, GetModelType()); |
| 618 PutSessionSpecificsAndMarkForSyncing(new_value); | 611 PutSessionSpecificsAndMarkForSyncing(new_value); |
| 619 } | 612 } |
| 620 | 613 |
| 614 void WriteNode::SetEntitySpecifics( |
| 615 const sync_pb::EntitySpecifics& new_value) { |
| 616 syncable::ModelType specifics_type = |
| 617 syncable::GetModelTypeFromSpecifics(new_value); |
| 618 DCHECK_EQ(specifics_type, GetModelType()); |
| 619 sync_pb::EntitySpecifics entity_specifics; |
| 620 entity_specifics.CopyFrom(new_value); |
| 621 EncryptIfNecessary(&entity_specifics); |
| 622 PutSpecificsAndMarkForSyncing(entity_specifics); |
| 623 } |
| 624 |
| 621 void WriteNode::ResetFromSpecifics() { | 625 void WriteNode::ResetFromSpecifics() { |
| 622 sync_pb::EntitySpecifics new_data; | 626 sync_pb::EntitySpecifics new_data; |
| 623 new_data.CopyFrom(GetUnencryptedSpecifics(GetEntry())); | 627 new_data.CopyFrom(GetUnencryptedSpecifics(GetEntry())); |
| 624 EncryptIfNecessary(&new_data); | 628 EncryptIfNecessary(&new_data); |
| 625 PutSpecificsAndMarkForSyncing(new_data); | 629 PutSpecificsAndMarkForSyncing(new_data); |
| 626 } | 630 } |
| 627 | 631 |
| 628 void WriteNode::PutPasswordSpecificsAndMarkForSyncing( | 632 void WriteNode::PutPasswordSpecificsAndMarkForSyncing( |
| 629 const sync_pb::PasswordSpecifics& new_value) { | 633 const sync_pb::PasswordSpecifics& new_value) { |
| 630 sync_pb::EntitySpecifics entity_specifics; | 634 sync_pb::EntitySpecifics entity_specifics; |
| 631 entity_specifics.MutableExtension(sync_pb::password)->CopyFrom(new_value); | 635 entity_specifics.MutableExtension(sync_pb::password)->CopyFrom(new_value); |
| 632 PutSpecificsAndMarkForSyncing(entity_specifics); | 636 PutSpecificsAndMarkForSyncing(entity_specifics); |
| 633 } | 637 } |
| 634 | 638 |
| 635 void WriteNode::PutPreferenceSpecificsAndMarkForSyncing( | |
| 636 const sync_pb::PreferenceSpecifics& new_value) { | |
| 637 sync_pb::EntitySpecifics entity_specifics; | |
| 638 entity_specifics.MutableExtension(sync_pb::preference)->CopyFrom(new_value); | |
| 639 EncryptIfNecessary(&entity_specifics); | |
| 640 PutSpecificsAndMarkForSyncing(entity_specifics); | |
| 641 } | |
| 642 | |
| 643 void WriteNode::SetTypedUrlSpecifics( | 639 void WriteNode::SetTypedUrlSpecifics( |
| 644 const sync_pb::TypedUrlSpecifics& new_value) { | 640 const sync_pb::TypedUrlSpecifics& new_value) { |
| 645 DCHECK_EQ(syncable::TYPED_URLS, GetModelType()); | 641 DCHECK_EQ(syncable::TYPED_URLS, GetModelType()); |
| 646 PutTypedUrlSpecificsAndMarkForSyncing(new_value); | 642 PutTypedUrlSpecificsAndMarkForSyncing(new_value); |
| 647 } | 643 } |
| 648 | 644 |
| 649 void WriteNode::SetExtensionSpecifics( | 645 void WriteNode::SetExtensionSpecifics( |
| 650 const sync_pb::ExtensionSpecifics& new_value) { | 646 const sync_pb::ExtensionSpecifics& new_value) { |
| 651 DCHECK_EQ(syncable::EXTENSIONS, GetModelType()); | 647 DCHECK_EQ(syncable::EXTENSIONS, GetModelType()); |
| 652 PutExtensionSpecificsAndMarkForSyncing(new_value); | 648 PutExtensionSpecificsAndMarkForSyncing(new_value); |
| (...skipping 2356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3009 void SyncManager::TriggerOnIncomingNotificationForTest( | 3005 void SyncManager::TriggerOnIncomingNotificationForTest( |
| 3010 const syncable::ModelTypeBitSet& model_types) { | 3006 const syncable::ModelTypeBitSet& model_types) { |
| 3011 syncable::ModelTypePayloadMap model_types_with_payloads = | 3007 syncable::ModelTypePayloadMap model_types_with_payloads = |
| 3012 syncable::ModelTypePayloadMapFromBitSet(model_types, | 3008 syncable::ModelTypePayloadMapFromBitSet(model_types, |
| 3013 std::string()); | 3009 std::string()); |
| 3014 | 3010 |
| 3015 data_->OnIncomingNotification(model_types_with_payloads); | 3011 data_->OnIncomingNotification(model_types_with_payloads); |
| 3016 } | 3012 } |
| 3017 | 3013 |
| 3018 } // namespace sync_api | 3014 } // namespace sync_api |
| OLD | NEW |