summaryrefslogtreecommitdiffstats
path: root/chrome/browser/prefs
diff options
context:
space:
mode:
authorzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 21:59:00 +0000
committerzea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-23 21:59:00 +0000
commit0677c6951f4458c6b56484e9a0fc074466761dc8 (patch)
tree89e9df8281fb6a40d70f61a2abffd558bfa36ea9 /chrome/browser/prefs
parentef31c68d5fa6fdd04ff9a794a8064e566038a160 (diff)
downloadchromium_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.cc15
-rw-r--r--chrome/browser/prefs/pref_model_associator.h6
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);
};