Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(955)

Unified Diff: sync/internal_api/syncapi_unittest.cc

Issue 10483015: [Sync] Refactor sync configuration logic. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« sync/internal_api/sync_manager.cc ('K') | « sync/internal_api/sync_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/syncapi_unittest.cc
diff --git a/sync/internal_api/syncapi_unittest.cc b/sync/internal_api/syncapi_unittest.cc
index e8fa2bd7f26eb9d7acdc206f91a4ee764e260524..cfe2f7724fa38de38de7c5f7813e916bc386f33e 100644
--- a/sync/internal_api/syncapi_unittest.cc
+++ b/sync/internal_api/syncapi_unittest.cc
@@ -24,6 +24,7 @@
#include "base/utf_string_conversions.h"
#include "base/values.h"
#include "sync/engine/nigori_util.h"
+#include "sync/engine/sync_scheduler.h"
#include "sync/internal_api/change_record.h"
#include "sync/internal_api/http_post_provider_factory.h"
#include "sync/internal_api/http_post_provider_interface.h"
@@ -720,6 +721,35 @@ class SyncNotifierMock : public sync_notifier::SyncNotifier {
MOCK_METHOD1(SendNotification, void(syncable::ModelTypeSet));
};
+class TestSyncManager : public SyncManager {
+ public:
+ TestSyncManager()
+ : SyncManager("Test sync manager"),
+ result_(true) {}
+
+ browser_sync::ConfigureParams get_config_params() const { return params_; }
+ void set_config_result(bool result) { result_ = result; }
+
+ protected:
+ // SyncManager implementation.
+ virtual bool DoConfigureSyncer(
+ const browser_sync::ConfigureParams& params) OVERRIDE {
+ params_ = params;
+ if (params.ready_task.is_null()) {
+ ADD_FAILURE();
+ return result_;
+ }
+
+ if (result_)
+ params.ready_task.Run();
+ return result_;
+ }
+
+ private:
+ browser_sync::ConfigureParams params_;
+ bool result_;
+};
+
} // namespace
class SyncManagerTest : public testing::Test,
@@ -738,7 +768,6 @@ class SyncManagerTest : public testing::Test,
SyncManagerTest()
: sync_notifier_mock_(NULL),
- sync_manager_("Test sync manager"),
sync_notifier_observer_(NULL),
update_enabled_types_call_count_(0) {}
@@ -939,7 +968,7 @@ class SyncManagerTest : public testing::Test,
protected:
FakeEncryptor encryptor_;
TestUnrecoverableErrorHandler handler_;
- SyncManager sync_manager_;
+ TestSyncManager sync_manager_;
WeakHandle<JsBackend> js_backend_;
StrictMock<SyncManagerObserverMock> observer_;
sync_notifier::SyncNotifierObserver* sync_notifier_observer_;
@@ -2507,4 +2536,60 @@ TEST_F(SyncManagerTest, SetPreviouslyEncryptedSpecifics) {
}
}
+namespace {
+void SetBool(bool* called) {
rlarocque 2012/06/09 01:44:35 Same comment as in the other file: I'd prefer to s
Nicolas Zea 2012/06/11 23:05:20 See other response.
+ *called = true;
+}
+} // namespace
+
+// Test that the configuration params are properly sent to DoConfigureSyncer.
+TEST_F(SyncManagerTest, BasicConfiguration) {
+ ConfigureReason reason = CONFIGURE_REASON_RECONFIGURATION;
+ syncable::ModelTypeSet types_to_config(syncable::BOOKMARKS,
+ syncable::PREFERENCES);
+ browser_sync::ModelSafeRoutingInfo new_routing_info;
+ GetModelSafeRoutingInfo(&new_routing_info);
+ sync_manager_.set_config_result(true);
+
+ bool ready_task = false;
+ bool retry_task = false;
+ sync_manager_.ConfigureSyncer(reason,
+ types_to_config,
+ new_routing_info,
+ base::Bind(&SetBool, &ready_task),
+ base::Bind(&SetBool, &retry_task));
+ EXPECT_TRUE(ready_task);
+ EXPECT_FALSE(retry_task);
+ browser_sync::ConfigureParams params = sync_manager_.get_config_params();
+ EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::RECONFIGURATION,
+ params.source);
+ EXPECT_TRUE(types_to_config.Equals(params.types_to_config));
+ EXPECT_EQ(new_routing_info, params.routing_info);
+}
+
+// Test that the retry callback is invoked on configuration failure.
+TEST_F(SyncManagerTest, ConfigurationRetry) {
+ ConfigureReason reason = CONFIGURE_REASON_RECONFIGURATION;
+ syncable::ModelTypeSet types_to_config(syncable::BOOKMARKS,
+ syncable::PREFERENCES);
+ browser_sync::ModelSafeRoutingInfo new_routing_info;
+ GetModelSafeRoutingInfo(&new_routing_info);
+ sync_manager_.set_config_result(false);
+
+ bool ready_task = false;
+ bool retry_task = false;
+ sync_manager_.ConfigureSyncer(reason,
+ types_to_config,
+ new_routing_info,
+ base::Bind(&SetBool, &ready_task),
+ base::Bind(&SetBool, &retry_task));
+ EXPECT_FALSE(ready_task);
+ EXPECT_TRUE(retry_task);
+ browser_sync::ConfigureParams params = sync_manager_.get_config_params();
+ EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::RECONFIGURATION,
+ params.source);
+ EXPECT_TRUE(types_to_config.Equals(params.types_to_config));
+ EXPECT_EQ(new_routing_info, params.routing_info);
+}
+
} // namespace browser_sync
« sync/internal_api/sync_manager.cc ('K') | « sync/internal_api/sync_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698