| Index: chrome/browser/prefs/chrome_pref_service_factory.cc | 
| diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc | 
| index a93f046d7804d0824f0fe006963ff66fb67d4673..0be21f685307121e530cf49ec7d6d8b2817a9887 100644 | 
| --- a/chrome/browser/prefs/chrome_pref_service_factory.cc | 
| +++ b/chrome/browser/prefs/chrome_pref_service_factory.cc | 
| @@ -353,7 +353,8 @@ GetTrackingConfiguration() { | 
| } | 
|  | 
| // Shows notifications which correspond to PersistentPrefStore's reading errors. | 
| -void HandleReadError(PersistentPrefStore::PrefReadError error) { | 
| +void HandleReadError(const base::FilePath& pref_filename, | 
| +                     PersistentPrefStore::PrefReadError error) { | 
| // Sample the histogram also for the successful case in order to get a | 
| // baseline on the success rate in addition to the error distribution. | 
| UMA_HISTOGRAM_ENUMERATION("PrefService.ReadError", error, | 
| @@ -372,10 +373,13 @@ void HandleReadError(PersistentPrefStore::PrefReadError error) { | 
| } | 
|  | 
| if (message_id) { | 
| -      BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 
| -                              base::Bind(&ShowProfileErrorDialog, | 
| -                                         PROFILE_ERROR_PREFERENCES, | 
| -                                         message_id)); | 
| +      std::string diagnostics("Corrupted file: "); | 
| +      diagnostics += pref_filename.DirName().BaseName().AsUTF8Unsafe() + "/" + | 
| +                     pref_filename.BaseName().AsUTF8Unsafe() + "\n"; | 
| +      BrowserThread::PostTask( | 
| +          BrowserThread::UI, FROM_HERE, | 
| +          base::Bind(&ShowProfileErrorDialog, PROFILE_ERROR_PREFERENCES, | 
| +                     message_id, diagnostics)); | 
| } | 
| #else | 
| // On ChromeOS error screen with message about broken local state | 
| @@ -413,13 +417,13 @@ std::unique_ptr<ProfilePrefStoreManager> CreateProfilePrefStoreManager( | 
| seed, device_id, g_browser_process->local_state())); | 
| } | 
|  | 
| -void PrepareFactory( | 
| -    syncable_prefs::PrefServiceSyncableFactory* factory, | 
| -    policy::PolicyService* policy_service, | 
| -    SupervisedUserSettingsService* supervised_user_settings, | 
| -    scoped_refptr<PersistentPrefStore> user_pref_store, | 
| -    const scoped_refptr<PrefStore>& extension_prefs, | 
| -    bool async) { | 
| +void PrepareFactory(syncable_prefs::PrefServiceSyncableFactory* factory, | 
| +                    const base::FilePath& pref_filename, | 
| +                    policy::PolicyService* policy_service, | 
| +                    SupervisedUserSettingsService* supervised_user_settings, | 
| +                    scoped_refptr<PersistentPrefStore> user_pref_store, | 
| +                    const scoped_refptr<PrefStore>& extension_prefs, | 
| +                    bool async) { | 
| policy::BrowserPolicyConnector* policy_connector = | 
| g_browser_process->browser_policy_connector(); | 
| factory->SetManagedPolicies(policy_service, policy_connector); | 
| @@ -438,7 +442,7 @@ void PrepareFactory( | 
| factory->set_extension_prefs(extension_prefs); | 
| factory->set_command_line_prefs(make_scoped_refptr( | 
| new CommandLinePrefStore(base::CommandLine::ForCurrentProcess()))); | 
| -  factory->set_read_error_callback(base::Bind(&HandleReadError)); | 
| +  factory->set_read_error_callback(base::Bind(&HandleReadError, pref_filename)); | 
| factory->set_user_prefs(user_pref_store); | 
| factory->SetPrefModelAssociatorClient( | 
| ChromePrefModelAssociatorClient::GetInstance()); | 
| @@ -469,7 +473,7 @@ std::unique_ptr<PrefService> CreateLocalState( | 
| const scoped_refptr<PrefRegistry>& pref_registry, | 
| bool async) { | 
| syncable_prefs::PrefServiceSyncableFactory factory; | 
| -  PrepareFactory(&factory, policy_service, | 
| +  PrepareFactory(&factory, pref_filename, policy_service, | 
| NULL,  // supervised_user_settings | 
| new JsonPrefStore(pref_filename, pref_io_task_runner, | 
| std::unique_ptr<PrefFilter>()), | 
| @@ -506,11 +510,8 @@ std::unique_ptr<syncable_prefs::PrefServiceSyncable> CreateProfilePrefs( | 
| ->CreateProfilePrefStore(pref_io_task_runner, | 
| start_sync_flare_for_prefs, | 
| validation_delegate)); | 
| -  PrepareFactory(&factory, | 
| -                 policy_service, | 
| -                 supervised_user_settings, | 
| -                 user_pref_store, | 
| -                 extension_prefs, | 
| +  PrepareFactory(&factory, profile_path, policy_service, | 
| +                 supervised_user_settings, user_pref_store, extension_prefs, | 
| async); | 
| std::unique_ptr<syncable_prefs::PrefServiceSyncable> pref_service = | 
| factory.CreateSyncable(pref_registry.get()); | 
|  |