Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(572)

Unified Diff: chrome/browser/extensions/extension_preference_api.cc

Issue 7003098: Start refractoring extension permissions into ExtensionPermissionSet. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix a bad merge Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698