summaryrefslogtreecommitdiffstats
path: root/sync/api
diff options
context:
space:
mode:
authorzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-10 23:46:45 +0000
committerzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-10 23:46:45 +0000
commit786009d47328ac4672c86e5a3964d56fc36b3d74 (patch)
treee4994d54c0fac1f093200f08edeea4d1f4fc4170 /sync/api
parent99800f2ad6f7518143b15092f711670253fbcfc8 (diff)
downloadchromium_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.cc13
-rw-r--r--sync/api/sync_change.h8
-rw-r--r--sync/api/sync_change_unittest.cc12
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)));