diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-23 21:59:00 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-23 21:59:00 +0000 |
commit | 0677c6951f4458c6b56484e9a0fc074466761dc8 (patch) | |
tree | 89e9df8281fb6a40d70f61a2abffd558bfa36ea9 /chrome/browser/prefs | |
parent | ef31c68d5fa6fdd04ff9a794a8064e566038a160 (diff) | |
download | chromium_src-0677c6951f4458c6b56484e9a0fc074466761dc8.zip chromium_src-0677c6951f4458c6b56484e9a0fc074466761dc8.tar.gz chromium_src-0677c6951f4458c6b56484e9a0fc074466761dc8.tar.bz2 |
[Sync] Have SyncableService's take ownership of their SyncChangeProcessor.
The UIDataTypeController now uses a SharedChangeProcessor, and passes a ref
to the SyncableService's. Every SyncableService now owns its own change
processor. Additionally, we use the ScopedPtr::Pass semantics for passing
around SyncChangeProcessors to ensure SyncableServices properly take
ownership.
This, along with all the test updates it requires (most of the patch) fixes
several leaks introduced in the previous patch to remove the Syncable Service
Adapter. SyncableServiceMock is removed as it didn't play nice with
scoped_ptr parameters (and was hardly used).
BUG=117098,117538
TEST=unit_tests with valgrind/drmemory/heapcheck
TBR=georgy@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9749012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128578 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/prefs')
-rw-r--r-- | chrome/browser/prefs/pref_model_associator.cc | 15 | ||||
-rw-r--r-- | chrome/browser/prefs/pref_model_associator.h | 6 |
2 files changed, 9 insertions, 12 deletions
diff --git a/chrome/browser/prefs/pref_model_associator.cc b/chrome/browser/prefs/pref_model_associator.cc index 21c53a2..b70302a 100644 --- a/chrome/browser/prefs/pref_model_associator.cc +++ b/chrome/browser/prefs/pref_model_associator.cc @@ -22,14 +22,12 @@ using syncable::PREFERENCES; PrefModelAssociator::PrefModelAssociator() : models_associated_(false), processing_syncer_changes_(false), - pref_service_(NULL), - sync_processor_(NULL) { + pref_service_(NULL) { DCHECK(CalledOnValidThread()); } PrefModelAssociator::~PrefModelAssociator() { DCHECK(CalledOnValidThread()); - sync_processor_ = NULL; pref_service_ = NULL; } @@ -109,12 +107,13 @@ void PrefModelAssociator::InitPrefAndAssociate( SyncError PrefModelAssociator::MergeDataAndStartSyncing( syncable::ModelType type, const SyncDataList& initial_sync_data, - SyncChangeProcessor* sync_processor) { + scoped_ptr<SyncChangeProcessor> sync_processor) { DCHECK_EQ(type, PREFERENCES); DCHECK(CalledOnValidThread()); DCHECK(pref_service_); - DCHECK(!sync_processor_); - sync_processor_ = sync_processor; + DCHECK(!sync_processor_.get()); + DCHECK(sync_processor.get()); + sync_processor_ = sync_processor.Pass(); SyncChangeList new_changes; std::set<std::string> remaining_preferences = registered_preferences_; @@ -161,7 +160,7 @@ SyncError PrefModelAssociator::MergeDataAndStartSyncing( void PrefModelAssociator::StopSyncing(syncable::ModelType type) { DCHECK_EQ(type, PREFERENCES); models_associated_ = false; - sync_processor_ = NULL; + sync_processor_.reset(); } Value* PrefModelAssociator::MergePreference( @@ -425,8 +424,6 @@ void PrefModelAssociator::ProcessPrefChange(const std::string& name) { SyncError error = sync_processor_->ProcessSyncChanges(FROM_HERE, changes); - if (error.IsSet()) - StopSyncing(PREFERENCES); } void PrefModelAssociator::SetPrefService(PrefService* pref_service) { diff --git a/chrome/browser/prefs/pref_model_associator.h b/chrome/browser/prefs/pref_model_associator.h index 3d2fd1f..de4b645 100644 --- a/chrome/browser/prefs/pref_model_associator.h +++ b/chrome/browser/prefs/pref_model_associator.h @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -43,7 +43,7 @@ class PrefModelAssociator virtual SyncError MergeDataAndStartSyncing( syncable::ModelType type, const SyncDataList& initial_sync_data, - SyncChangeProcessor* sync_processor) OVERRIDE; + scoped_ptr<SyncChangeProcessor> sync_processor) OVERRIDE; virtual void StopSyncing(syncable::ModelType type) OVERRIDE; // Returns the list of preference names that are registered as syncable, and @@ -141,7 +141,7 @@ class PrefModelAssociator PrefService* pref_service_; // Sync's SyncChange handler. We push all our changes through this. - SyncChangeProcessor* sync_processor_; + scoped_ptr<SyncChangeProcessor> sync_processor_; DISALLOW_COPY_AND_ASSIGN(PrefModelAssociator); }; |