Index: chrome/browser/extensions/extension_service.cc |
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
index 5e6fd54cdc2d935ce9201ea2b2bf13a016351fb4..5653359beed30071fd2371b677016e8d16053fe3 100644 |
--- a/chrome/browser/extensions/extension_service.cc |
+++ b/chrome/browser/extensions/extension_service.cc |
@@ -2095,7 +2095,8 @@ void ExtensionService::UpdateActiveExtensionsInCrashReporter() { |
void ExtensionService::OnExtensionInstalled( |
const Extension* extension, |
bool from_webstore, |
- const StringOrdinal& page_ordinal) { |
+ const StringOrdinal& page_ordinal, |
+ bool has_requirement_errors) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
// Ensure extension is deleted unless we transfer ownership. |
@@ -2142,6 +2143,20 @@ void ExtensionService::OnExtensionInstalled( |
} |
} |
+ // Unsupported requirements overrides the management policy. |
+ if (has_requirement_errors) { |
+ initial_enable = false; |
+ extension_prefs_->AddDisableReason( |
+ id, Extension::DISABLE_UNSUPPORTED_REQUIREMENT); |
+ // If the extension was disabled because of unsupported requirements but |
+ // now supports all requirements after an update and there are not other |
+ // disable reasons, enable it. |
+ } else if (extension_prefs_->GetDisableReasons(id) == |
+ Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { |
+ initial_enable = true; |
+ extension_prefs_->ClearDisableReasons(id); |
+ } |
+ |
int include_mask = INCLUDE_ENABLED; |
include_mask |= INCLUDE_DISABLED; |
// Do not record the install histograms for upgrades. |