Index: chrome/browser/extensions/external_component_loader.cc |
diff --git a/chrome/browser/extensions/external_component_loader.cc b/chrome/browser/extensions/external_component_loader.cc |
index 7b66afe41c43b84bcec7b503292d5e25efc339f2..f255d17da8c880ca315e53240bb43dbc3324556c 100644 |
--- a/chrome/browser/extensions/external_component_loader.cc |
+++ b/chrome/browser/extensions/external_component_loader.cc |
@@ -5,6 +5,8 @@ |
#include "chrome/browser/extensions/external_component_loader.h" |
#include "base/command_line.h" |
+#include "base/sha1.h" |
+#include "base/strings/string_number_conversions.h" |
#include "chrome/browser/bookmarks/enhanced_bookmarks_features.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/signin/signin_manager_factory.h" |
@@ -34,6 +36,24 @@ ExternalComponentLoader::ExternalComponentLoader(Profile* profile) |
ExternalComponentLoader::~ExternalComponentLoader() {} |
+// static |
+bool ExternalComponentLoader::IsModifiable( |
+ const extensions::Extension* extension) { |
+ if (extension->location() == extensions::Manifest::EXTERNAL_COMPONENT) { |
+ static const char* enhanced_extension_hashes[] = { |
+ "D5736E4B5CF695CB93A2FB57E4FDC6E5AFAB6FE2", // http://crbug.com/312900 |
+ "D57DE394F36DC1C3220E7604C575D29C51A6C495", // http://crbug.com/319444 |
+ "3F65507A3B39259B38C8173C6FFA3D12DF64CCE9" // http://crbug.com/371562 |
+ }; |
+ std::string hash = base::SHA1HashString(extension->id()); |
+ hash = base::HexEncode(hash.c_str(), hash.length()); |
+ for (size_t i = 0; i < arraysize(enhanced_extension_hashes); i++) |
+ if (hash == enhanced_extension_hashes[i]) |
+ return true; |
+ } |
+ return false; |
+} |
+ |
void ExternalComponentLoader::StartLoading() { |
prefs_.reset(new base::DictionaryValue()); |
std::string appId = extension_misc::kInAppPaymentsSupportAppId; |