Index: chrome/browser/chrome_elf_init_win.cc |
diff --git a/chrome/browser/chrome_elf_init_win.cc b/chrome/browser/chrome_elf_init_win.cc |
index 9be2d0a55674c021fb4be45d7ab5a8748241ac6f..ce9d3e7235b54f985fadfe9b2a844c762832f895 100644 |
--- a/chrome/browser/chrome_elf_init_win.cc |
+++ b/chrome/browser/chrome_elf_init_win.cc |
@@ -109,6 +109,10 @@ void InitializeChromeElf() { |
base::TimeDelta::FromSeconds(kBlacklistReportingDelaySec)); |
} |
+// Note that running multiple chrome instances with distinct user data |
+// directories could lead to deletion (and/or replacement) of the finch |
+// blacklist registry data in one instance before the second has a chance to |
+// read those values. |
void AddFinchBlacklistToRegistry() { |
base::win::RegKey finch_blacklist_registry_key( |
HKEY_CURRENT_USER, blacklist::kRegistryFinchListPath, KEY_SET_VALUE); |
@@ -117,6 +121,11 @@ void AddFinchBlacklistToRegistry() { |
if (!finch_blacklist_registry_key.Valid()) |
return; |
+ // Delete and recreate the key to clear the registry. |
+ finch_blacklist_registry_key.DeleteKey(L""); |
+ finch_blacklist_registry_key.Create( |
+ HKEY_CURRENT_USER, blacklist::kRegistryFinchListPath, KEY_SET_VALUE); |
+ |
std::map<std::string, std::string> params; |
chrome_variations::GetVariationParams(kBrowserBlacklistTrialName, ¶ms); |