| Index: chrome/browser/extensions/chrome_content_verifier_delegate.cc
|
| diff --git a/chrome/browser/extensions/chrome_content_verifier_delegate.cc b/chrome/browser/extensions/chrome_content_verifier_delegate.cc
|
| index 0ef3815fef229ba9e69b9a38b14b02050fcba191..8088dc0bc13d63326263493c3082dad876837d18 100644
|
| --- a/chrome/browser/extensions/chrome_content_verifier_delegate.cc
|
| +++ b/chrome/browser/extensions/chrome_content_verifier_delegate.cc
|
| @@ -6,7 +6,6 @@
|
|
|
| #include <algorithm>
|
| #include <set>
|
| -#include <string>
|
| #include <vector>
|
|
|
| #include "base/base_switches.h"
|
| @@ -102,8 +101,7 @@ ContentVerifierDelegate::Mode ChromeContentVerifierDelegate::GetDefaultMode() {
|
|
|
| ChromeContentVerifierDelegate::ChromeContentVerifierDelegate(
|
| content::BrowserContext* context)
|
| - : context_(context), default_mode_(GetDefaultMode()) {
|
| -}
|
| + : context_(context), default_mode_(GetDefaultMode()) {}
|
|
|
| ChromeContentVerifierDelegate::~ChromeContentVerifierDelegate() {
|
| }
|
| @@ -171,10 +169,19 @@ void ChromeContentVerifierDelegate::VerifyFailed(
|
| if (!extension)
|
| return;
|
| ExtensionSystem* system = ExtensionSystem::Get(context_);
|
| + ExtensionService* service = system->extension_service();
|
| Mode mode = ShouldBeVerified(*extension);
|
| if (mode >= ContentVerifierDelegate::ENFORCE) {
|
| if (!system->management_policy()->UserMayModifySettings(extension, NULL)) {
|
| - LogFailureForPolicyForceInstall(extension_id);
|
| + PendingExtensionManager* pending_manager =
|
| + service->pending_extension_manager();
|
| + if (pending_manager->IsPolicyReinstallExpected(extension_id))
|
| + return;
|
| + LOG(WARNING) << "Corruption detected in policy extension " << extension_id
|
| + << " installed at: " << extension->path().value();
|
| + pending_manager->ExpectPolicyReinstall(extension_id);
|
| + service->DisableExtension(extension_id, Extension::DISABLE_CORRUPTED);
|
| + service->CheckForExternalUpdates();
|
| return;
|
| }
|
| DLOG(WARNING) << "Disabling extension " << extension_id << " ('"
|
| @@ -182,8 +189,7 @@ void ChromeContentVerifierDelegate::VerifyFailed(
|
| << "') due to content verification failure. In tests you "
|
| << "might want to use a ScopedIgnoreContentVerifierForTest "
|
| << "instance to prevent this.";
|
| - system->extension_service()->DisableExtension(extension_id,
|
| - Extension::DISABLE_CORRUPTED);
|
| + service->DisableExtension(extension_id, Extension::DISABLE_CORRUPTED);
|
| ExtensionPrefs::Get(context_)->IncrementCorruptedDisableCount();
|
| UMA_HISTOGRAM_BOOLEAN("Extensions.CorruptExtensionBecameDisabled", true);
|
| UMA_HISTOGRAM_ENUMERATION("Extensions.CorruptExtensionDisabledReason",
|
| @@ -194,13 +200,5 @@ void ChromeContentVerifierDelegate::VerifyFailed(
|
| }
|
| }
|
|
|
| -void ChromeContentVerifierDelegate::LogFailureForPolicyForceInstall(
|
| - const std::string& extension_id) {
|
| - if (!base::ContainsKey(corrupt_policy_extensions_, extension_id)) {
|
| - corrupt_policy_extensions_.insert(extension_id);
|
| - UMA_HISTOGRAM_BOOLEAN("Extensions.CorruptPolicyExtensionWouldBeDisabled",
|
| - true);
|
| - }
|
| -}
|
|
|
| } // namespace extensions
|
|
|