summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-18 09:57:04 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-18 09:57:04 +0000
commitab58e4277a2d8fc430303719ba369289761d017d (patch)
tree44feba503e915ad23374de6281aab54bd117d590 /chrome/browser/sync
parentd26ee5f08c3f3491c85845391b075205cdb911db (diff)
downloadchromium_src-ab58e4277a2d8fc430303719ba369289761d017d.zip
chromium_src-ab58e4277a2d8fc430303719ba369289761d017d.tar.gz
chromium_src-ab58e4277a2d8fc430303719ba369289761d017d.tar.bz2
[Sync] Fix bug in JsSyncManagerObserver leading to erroneous change info.
The bug is that the changes in an onChangesApplied() event is set to n copies of the first change. Fix similar bug in test code (which is why this bug wasn't caught). BUG=69500 TEST= Review URL: http://codereview.chromium.org/6546009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75373 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sync')
-rw-r--r--chrome/browser/sync/js_sync_manager_observer.cc2
-rw-r--r--chrome/browser/sync/js_sync_manager_observer_unittest.cc24
2 files changed, 15 insertions, 11 deletions
diff --git a/chrome/browser/sync/js_sync_manager_observer.cc b/chrome/browser/sync/js_sync_manager_observer.cc
index 407ce98..ef6eb06 100644
--- a/chrome/browser/sync/js_sync_manager_observer.cc
+++ b/chrome/browser/sync/js_sync_manager_observer.cc
@@ -34,7 +34,7 @@ void JsSyncManagerObserver::OnChangesApplied(
ListValue* change_values = new ListValue();
return_args.Append(change_values);
for (int i = 0; i < change_count; ++i) {
- change_values->Append(changes->ToValue(trans));
+ change_values->Append(changes[i].ToValue(trans));
}
parent_router_->RouteJsEvent("onChangesApplied",
JsArgList(return_args), NULL);
diff --git a/chrome/browser/sync/js_sync_manager_observer_unittest.cc b/chrome/browser/sync/js_sync_manager_observer_unittest.cc
index 11df4d5..8039add 100644
--- a/chrome/browser/sync/js_sync_manager_observer_unittest.cc
+++ b/chrome/browser/sync/js_sync_manager_observer_unittest.cc
@@ -179,9 +179,9 @@ TEST_F(JsSyncManagerObserverTest, OnChangesApplied) {
// We don't test with passwords as that requires additional setup.
// Build a list of example ChangeRecords.
- sync_api::SyncManager::ChangeRecord changes[syncable::PASSWORDS];
- for (int i = syncable::FIRST_REAL_MODEL_TYPE;
- i < syncable::PASSWORDS; ++i) {
+ sync_api::SyncManager::ChangeRecord changes[syncable::MODEL_TYPE_COUNT];
+ for (int i = syncable::AUTOFILL_PROFILE;
+ i < syncable::MODEL_TYPE_COUNT; ++i) {
changes[i].id = MakeNode(&share, syncable::ModelTypeFromInt(i));
switch (i % 3) {
case 0:
@@ -205,18 +205,22 @@ TEST_F(JsSyncManagerObserverTest, OnChangesApplied) {
}
}
+ // For each i, we call OnChangesApplied() with the first arg equal
+ // to i cast to ModelType and the second argument with the changes
+ // starting from changes[i].
+
// Set expectations for each data type.
- for (int i = syncable::FIRST_REAL_MODEL_TYPE;
- i < syncable::PASSWORDS; ++i) {
+ for (int i = syncable::AUTOFILL_PROFILE;
+ i < syncable::MODEL_TYPE_COUNT; ++i) {
const std::string& model_type_str =
syncable::ModelTypeToString(syncable::ModelTypeFromInt(i));
ListValue expected_args;
expected_args.Append(Value::CreateStringValue(model_type_str));
ListValue* expected_changes = new ListValue();
expected_args.Append(expected_changes);
- for (int j = i; j < syncable::PASSWORDS; ++j) {
+ for (int j = i; j < syncable::MODEL_TYPE_COUNT; ++j) {
sync_api::ReadTransaction trans(&share);
- expected_changes->Append(changes[i].ToValue(&trans));
+ expected_changes->Append(changes[j].ToValue(&trans));
}
EXPECT_CALL(mock_router_,
RouteJsEvent("onChangesApplied",
@@ -224,12 +228,12 @@ TEST_F(JsSyncManagerObserverTest, OnChangesApplied) {
}
// Fire OnChangesApplied() for each data type.
- for (int i = syncable::FIRST_REAL_MODEL_TYPE;
- i < syncable::PASSWORDS; ++i) {
+ for (int i = syncable::AUTOFILL_PROFILE;
+ i < syncable::MODEL_TYPE_COUNT; ++i) {
sync_api::ReadTransaction trans(&share);
sync_manager_observer_.OnChangesApplied(syncable::ModelTypeFromInt(i),
&trans, &changes[i],
- syncable::PASSWORDS - i);
+ syncable::MODEL_TYPE_COUNT - i);
}
// |share.dir_manager| does not actually own its value.