| 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 9d95bbda2e0134ef8ba12e01a27b90ec9271d701..4b285e058ca2cf58a9c401872d136513cb18ea82 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(const base::FilePath& pref_filename,
|
| + 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) {
|
| 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(pref_filename, &factory, 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(profile_path, &factory, policy_service,
|
| + supervised_user_settings, user_pref_store, extension_prefs,
|
| async);
|
| std::unique_ptr<syncable_prefs::PrefServiceSyncable> pref_service =
|
| factory.CreateSyncable(pref_registry.get());
|
|
|