Index: chrome/browser/extensions/install_verifier.cc |
diff --git a/chrome/browser/extensions/install_verifier.cc b/chrome/browser/extensions/install_verifier.cc |
index 34d8735e088a91a545a7d6edb95be2a6954261ba..c0b862befb4d6bc2ed2056ac2f60f89726d6cd62 100644 |
--- a/chrome/browser/extensions/install_verifier.cc |
+++ b/chrome/browser/extensions/install_verifier.cc |
@@ -123,8 +123,22 @@ void LogInitResultHistogram(InitResult result) { |
result, INIT_RESULT_MAX); |
} |
+bool FromStore(const Extension& extension) { |
+ bool updates_from_store = ManifestURL::UpdatesFromGallery(&extension); |
+ return extension.from_webstore() || updates_from_store; |
+} |
+ |
+bool CanUseExtensionApis(const Extension& extension) { |
+ return extension.is_extension() || extension.is_legacy_packaged_app(); |
+} |
+ |
} // namespace |
+// static |
+bool InstallVerifier::NeedsVerification(const Extension& extension) { |
+ return FromStore(extension) && CanUseExtensionApis(extension); |
+} |
+ |
void InstallVerifier::Init() { |
const base::DictionaryValue* pref = prefs_->GetInstallSignature(); |
if (pref) { |
@@ -228,11 +242,6 @@ std::string InstallVerifier::GetDebugPolicyProviderName() const { |
return std::string("InstallVerifier"); |
} |
-static bool FromStore(const Extension* extension) { |
- bool updates_from_store = ManifestURL::UpdatesFromGallery(extension); |
- return extension->from_webstore() || updates_from_store; |
-} |
- |
namespace { |
enum MustRemainDisabledOutcome { |
@@ -262,7 +271,8 @@ void MustRemainDisabledHistogram(MustRemainDisabledOutcome outcome) { |
bool InstallVerifier::MustRemainDisabled(const Extension* extension, |
Extension::DisableReason* reason, |
base::string16* error) const { |
- if (!extension->is_extension()) { |
+ CHECK(extension); |
+ if (!CanUseExtensionApis(*extension)) { |
MustRemainDisabledHistogram(NOT_EXTENSION); |
return false; |
} |
@@ -280,7 +290,7 @@ bool InstallVerifier::MustRemainDisabled(const Extension* extension, |
if (ContainsKey(InstallSigner::GetForcedNotFromWebstore(), extension->id())) { |
verified = false; |
outcome = FORCED_NOT_VERIFIED; |
- } else if (!FromStore(extension)) { |
+ } else if (!FromStore(*extension)) { |
verified = false; |
outcome = NOT_FROM_STORE; |
} else if (signature_.get() == NULL) { |