Chromium Code Reviews| 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..887e410dd549baba808184c77c69d4355571c919 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 (after it failed too many times). |
| + BLACKLIST_SETUP_DISABLED, |
| + |
| // Always keep this at the end. |
| BLACKLIST_SETUP_EVENT_MAX, |
| }; |
| @@ -117,26 +120,22 @@ 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) { |
| + // Can set the state to disabled without checking that the maximum number of |
|
csharp
2014/06/11 13:34:43
Nit: can -> We can
krstnmnlsn
2014/06/11 16:35:27
Done.
|
| + // attempts was exceeded because the failed state indicates this was already |
|
csharp
2014/06/11 13:34:43
nit: because... -> because blacklist.cc would have
krstnmnlsn
2014/06/11 16:35:27
Done.
|
| + // done (in blacklist.cc). |
| + RecordBlacklistSetupEvent(BLACKLIST_SETUP_FAILED); |
| + 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 +144,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 +154,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) |