diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-10 23:46:45 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-10 23:46:45 +0000 |
commit | 786009d47328ac4672c86e5a3964d56fc36b3d74 (patch) | |
tree | e4994d54c0fac1f093200f08edeea4d1f4fc4170 /sync/api | |
parent | 99800f2ad6f7518143b15092f711670253fbcfc8 (diff) | |
download | chromium_src-786009d47328ac4672c86e5a3964d56fc36b3d74.zip chromium_src-786009d47328ac4672c86e5a3964d56fc36b3d74.tar.gz chromium_src-786009d47328ac4672c86e5a3964d56fc36b3d74.tar.bz2 |
[Sync] Add location parameter to SyncChange in Sync API.
SyncChanges now require the location they were created as a parameter. This
is then used in the case that the change violates and invariant. We display
the location and type of erroneous change in about:sync, in addition to
disabling the offending datatype.
TBR=kalman@chromium.org, mnissler@chromium.org, isherman@chromium.org
BUG=135108
TEST=unit_tests
Review URL: https://chromiumcodereview.appspot.com/10766016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145993 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/api')
-rw-r--r-- | sync/api/sync_change.cc | 13 | ||||
-rw-r--r-- | sync/api/sync_change.h | 8 | ||||
-rw-r--r-- | sync/api/sync_change_unittest.cc | 12 |
3 files changed, 25 insertions, 8 deletions
diff --git a/sync/api/sync_change.cc b/sync/api/sync_change.cc index 64da5b7..ee1cdea 100644 --- a/sync/api/sync_change.cc +++ b/sync/api/sync_change.cc @@ -11,8 +11,12 @@ namespace syncer { SyncChange::SyncChange() : change_type_(ACTION_INVALID) { } -SyncChange::SyncChange(SyncChangeType change_type, const SyncData& sync_data) - : change_type_(change_type), +SyncChange::SyncChange( + const tracked_objects::Location& from_here, + SyncChangeType change_type, + const SyncData& sync_data) + : location_(from_here), + change_type_(change_type), sync_data_(sync_data) { DCHECK(IsValid()); } @@ -66,8 +70,9 @@ std::string SyncChange::ChangeTypeToString(SyncChangeType change_type) { } std::string SyncChange::ToString() const { - return "{ changeType: " + ChangeTypeToString(change_type_) + - ", syncData: " + sync_data_.ToString() + "}"; + return "{ " + location_.ToString() + ", changeType: " + + ChangeTypeToString(change_type_) + ", syncData: " + + sync_data_.ToString() + "}"; } void PrintTo(const SyncChange& sync_change, std::ostream* os) { diff --git a/sync/api/sync_change.h b/sync/api/sync_change.h index 63a03d9..3cfb1d5 100644 --- a/sync/api/sync_change.h +++ b/sync/api/sync_change.h @@ -10,6 +10,7 @@ #include <string> #include <vector> +#include "base/location.h" #include "sync/api/sync_data.h" namespace syncer { @@ -31,7 +32,10 @@ class SyncChange { // Default constructor creates an invalid change. SyncChange(); // Create a new change with the specified sync data. - SyncChange(SyncChangeType change_type, const SyncData& sync_data); + SyncChange( + const tracked_objects::Location& from_here, + SyncChangeType change_type, + const SyncData& sync_data); ~SyncChange(); // Copy constructor and assignment operator welcome. @@ -56,6 +60,8 @@ class SyncChange { std::string ToString() const; private: + tracked_objects::Location location_; + SyncChangeType change_type_; // An immutable container for the data of this SyncChange. Whenever diff --git a/sync/api/sync_change_unittest.cc b/sync/api/sync_change_unittest.cc index 765bcdf..f5aab08 100644 --- a/sync/api/sync_change_unittest.cc +++ b/sync/api/sync_change_unittest.cc @@ -25,7 +25,8 @@ typedef testing::Test SyncChangeTest; TEST_F(SyncChangeTest, LocalDelete) { SyncChange::SyncChangeType change_type = SyncChange::ACTION_DELETE; std::string tag = "client_tag"; - SyncChange e(change_type, + SyncChange e(FROM_HERE, + change_type, SyncData::CreateLocalDelete(tag, syncer::PREFERENCES)); EXPECT_EQ(change_type, e.change_type()); EXPECT_EQ(tag, e.sync_data().GetTag()); @@ -39,7 +40,8 @@ TEST_F(SyncChangeTest, LocalUpdate) { pref_specifics->set_name("test"); std::string tag = "client_tag"; std::string title = "client_title"; - SyncChange e(change_type, + SyncChange e(FROM_HERE, + change_type, SyncData::CreateLocalData(tag, title, specifics)); EXPECT_EQ(change_type, e.change_type()); EXPECT_EQ(tag, e.sync_data().GetTag()); @@ -58,7 +60,8 @@ TEST_F(SyncChangeTest, LocalAdd) { pref_specifics->set_name("test"); std::string tag = "client_tag"; std::string title = "client_title"; - SyncChange e(change_type, + SyncChange e(FROM_HERE, + change_type, SyncData::CreateLocalData(tag, title, specifics)); EXPECT_EQ(change_type, e.change_type()); EXPECT_EQ(tag, e.sync_data().GetTag()); @@ -79,6 +82,7 @@ TEST_F(SyncChangeTest, SyncerChanges) { update_specifics.mutable_preference(); pref_specifics->set_name("update"); change_list.push_back(SyncChange( + FROM_HERE, SyncChange::ACTION_UPDATE, SyncData::CreateRemoteData(1, update_specifics))); @@ -87,6 +91,7 @@ TEST_F(SyncChangeTest, SyncerChanges) { pref_specifics = add_specifics.mutable_preference(); pref_specifics->set_name("add"); change_list.push_back(SyncChange( + FROM_HERE, SyncChange::ACTION_ADD, SyncData::CreateRemoteData(2, add_specifics))); @@ -95,6 +100,7 @@ TEST_F(SyncChangeTest, SyncerChanges) { pref_specifics = delete_specifics.mutable_preference(); pref_specifics->set_name("add"); change_list.push_back(SyncChange( + FROM_HERE, SyncChange::ACTION_DELETE, SyncData::CreateRemoteData(3, delete_specifics))); |