Chromium Code Reviews| Index: chrome/browser/extensions/extension_preference_api.cc |
| diff --git a/chrome/browser/extensions/extension_preference_api.cc b/chrome/browser/extensions/extension_preference_api.cc |
| index 1fc781355947dfb40d0a6f9d00cc8587553e5651..ab28faf113a7916353a3dd7e27fa20fff73b0c31 100644 |
| --- a/chrome/browser/extensions/extension_preference_api.cc |
| +++ b/chrome/browser/extensions/extension_preference_api.cc |
| @@ -20,6 +20,7 @@ |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/common/extensions/extension_error_utils.h" |
| +#include "chrome/common/extensions/extension_permission_set.h" |
| #include "chrome/common/pref_names.h" |
| #include "content/common/notification_type.h" |
| #include "content/common/notification_service.h" |
| @@ -29,7 +30,7 @@ namespace { |
| struct PrefMappingEntry { |
| const char* extension_pref; |
| const char* browser_pref; |
| - const char* permission; |
| + ExtensionAPIPermission permission; |
| }; |
| const char kNotControllable[] = "not_controllable"; |
| @@ -46,19 +47,19 @@ const char kOnPrefChangeFormat[] = "types.ChromeSetting.%s.onChange"; |
| PrefMappingEntry kPrefMapping[] = { |
| { "thirdPartyCookiesAllowed", |
| prefs::kBlockThirdPartyCookies, |
| - Extension::kContentSettingsPermission |
| + ExtensionAPIPermission::ContentSettings() |
|
Matt Perry
2011/06/09 22:28:42
this is against the style guide (only POD types in
|
| }, |
| { "referrersEnabled", |
| prefs::kEnableReferrers, |
| - Extension::kContentSettingsPermission |
| + ExtensionAPIPermission::ContentSettings() |
| }, |
| { "hyperlinkAuditingEnabled", |
| prefs::kEnableHyperlinkAuditing, |
| - Extension::kContentSettingsPermission |
| + ExtensionAPIPermission::ContentSettings() |
| }, |
| { "proxy", |
| prefs::kProxy, |
| - Extension::kProxyPermission |
| + ExtensionAPIPermission::Proxy() |
| }, |
| }; |
| @@ -130,9 +131,8 @@ class PrefMapping { |
| bool FindBrowserPrefForExtensionPref(const std::string& extension_pref, |
| std::string* browser_pref, |
| - std::string* permission) { |
| - std::map<std::string, std::pair<std::string, std::string> >::iterator it = |
| - mapping_.find(extension_pref); |
| + ExtensionAPIPermission** permission) { |
| + PrefMap::iterator it = mapping_.find(extension_pref); |
| if (it != mapping_.end()) { |
| *browser_pref = it->second.first; |
| *permission = it->second.second; |
| @@ -143,9 +143,8 @@ class PrefMapping { |
| bool FindEventForBrowserPref(const std::string& browser_pref, |
| std::string* event_name, |
| - std::string* permission) { |
| - std::map<std::string, std::pair<std::string, std::string> >::iterator it = |
| - event_mapping_.find(browser_pref); |
| + ExtensionAPIPermission** permission) { |
| + PrefMap::iterator it = event_mapping_.find(browser_pref); |
| if (it != event_mapping_.end()) { |
| *event_name = it->second.first; |
| *permission = it->second.second; |
| @@ -172,12 +171,12 @@ class PrefMapping { |
| for (size_t i = 0; i < arraysize(kPrefMapping); ++i) { |
| mapping_[kPrefMapping[i].extension_pref] = |
| std::make_pair(kPrefMapping[i].browser_pref, |
| - kPrefMapping[i].permission); |
| + &kPrefMapping[i].permission); |
| std::string event_name = |
| base::StringPrintf(kOnPrefChangeFormat, |
| kPrefMapping[i].extension_pref); |
| event_mapping_[kPrefMapping[i].browser_pref] = |
| - std::make_pair(event_name, kPrefMapping[i].permission); |
| + std::make_pair(event_name, &kPrefMapping[i].permission); |
| } |
| DCHECK_EQ(arraysize(kPrefMapping), mapping_.size()); |
| DCHECK_EQ(arraysize(kPrefMapping), event_mapping_.size()); |
| @@ -198,11 +197,15 @@ class PrefMapping { |
| transformers_[browser_pref] = transformer; |
| } |
| + typedef std::map<std::string, std::pair<std::string, |
| + ExtensionAPIPermission*> > |
| + PrefMap; |
| + |
| // Mapping from extension pref keys to browser pref keys and permissions. |
| - std::map<std::string, std::pair<std::string, std::string> > mapping_; |
| + PrefMap mapping_; |
| // Mapping from browser pref keys to extension event names and permissions. |
| - std::map<std::string, std::pair<std::string, std::string> > event_mapping_; |
| + PrefMap event_mapping_; |
| // Mapping from browser pref keys to transformers. |
| std::map<std::string, PrefTransformerInterface*> transformers_; |
| @@ -248,7 +251,7 @@ void ExtensionPreferenceEventRouter::OnPrefChanged( |
| bool incognito = (pref_service != profile_->GetPrefs()); |
| std::string event_name; |
| - std::string permission; |
| + ExtensionAPIPermission* permission = NULL; |
| bool rv = PrefMapping::GetInstance()->FindEventForBrowserPref( |
| browser_pref, &event_name, &permission); |
| DCHECK(rv); |
| @@ -278,7 +281,7 @@ void ExtensionPreferenceEventRouter::OnPrefChanged( |
| std::string extension_id = (*it)->id(); |
| // TODO(bauerb): Only iterate over registered event listeners. |
| if (router->ExtensionHasEventListener(extension_id, event_name) && |
| - (*it)->HasApiPermission(permission) && |
| + (*it)->HasApiPermission(*permission) && |
| (!incognito || extension_service->CanCrossIncognito(*it))) { |
| std::string level_of_control = |
| GetLevelOfControl(profile_, extension_id, browser_pref, incognito); |
| @@ -323,11 +326,11 @@ bool GetPreferenceFunction::RunImpl() { |
| PrefService* prefs = incognito ? profile_->GetOffTheRecordPrefs() |
| : profile_->GetPrefs(); |
| std::string browser_pref; |
| - std::string permission; |
| + ExtensionAPIPermission* permission = NULL; |
| EXTENSION_FUNCTION_VALIDATE( |
| PrefMapping::GetInstance()->FindBrowserPrefForExtensionPref( |
| pref_key, &browser_pref, &permission)); |
| - if (!GetExtension()->HasApiPermission(permission)) { |
| + if (!GetExtension()->HasApiPermission(*permission)) { |
| error_ = ExtensionErrorUtils::FormatErrorMessage( |
| keys::kPermissionErrorMessage, pref_key); |
| return false; |
| @@ -397,11 +400,11 @@ bool SetPreferenceFunction::RunImpl() { |
| } |
| std::string browser_pref; |
| - std::string permission; |
| + ExtensionAPIPermission* permission = NULL; |
| EXTENSION_FUNCTION_VALIDATE( |
| PrefMapping::GetInstance()->FindBrowserPrefForExtensionPref( |
| pref_key, &browser_pref, &permission)); |
| - if (!GetExtension()->HasApiPermission(permission)) { |
| + if (!GetExtension()->HasApiPermission(*permission)) { |
| error_ = ExtensionErrorUtils::FormatErrorMessage( |
| keys::kPermissionErrorMessage, pref_key); |
| return false; |
| @@ -461,11 +464,11 @@ bool ClearPreferenceFunction::RunImpl() { |
| } |
| std::string browser_pref; |
| - std::string permission; |
| + ExtensionAPIPermission* permission = NULL; |
| EXTENSION_FUNCTION_VALIDATE( |
| PrefMapping::GetInstance()->FindBrowserPrefForExtensionPref( |
| pref_key, &browser_pref, &permission)); |
| - if (!GetExtension()->HasApiPermission(permission)) { |
| + if (!GetExtension()->HasApiPermission(*permission)) { |
| error_ = ExtensionErrorUtils::FormatErrorMessage( |
| keys::kPermissionErrorMessage, pref_key); |
| return false; |