Index: chrome/browser/extensions/pending_extension_manager.cc |
diff --git a/chrome/browser/extensions/pending_extension_manager.cc b/chrome/browser/extensions/pending_extension_manager.cc |
index ee7759b10229fd1c1c3b6b28818bcef4deae38ab..76d4df73e097d5f4f5109580d20dfa298761f221 100644 |
--- a/chrome/browser/extensions/pending_extension_manager.cc |
+++ b/chrome/browser/extensions/pending_extension_manager.cc |
@@ -7,6 +7,8 @@ |
#include <algorithm> |
#include "base/logging.h" |
+#include "base/metrics/histogram.h" |
+#include "base/stl_util.h" |
#include "base/version.h" |
#include "chrome/common/extensions/extension_constants.h" |
#include "content/public/browser/browser_thread.h" |
@@ -53,6 +55,13 @@ const PendingExtensionInfo* PendingExtensionManager::GetById( |
} |
bool PendingExtensionManager::Remove(const std::string& id) { |
+ if (base::ContainsKey(expected_policy_reinstalls_, id)) { |
lazyboy
2016/09/02 19:21:53
Does ::Remove() always mean that the issue was "re
asargent_no_longer_on_chrome
2016/09/09 03:30:44
Yeah, I think in that case it will be resolved, be
|
+ base::TimeDelta latency = |
+ base::TimeTicks::Now() - expected_policy_reinstalls_[id]; |
+ UMA_HISTOGRAM_LONG_TIMES("Extensions.CorruptPolicyExtensionResolved", |
+ latency); |
+ expected_policy_reinstalls_.erase(id); |
+ } |
PendingExtensionList::iterator iter; |
for (iter = pending_extension_list_.begin(); |
iter != pending_extension_list_.end(); |
@@ -86,6 +95,17 @@ bool PendingExtensionManager::HasPendingExtensionFromSync() const { |
return false; |
} |
+void PendingExtensionManager::ExpectPolicyReinstall(const std::string& id) { |
+ expected_policy_reinstalls_[id] = base::TimeTicks::Now(); |
+ UMA_HISTOGRAM_BOOLEAN("Extensions.CorruptPolicyExtensionDetected", true); |
+} |
+ |
+bool PendingExtensionManager::IsPolicyReinstallExpected( |
+ const std::string& id) const { |
+ return expected_policy_reinstalls_.find(id) != |
lazyboy
2016/09/02 19:21:53
nit: return base::ContainsKey(...) to be consisten
asargent_no_longer_on_chrome
2016/09/09 03:30:44
Done.
|
+ expected_policy_reinstalls_.end(); |
+} |
+ |
bool PendingExtensionManager::AddFromSync( |
const std::string& id, |
const GURL& update_url, |