| Index: chrome/browser/prefs/pref_service.cc | 
| diff --git a/chrome/browser/prefs/pref_service.cc b/chrome/browser/prefs/pref_service.cc | 
| index 043be894b98e17abfb8a6f0b0d3478e1eea0309f..cca8041c850284e277887d6be536316148ee68bd 100644 | 
| --- a/chrome/browser/prefs/pref_service.cc | 
| +++ b/chrome/browser/prefs/pref_service.cc | 
| @@ -27,6 +27,7 @@ | 
| #include "chrome/browser/prefs/command_line_pref_store.h" | 
| #include "chrome/browser/prefs/pref_model_associator.h" | 
| #include "chrome/browser/prefs/pref_notifier_impl.h" | 
| +#include "chrome/browser/prefs/pref_service_observer.h" | 
| #include "chrome/browser/prefs/pref_value_store.h" | 
| #include "chrome/browser/profiles/profile.h" | 
| #include "chrome/browser/ui/prefs/prefs_tab_helper.h" | 
| @@ -256,6 +257,23 @@ void PrefService::CommitPendingWrite() { | 
| user_pref_store_->CommitPendingWrite(); | 
| } | 
|  | 
| +void PrefService::AddObserver(PrefServiceObserver* observer) { | 
| +  observer_list_.AddObserver(observer); | 
| +} | 
| + | 
| +void PrefService::RemoveObserver(PrefServiceObserver* observer) { | 
| +  observer_list_.RemoveObserver(observer); | 
| +} | 
| + | 
| +bool PrefService::HasSynced() { | 
| +  return pref_sync_associator_.get() && | 
| +      pref_sync_associator_->models_associated(); | 
| +} | 
| + | 
| +void PrefService::HasSyncedChanged() { | 
| +  FOR_EACH_OBSERVER(PrefServiceObserver, observer_list_, OnHasSyncedChanged()); | 
| +} | 
| + | 
| namespace { | 
|  | 
| // If there's no g_browser_process or no local state, return true (for testing). | 
|  |