Chromium Code Reviews| 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 0c7a9f50d922008b6fa0633d47d020d94b68c265..504c650cad80c3d25a883a1895a6f4162bf850f6 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,12 @@ void HandleReadError(PersistentPrefStore::PrefReadError error) { |
| } |
| if (message_id) { |
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| - base::Bind(&ShowProfileErrorDialog, |
| - PROFILE_ERROR_PREFERENCES, |
| - message_id)); |
| + BrowserThread::PostTask( |
| + BrowserThread::UI, FROM_HERE, |
| + base::Bind(&ShowProfileErrorDialog, PROFILE_ERROR_PREFERENCES, |
| + message_id, |
| + sql::DatabaseDiagnosticMap( |
| + {{"Corrupted file", pref_filename.AsUTF8Unsafe()}}))); |
|
michaeln
2016/07/09 03:00:38
is this a full path? probably don't want to includ
afakhry
2016/07/11 16:47:45
Done.
|
| } |
| #else |
| // On ChromeOS error screen with message about broken local state |
| @@ -413,13 +416,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); |
| @@ -440,7 +443,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()); |
| @@ -471,7 +474,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>()), |
| @@ -508,11 +511,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()); |