X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fchrome_elf_init_win.cc;h=ce3ad19f20cb57f6189b6e23916cdff77ac5edf1;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=9be2d0a55674c021fb4be45d7ab5a8748241ac6f;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/chrome_elf_init_win.cc b/src/chrome/browser/chrome_elf_init_win.cc index 9be2d0a..ce3ad19 100644 --- a/src/chrome/browser/chrome_elf_init_win.cc +++ b/src/chrome/browser/chrome_elf_init_win.cc @@ -3,12 +3,16 @@ // found in the LICENSE file. #include "base/bind.h" +#include "base/files/file_path.h" #include "base/metrics/field_trial.h" #include "base/metrics/histogram.h" #include "base/metrics/sparse_histogram.h" +#include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "base/win/registry.h" #include "chrome/browser/chrome_elf_init_win.h" +#include "chrome/browser/install_verification/win/module_info.h" +#include "chrome/browser/install_verification/win/module_verification_common.h" #include "chrome_elf/blacklist/blacklist.h" #include "chrome_elf/chrome_elf_constants.h" #include "chrome_elf/dll_hash/dll_hash.h" @@ -109,6 +113,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,8 +125,13 @@ 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 params; - chrome_variations::GetVariationParams(kBrowserBlacklistTrialName, ¶ms); + variations::GetVariationParams(kBrowserBlacklistTrialName, ¶ms); for (std::map::iterator it = params.begin(); it != params.end(); @@ -195,3 +208,22 @@ void BrowserBlacklistBeaconSetup() { RecordBlacklistSetupEvent(BLACKLIST_SETUP_ENABLED); } } + +bool GetLoadedBlacklistedModules(std::vector* module_names) { + DCHECK(module_names); + + std::set module_info_set; + if (!GetLoadedModules(&module_info_set)) + return false; + + std::set::const_iterator module_iter(module_info_set.begin()); + for (; module_iter != module_info_set.end(); ++module_iter) { + base::string16 module_file_name(base::StringToLowerASCII( + base::FilePath(module_iter->name).BaseName().value())); + if (blacklist::GetBlacklistIndex(module_file_name.c_str()) != -1) { + module_names->push_back(module_iter->name); + } + } + + return true; +}