| Index: chrome/browser/sync/internal_api/syncapi_unittest.cc
|
| diff --git a/chrome/browser/sync/internal_api/syncapi_unittest.cc b/chrome/browser/sync/internal_api/syncapi_unittest.cc
|
| index 729596653ac3c906d1a42e7d37d5e89a35842cb8..9f48680424eb58141c4e13712e15aeb5f1d0b9e2 100644
|
| --- a/chrome/browser/sync/internal_api/syncapi_unittest.cc
|
| +++ b/chrome/browser/sync/internal_api/syncapi_unittest.cc
|
| @@ -40,6 +40,7 @@
|
| #include "chrome/browser/sync/notifier/sync_notifier.h"
|
| #include "chrome/browser/sync/notifier/sync_notifier_observer.h"
|
| #include "chrome/browser/sync/protocol/bookmark_specifics.pb.h"
|
| +#include "chrome/browser/sync/protocol/extension_specifics.pb.h"
|
| #include "chrome/browser/sync/protocol/password_specifics.pb.h"
|
| #include "chrome/browser/sync/protocol/proto_value_conversions.h"
|
| #include "chrome/browser/sync/protocol/sync.pb.h"
|
| @@ -73,7 +74,6 @@ using syncable::GetAllRealModelTypes;
|
| using syncable::kEncryptedString;
|
| using syncable::ModelType;
|
| using syncable::ModelTypeSet;
|
| -using test::ExpectDictDictionaryValue;
|
| using test::ExpectDictStringValue;
|
| using testing::_;
|
| using testing::AnyNumber;
|
| @@ -558,140 +558,6 @@ TEST_F(SyncApiTest, BaseNodeGetDetailsAsValue) {
|
|
|
| namespace {
|
|
|
| -void ExpectChangeRecordActionValue(ChangeRecord::Action expected_value,
|
| - const DictionaryValue& value,
|
| - const std::string& key) {
|
| - std::string str_value;
|
| - EXPECT_TRUE(value.GetString(key, &str_value));
|
| - switch (expected_value) {
|
| - case ChangeRecord::ACTION_ADD:
|
| - EXPECT_EQ("Add", str_value);
|
| - break;
|
| - case ChangeRecord::ACTION_UPDATE:
|
| - EXPECT_EQ("Update", str_value);
|
| - break;
|
| - case ChangeRecord::ACTION_DELETE:
|
| - EXPECT_EQ("Delete", str_value);
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| -}
|
| -
|
| -void CheckNonDeleteChangeRecordValue(const ChangeRecord& record,
|
| - const DictionaryValue& value,
|
| - BaseTransaction* trans) {
|
| - EXPECT_NE(ChangeRecord::ACTION_DELETE, record.action);
|
| - ExpectChangeRecordActionValue(record.action, value, "action");
|
| - {
|
| - ReadNode node(trans);
|
| - EXPECT_TRUE(node.InitByIdLookup(record.id));
|
| - scoped_ptr<DictionaryValue> expected_details(node.GetDetailsAsValue());
|
| - ExpectDictDictionaryValue(*expected_details, value, "node");
|
| - }
|
| -}
|
| -
|
| -void CheckDeleteChangeRecordValue(const ChangeRecord& record,
|
| - const DictionaryValue& value) {
|
| - EXPECT_EQ(ChangeRecord::ACTION_DELETE, record.action);
|
| - ExpectChangeRecordActionValue(record.action, value, "action");
|
| - DictionaryValue* node_value = NULL;
|
| - EXPECT_TRUE(value.GetDictionary("node", &node_value));
|
| - if (node_value) {
|
| - ExpectInt64Value(record.id, *node_value, "id");
|
| - scoped_ptr<DictionaryValue> expected_specifics_value(
|
| - browser_sync::EntitySpecificsToValue(record.specifics));
|
| - ExpectDictDictionaryValue(*expected_specifics_value,
|
| - *node_value, "specifics");
|
| - scoped_ptr<DictionaryValue> expected_extra_value;
|
| - if (record.extra.get()) {
|
| - expected_extra_value.reset(record.extra->ToValue());
|
| - }
|
| - Value* extra_value = NULL;
|
| - EXPECT_EQ(record.extra.get() != NULL,
|
| - node_value->Get("extra", &extra_value));
|
| - EXPECT_TRUE(Value::Equals(extra_value, expected_extra_value.get()));
|
| - }
|
| -}
|
| -
|
| -class MockExtraChangeRecordData
|
| - : public ExtraPasswordChangeRecordData {
|
| - public:
|
| - MOCK_CONST_METHOD0(ToValue, DictionaryValue*());
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -TEST_F(SyncApiTest, ChangeRecordToValue) {
|
| - int64 child_id = MakeNode(test_user_share_.user_share(),
|
| - syncable::BOOKMARKS, "testtag");
|
| - sync_pb::EntitySpecifics child_specifics;
|
| - {
|
| - ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
|
| - ReadNode node(&trans);
|
| - EXPECT_TRUE(node.InitByIdLookup(child_id));
|
| - child_specifics = node.GetEntry()->Get(syncable::SPECIFICS);
|
| - }
|
| -
|
| - // Add
|
| - {
|
| - ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
|
| - ChangeRecord record;
|
| - record.action = ChangeRecord::ACTION_ADD;
|
| - record.id = 1;
|
| - record.specifics = child_specifics;
|
| - record.extra.reset(new StrictMock<MockExtraChangeRecordData>());
|
| - scoped_ptr<DictionaryValue> value(record.ToValue(&trans));
|
| - CheckNonDeleteChangeRecordValue(record, *value, &trans);
|
| - }
|
| -
|
| - // Update
|
| - {
|
| - ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
|
| - ChangeRecord record;
|
| - record.action = ChangeRecord::ACTION_UPDATE;
|
| - record.id = child_id;
|
| - record.specifics = child_specifics;
|
| - record.extra.reset(new StrictMock<MockExtraChangeRecordData>());
|
| - scoped_ptr<DictionaryValue> value(record.ToValue(&trans));
|
| - CheckNonDeleteChangeRecordValue(record, *value, &trans);
|
| - }
|
| -
|
| - // Delete (no extra)
|
| - {
|
| - ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
|
| - ChangeRecord record;
|
| - record.action = ChangeRecord::ACTION_DELETE;
|
| - record.id = child_id + 1;
|
| - record.specifics = child_specifics;
|
| - scoped_ptr<DictionaryValue> value(record.ToValue(&trans));
|
| - CheckDeleteChangeRecordValue(record, *value);
|
| - }
|
| -
|
| - // Delete (with extra)
|
| - {
|
| - ReadTransaction trans(FROM_HERE, test_user_share_.user_share());
|
| - ChangeRecord record;
|
| - record.action = ChangeRecord::ACTION_DELETE;
|
| - record.id = child_id + 1;
|
| - record.specifics = child_specifics;
|
| -
|
| - DictionaryValue extra_value;
|
| - extra_value.SetString("foo", "bar");
|
| - scoped_ptr<StrictMock<MockExtraChangeRecordData> > extra(
|
| - new StrictMock<MockExtraChangeRecordData>());
|
| - EXPECT_CALL(*extra, ToValue()).Times(2).WillRepeatedly(
|
| - Invoke(&extra_value, &DictionaryValue::DeepCopy));
|
| -
|
| - record.extra.reset(extra.release());
|
| - scoped_ptr<DictionaryValue> value(record.ToValue(&trans));
|
| - CheckDeleteChangeRecordValue(record, *value);
|
| - }
|
| -}
|
| -
|
| -namespace {
|
| -
|
| class TestHttpPostProviderInterface : public HttpPostProviderInterface {
|
| public:
|
| virtual ~TestHttpPostProviderInterface() {}
|
| @@ -732,11 +598,6 @@ class TestHttpPostProviderFactory : public HttpPostProviderFactory {
|
|
|
| class SyncManagerObserverMock : public SyncManager::Observer {
|
| public:
|
| - MOCK_METHOD3(OnChangesApplied,
|
| - void(ModelType,
|
| - const BaseTransaction*,
|
| - const ImmutableChangeRecordList&)); // NOLINT
|
| - MOCK_METHOD1(OnChangesComplete, void(ModelType)); // NOLINT
|
| MOCK_METHOD1(OnSyncCycleCompleted,
|
| void(const SyncSessionSnapshot*)); // NOLINT
|
| MOCK_METHOD2(OnInitializationComplete,
|
| @@ -768,7 +629,8 @@ class SyncNotifierMock : public sync_notifier::SyncNotifier {
|
| };
|
|
|
| class SyncManagerTest : public testing::Test,
|
| - public ModelSafeWorkerRegistrar {
|
| + public ModelSafeWorkerRegistrar,
|
| + public SyncManager::ChangeDelegate {
|
| protected:
|
| SyncManagerTest()
|
| : ui_thread_(BrowserThread::UI, &ui_loop_),
|
| @@ -814,7 +676,7 @@ class SyncManagerTest : public testing::Test,
|
| sync_manager_.Init(temp_dir_.path(),
|
| WeakHandle<JsEventHandler>(),
|
| "bogus", 0, false,
|
| - new TestHttpPostProviderFactory(), this, "bogus",
|
| + new TestHttpPostProviderFactory(), this, this, "bogus",
|
| credentials, sync_notifier_mock_, "",
|
| true /* setup_for_test_mode */);
|
|
|
| @@ -827,10 +689,6 @@ class SyncManagerTest : public testing::Test,
|
| GetModelSafeRoutingInfo(&routes);
|
| for (ModelSafeRoutingInfo::iterator i = routes.begin(); i != routes.end();
|
| ++i) {
|
| - EXPECT_CALL(observer_, OnChangesApplied(i->first, _, _))
|
| - .RetiresOnSaturation();
|
| - EXPECT_CALL(observer_, OnChangesComplete(i->first))
|
| - .RetiresOnSaturation();
|
| type_roots_[i->first] = MakeServerNodeForType(
|
| sync_manager_.GetUserShare(), i->first);
|
| }
|
| @@ -846,11 +704,11 @@ class SyncManagerTest : public testing::Test,
|
| }
|
|
|
| // ModelSafeWorkerRegistrar implementation.
|
| - virtual void GetWorkers(std::vector<ModelSafeWorker*>* out) {
|
| + virtual void GetWorkers(std::vector<ModelSafeWorker*>* out) OVERRIDE {
|
| NOTIMPLEMENTED();
|
| out->clear();
|
| }
|
| - virtual void GetModelSafeRoutingInfo(ModelSafeRoutingInfo* out) {
|
| + virtual void GetModelSafeRoutingInfo(ModelSafeRoutingInfo* out) OVERRIDE {
|
| (*out)[syncable::NIGORI] = browser_sync::GROUP_PASSIVE;
|
| (*out)[syncable::BOOKMARKS] = browser_sync::GROUP_PASSIVE;
|
| (*out)[syncable::THEMES] = browser_sync::GROUP_PASSIVE;
|
| @@ -858,6 +716,13 @@ class SyncManagerTest : public testing::Test,
|
| (*out)[syncable::PASSWORDS] = browser_sync::GROUP_PASSIVE;
|
| }
|
|
|
| + virtual void OnChangesApplied(
|
| + syncable::ModelType model_type,
|
| + const BaseTransaction* trans,
|
| + const ImmutableChangeRecordList& changes) OVERRIDE {}
|
| +
|
| + virtual void OnChangesComplete(syncable::ModelType model_type) OVERRIDE {}
|
| +
|
| // Helper methods.
|
| bool SetUpEncryption() {
|
| // Mock the Mac Keychain service. The real Keychain can block on user input.
|
|
|