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 042f3d1a4063383134df0cf06f5f238598af6837..90e1dcac3d81fd20953d4e4f048027f42aed45a9 100644 |
--- a/chrome/browser/chrome_elf_init_win.cc |
+++ b/chrome/browser/chrome_elf_init_win.cc |
@@ -39,12 +39,15 @@ enum BlacklistSetupEventType { |
// The blacklist setup code failed to execute. |
BLACKLIST_SETUP_FAILED, |
- // The blacklist thunk setup code failed to execute. |
+ // Depreciated. The blacklist thunk setup code failed to execute. |
BLACKLIST_THUNK_SETUP_FAILED, |
- // The blacklist interception code failed to execute. |
+ // Depreciated. The blacklist interception code failed to execute. |
BLACKLIST_INTERCEPTION_FAILED, |
+ // The blacklist was disabled for this run. |
csharp
2014/06/10 14:07:02
.. because it has failed too many time (explain wh
krstnmnlsn
2014/06/10 22:03:26
Done.
|
+ BLACKLIST_SETUP_DISABLED, |
+ |
// Always keep this at the end. |
BLACKLIST_SETUP_EVENT_MAX, |
}; |
@@ -117,26 +120,19 @@ void BrowserBlacklistBeaconSetup() { |
blacklist_registry_key.ReadValueDW(blacklist::kBeaconState, &blacklist_state); |
if (blacklist_state == blacklist::BLACKLIST_ENABLED) { |
+ // The blacklist was enabled successfully so we record the event (along with |
+ // the number of failed previous attempts). |
RecordBlacklistSetupEvent(BLACKLIST_SETUP_RAN_SUCCESSFULLY); |
- } else { |
- switch (blacklist_state) { |
- case blacklist::BLACKLIST_SETUP_RUNNING: |
- RecordBlacklistSetupEvent(BLACKLIST_SETUP_FAILED); |
- break; |
- case blacklist::BLACKLIST_THUNK_SETUP: |
- RecordBlacklistSetupEvent(BLACKLIST_THUNK_SETUP_FAILED); |
- break; |
- case blacklist::BLACKLIST_INTERCEPTING: |
- RecordBlacklistSetupEvent(BLACKLIST_INTERCEPTION_FAILED); |
- break; |
- } |
- |
- // Since some part of the blacklist failed, mark it as disabled |
- // for this version. |
- if (blacklist_state != blacklist::BLACKLIST_DISABLED) { |
- blacklist_registry_key.WriteValue(blacklist::kBeaconState, |
- blacklist::BLACKLIST_DISABLED); |
- } |
+ DWORD attempt_count = 0; |
+ blacklist_registry_key.ReadValueDW(blacklist::kBeaconAttemptCount, |
+ &attempt_count); |
+ UMA_HISTOGRAM_COUNTS("Blacklist.RetryWorked", attempt_count); |
+ } else if (blacklist_state == blacklist::BLACKLIST_SETUP_FAILED) { |
+ RecordBlacklistSetupEvent(BLACKLIST_SETUP_FAILED); |
csharp
2014/06/10 14:07:02
Probably worth adding a comment here saying he don
krstnmnlsn
2014/06/10 22:03:26
Done.
|
+ blacklist_registry_key.WriteValue(blacklist::kBeaconState, |
+ blacklist::BLACKLIST_DISABLED); |
+ } else if (blacklist_state == blacklist::BLACKLIST_DISABLED) { |
+ RecordBlacklistSetupEvent(BLACKLIST_SETUP_DISABLED); |
} |
// Find the last recorded blacklist version. |
@@ -145,7 +141,8 @@ void BrowserBlacklistBeaconSetup() { |
&blacklist_version); |
if (blacklist_version != TEXT(CHROME_VERSION_STRING)) { |
- // The blacklist hasn't been enabled for this version yet, so enable it. |
+ // The blacklist hasn't been enabled for this version yet, so enable it |
+ // and reset the failure count to zero. |
LONG set_version = blacklist_registry_key.WriteValue( |
blacklist::kBeaconVersion, |
TEXT(CHROME_VERSION_STRING)); |
@@ -154,6 +151,9 @@ void BrowserBlacklistBeaconSetup() { |
blacklist::kBeaconState, |
blacklist::BLACKLIST_ENABLED); |
+ blacklist_registry_key.WriteValue(blacklist::kBeaconAttemptCount, |
+ static_cast<DWORD>(0)); |
+ |
// Only report the blacklist as getting setup when both registry writes |
// succeed, since otherwise the blacklist wasn't properly setup. |
if (set_version == ERROR_SUCCESS && set_state == ERROR_SUCCESS) |