diff options
author | mnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-27 13:06:42 +0000 |
---|---|---|
committer | mnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-27 13:06:42 +0000 |
commit | e67ce755d9c314743abf9a2227a868282b1bd1a9 (patch) | |
tree | 0c1d104716c34a566dabb186b236feb0c2113a60 /chrome | |
parent | 934c6e5446780bf26b8ee9fd171aa69db4b0f253 (diff) | |
download | chromium_src-e67ce755d9c314743abf9a2227a868282b1bd1a9.zip chromium_src-e67ce755d9c314743abf9a2227a868282b1bd1a9.tar.gz chromium_src-e67ce755d9c314743abf9a2227a868282b1bd1a9.tar.bz2 |
Handle sync values of wrong type more graceful.
Clear prefs that the server reports TYPE_NULL values for and log a warning if the type is off otherwise.
BUG=none
TEST=compiles and passes tests
Review URL: http://codereview.chromium.org/6288016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72786 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/sync/glue/preference_model_associator.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/chrome/browser/sync/glue/preference_model_associator.cc b/chrome/browser/sync/glue/preference_model_associator.cc index be0345e..dd9cb96 100644 --- a/chrome/browser/sync/glue/preference_model_associator.cc +++ b/chrome/browser/sync/glue/preference_model_associator.cc @@ -73,8 +73,15 @@ bool PreferenceModelAssociator::InitPrefNodeAndAssociate( // Update the local preference based on what we got from the // sync server. - if (!pref->GetValue()->Equals(new_value.get())) + if (new_value->IsType(Value::TYPE_NULL)) { + pref_service->ClearPref(pref_name.c_str()); + } else if (!new_value->IsType(pref->GetType())) { + LOG(WARNING) << "Synced value for " << preference.name() + << " is of type " << new_value->GetType() + << " which doesn't match pref type " << pref->GetType(); + } else if (!pref->GetValue()->Equals(new_value.get())) { pref_service->Set(pref_name.c_str(), *new_value); + } AfterUpdateOperations(pref_name); |