Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1845)

Unified Diff: chrome/browser/prefs/chrome_pref_service_factory.cc

Issue 2107493002: Offer user to send feedback from profile error dialog (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Avoid a ref loop. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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() + "/" +
Lei Zhang 2016/07/16 00:35:21 Do you care that on Windows, this will be foo/bar,
afakhry 2016/07/18 17:43:51 No, it doesn't matter. All we need to know is the
+ 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,
Lei Zhang 2016/07/16 00:35:21 Why is this the first param? Shouldn't it be |fact
afakhry 2016/07/18 17:43:51 Done.
+ 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());

Powered by Google App Engine
This is Rietveld 408576698