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

Unified Diff: chrome_elf/blacklist/blacklist.cc

Issue 120963002: Use a Finch Experiment to control the Browser Blacklist (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Responding to comments Created 6 years, 12 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_elf/blacklist/blacklist.cc
diff --git a/chrome_elf/blacklist/blacklist.cc b/chrome_elf/blacklist/blacklist.cc
index f87c41a16a36b681160be17a4a095f413d287865..10a07ce18d421a8d3a402244b95aff5ede97730f 100644
--- a/chrome_elf/blacklist/blacklist.cc
+++ b/chrome_elf/blacklist/blacklist.cc
@@ -22,6 +22,8 @@ const wchar_t* g_troublesome_dlls[kTroublesomeDllsMaxCount] = {};
int g_troublesome_dlls_cur_index = 0;
const wchar_t kRegistryBeaconPath[] = L"SOFTWARE\\Google\\Chrome\\BLBeacon";
+const wchar_t kBeaconVersion[] = L"version";
+const wchar_t kBeaconState[] = L"state";
} // namespace blacklist
@@ -145,27 +147,40 @@ bool IsNonBrowserProcess() {
namespace blacklist {
-bool CreateBeacon() {
- HKEY beacon_key = NULL;
- DWORD disposition = 0;
- LONG result = ::RegCreateKeyEx(HKEY_CURRENT_USER,
+bool LeaveSetupBeacon() {
+ DWORD blacklist_state = 0;
robertshield 2014/01/02 20:42:22 = BLACKLIST_DISABLED;
csharp 2014/01/02 21:57:59 Done.
+ DWORD blacklist_state_size = sizeof(blacklist_state);
+ ::RegGetValue(HKEY_CURRENT_USER,
+ kRegistryBeaconPath,
+ kBeaconState,
+ RRF_RT_REG_DWORD,
+ NULL,
+ &blacklist_state,
+ &blacklist_state_size);
robertshield 2014/01/02 20:42:22 Check the return value of RegGetValue and also fai
csharp 2014/01/02 21:57:59 Done.
+
+ if (blacklist_state != BLACKLIST_ENABLED)
+ return false;
+
+ blacklist_state = BLACKLIST_SETUP_RUNNING;
+ LONG result = ::RegSetKeyValue(HKEY_CURRENT_USER,
kRegistryBeaconPath,
- 0,
- NULL,
- 0,
- KEY_WRITE,
- NULL,
- &beacon_key,
- &disposition);
- bool success = (result == ERROR_SUCCESS &&
- disposition != REG_OPENED_EXISTING_KEY);
- if (result == ERROR_SUCCESS)
- ::RegCloseKey(beacon_key);
- return success;
+ kBeaconState,
+ REG_DWORD,
+ &blacklist_state,
+ sizeof(blacklist_state));
+
+ return (result == ERROR_SUCCESS);
}
-bool ClearBeacon() {
- LONG result = ::RegDeleteKey(HKEY_CURRENT_USER, kRegistryBeaconPath);
+bool ResetBeacon() {
+ DWORD blacklist_state = BLACKLIST_ENABLED;
+ LONG result = ::RegSetKeyValue(HKEY_CURRENT_USER,
+ kRegistryBeaconPath,
+ kBeaconState,
+ REG_DWORD,
+ &blacklist_state,
+ sizeof(blacklist_state));
+
return (result == ERROR_SUCCESS);
}
@@ -217,7 +232,7 @@ bool Initialize(bool force) {
return false;
// Check to see if a beacon is present, abort if so.
- if (!force && !CreateBeacon())
+ if (!force && !LeaveSetupBeacon())
return false;
// Don't try blacklisting on unsupported OS versions.

Powered by Google App Engine
This is Rietveld 408576698