Index: chrome/browser/sync/glue/sync_backend_host_core.cc |
diff --git a/chrome/browser/sync/glue/sync_backend_host_core.cc b/chrome/browser/sync/glue/sync_backend_host_core.cc |
index 32b7da2d08f7dcdbde2e195a76d9039e76c1e4cf..b2d56f2ae30e05c8340bff980f27de79fc1a49ef 100644 |
--- a/chrome/browser/sync/glue/sync_backend_host_core.cc |
+++ b/chrome/browser/sync/glue/sync_backend_host_core.cc |
@@ -109,6 +109,7 @@ SyncBackendHostCore::SyncBackendHostCore( |
registrar_(NULL), |
has_sync_setup_completed_(has_sync_setup_completed), |
forward_protocol_events_(false), |
+ forward_type_info_(false), |
weak_ptr_factory_(this) { |
DCHECK(backend.get()); |
} |
@@ -577,8 +578,8 @@ void SyncBackendHostCore::DoShutdown(bool sync_disabled) { |
void SyncBackendHostCore::DoDestroySyncManager() { |
DCHECK_EQ(base::MessageLoop::current(), sync_loop_); |
if (sync_manager_) { |
- save_changes_timer_.reset(); |
DisableDirectoryTypeDebugInfoForwarding(); |
+ save_changes_timer_.reset(); |
sync_manager_->RemoveObserver(this); |
sync_manager_->ShutdownOnSyncThread(); |
sync_manager_.reset(); |
@@ -669,6 +670,9 @@ void SyncBackendHostCore::DisableProtocolEventForwarding() { |
void SyncBackendHostCore::EnableDirectoryTypeDebugInfoForwarding() { |
DCHECK(sync_manager_); |
+ |
+ forward_type_info_ = true; |
+ |
if (!sync_manager_->HasDirectoryTypeDebugInfoObserver(this)) |
sync_manager_->RegisterDirectoryTypeDebugInfoObserver(this); |
sync_manager_->RequestEmitDebugInfo(); |
@@ -676,6 +680,12 @@ void SyncBackendHostCore::EnableDirectoryTypeDebugInfoForwarding() { |
void SyncBackendHostCore::DisableDirectoryTypeDebugInfoForwarding() { |
DCHECK(sync_manager_); |
+ |
+ if (!forward_type_info_) |
+ return; |
+ |
+ forward_type_info_ = false; |
+ |
if (sync_manager_->HasDirectoryTypeDebugInfoObserver(this)) |
sync_manager_->UnregisterDirectoryTypeDebugInfoObserver(this); |
} |