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

Unified Diff: chrome/browser/sync/glue/sync_backend_host.cc

Issue 10520010: Not for review: Support sync init with missing or corrupt store (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Documentation 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
Index: chrome/browser/sync/glue/sync_backend_host.cc
diff --git a/chrome/browser/sync/glue/sync_backend_host.cc b/chrome/browser/sync/glue/sync_backend_host.cc
index 07f331446a341db47ac6654995e8e020d8f467f0..dac917a76efc540913063290bf4671a4eaf72be6 100644
--- a/chrome/browser/sync/glue/sync_backend_host.cc
+++ b/chrome/browser/sync/glue/sync_backend_host.cc
@@ -86,7 +86,8 @@ class SyncBackendHost::Core
const sessions::SyncSessionSnapshot& snapshot) OVERRIDE;
virtual void OnInitializationComplete(
const WeakHandle<JsBackend>& js_backend,
- bool success) OVERRIDE;
+ bool success,
+ syncable::ModelTypeSet restored_types) OVERRIDE;
virtual void OnConnectionStatusChange(
sync_api::ConnectionStatus status) OVERRIDE;
virtual void OnPassphraseRequired(
@@ -339,7 +340,6 @@ void SyncBackendHost::Initialize(
SyncFrontend* frontend,
const WeakHandle<JsEventHandler>& event_handler,
const GURL& sync_service_url,
- syncable::ModelTypeSet initial_types,
const SyncCredentials& credentials,
bool delete_sync_data_folder,
UnrecoverableErrorHandler* unrecoverable_error_handler,
@@ -350,14 +350,7 @@ void SyncBackendHost::Initialize(
frontend_ = frontend;
DCHECK(frontend);
- syncable::ModelTypeSet initial_types_with_nigori(initial_types);
- CHECK(sync_prefs_.get());
- if (sync_prefs_->HasSyncSetupCompleted()) {
- initial_types_with_nigori.Put(syncable::NIGORI);
- }
-
- registrar_.reset(new SyncBackendRegistrar(initial_types_with_nigori,
- name_,
+ registrar_.reset(new SyncBackendRegistrar(name_,
profile_,
sync_thread_.message_loop()));
ModelSafeRoutingInfo routing_info;
@@ -769,7 +762,6 @@ void SyncBackendHost::FinishConfigureDataTypesOnFrontendLoop() {
SDVLOG(1) << "Syncer in config mode. SBH executing "
<< "FinishConfigureDataTypesOnFrontendLoop";
-
ModelSafeRoutingInfo routing_info;
registrar_->GetModelSafeRoutingInfo(&routing_info);
const syncable::ModelTypeSet enabled_types =
@@ -779,21 +771,6 @@ void SyncBackendHost::FinishConfigureDataTypesOnFrontendLoop() {
// to happen on the UI thread.
chrome_sync_notification_bridge_.UpdateEnabledTypes(enabled_types);
- if (pending_config_mode_state_->added_types.Empty() &&
- !core_->sync_manager()->InitialSyncEndedTypes().HasAll(enabled_types)) {
-
- // TODO(tim): Log / UMA / count this somehow?
- // Add only the types with empty progress markers. Note: it is possible
- // that some types have their initial_sync_ended be false but with non
- // empty progress marker. Which is ok as the rest of the changes would
- // be downloaded on a regular nudge and initial_sync_ended should be set
- // to true. However this is a very corner case. So it is not explicitly
- // handled.
- pending_config_mode_state_->added_types =
- sync_api::GetTypesWithEmptyProgressMarkerToken(enabled_types,
- GetUserShare());
- }
-
// If we've added types, we always want to request a nudge/config (even if
// the initial sync is ended), in case we could not decrypt the data.
if (pending_config_mode_state_->added_types.Empty()) {
@@ -836,10 +813,6 @@ void SyncBackendHost::FinishConfigureDataTypesOnFrontendLoop() {
enabled_types));
}
-bool SyncBackendHost::IsDownloadingNigoriForTest() const {
- return initialization_state_ == DOWNLOADING_NIGORI;
-}
-
SyncBackendHost::DoInitializeOptions::DoInitializeOptions(
MessageLoop* sync_loop,
SyncBackendRegistrar* registrar,
@@ -916,12 +889,13 @@ void SyncBackendHost::Core::OnSyncCycleCompleted(
void SyncBackendHost::Core::OnInitializationComplete(
const WeakHandle<JsBackend>& js_backend,
- bool success) {
+ bool success,
+ syncable::ModelTypeSet restored_types) {
DCHECK_EQ(MessageLoop::current(), sync_loop_);
host_.Call(
FROM_HERE,
- &SyncBackendHost::HandleInitializationCompletedOnFrontendLoop,
- js_backend, success);
+ &SyncBackendHost::HandleSyncManagerInitializationOnFrontendLoop,
+ js_backend, success, restored_types);
if (success) {
// Initialization is complete, so we can schedule recurring SaveChanges.
@@ -1102,7 +1076,6 @@ void SyncBackendHost::Core::DoInitialize(const DoInitializeOptions& options) {
options.service_url.SchemeIsSecure(),
BrowserThread::GetBlockingPool(),
options.make_http_bridge_factory_fn.Run(),
- options.routing_info,
options.workers,
options.extensions_activity_monitor,
options.registrar /* as SyncManager::ChangeDelegate */,
@@ -1289,14 +1262,6 @@ void SyncBackendHost::HandleInitializationCompletedOnFrontendLoop(
return;
}
- // If setup has completed, start off in DOWNLOADING_NIGORI so that
- // we start off by refreshing nigori.
- CHECK(sync_prefs_.get());
- if (sync_prefs_->HasSyncSetupCompleted() &&
- initialization_state_ < DOWNLOADING_NIGORI) {
- initialization_state_ = DOWNLOADING_NIGORI;
- }
-
// Run initialization state machine.
switch (initialization_state_) {
case NOT_INITIALIZED:
@@ -1450,6 +1415,13 @@ void SyncBackendHost::HandleNigoriConfigurationCompletedOnFrontendLoop(
js_backend, failed_configuration_types.Empty());
}
+void SyncBackendHost::HandleSyncManagerInitializationOnFrontendLoop(
+ const WeakHandle<JsBackend>& js_backend, bool success,
+ syncable::ModelTypeSet restored_types) {
+ registrar_->SetInitialTypes(restored_types);
+ HandleInitializationCompletedOnFrontendLoop(js_backend, success);
+}
+
namespace {
// Needed because MessageLoop::PostTask is overloaded.

Powered by Google App Engine
This is Rietveld 408576698