Index: chrome/common/extensions/extension.cc |
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc |
index 3631af0ca58c4e518efa4447fe555b98af435a7e..c83f3c8347e628c77fe26a6a226c8e4c2172412f 100644 |
--- a/chrome/common/extensions/extension.cc |
+++ b/chrome/common/extensions/extension.cc |
@@ -32,6 +32,7 @@ |
#include "chrome/common/notification_service.h" |
#include "chrome/common/url_constants.h" |
#include "grit/chromium_strings.h" |
+#include "grit/generated_resources.h" |
#include "webkit/glue/image_decoder.h" |
#if defined(OS_WIN) |
@@ -146,6 +147,19 @@ const char* Extension::kPermissionNames[] = { |
const size_t Extension::kNumPermissions = |
arraysize(Extension::kPermissionNames); |
+const Extension::SimplePermissions& Extension::GetSimplePermissions() { |
+ static SimplePermissions permissions; |
+ if (permissions.empty()) { |
+ permissions[Extension::kBookmarkPermission] = |
+ l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT2_WARNING_BOOKMARKS); |
+ permissions[Extension::kGeolocationPermission] = |
+ l10n_util::GetStringUTF16( |
+ IDS_EXTENSION_PROMPT2_WARNING_GEOLOCATION); |
+ } |
+ return permissions; |
+} |
+ |
Extension::~Extension() { |
} |
@@ -874,12 +888,20 @@ bool Extension::IsPrivilegeIncrease(Extension* old_extension, |
return true; |
} |
- // If we're going from not having history to not having it, it's an increase. |
if (!old_extension->HasEffectiveBrowsingHistoryPermission() && |
new_extension->HasEffectiveBrowsingHistoryPermission()) { |
return true; |
} |
+ const SimplePermissions& simple_permissions = GetSimplePermissions(); |
+ for (SimplePermissions::const_iterator iter = simple_permissions.begin(); |
+ iter != simple_permissions.end(); ++iter) { |
+ if (!old_extension->HasApiPermission(iter->first) && |
+ new_extension->HasApiPermission(iter->first)) { |
+ return true; |
+ } |
+ } |
+ |
// Nothing much has changed. |
return false; |
} |