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

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: See if rebasing fixes the tests... 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..21b1f71b590d6913bbf242adf20bb2a789f950a6 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::ID 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::kContentSettings
},
{ "referrersEnabled",
prefs::kEnableReferrers,
- Extension::kContentSettingsPermission
+ ExtensionAPIPermission::kContentSettings
},
{ "hyperlinkAuditingEnabled",
prefs::kEnableHyperlinkAuditing,
- Extension::kContentSettingsPermission
+ ExtensionAPIPermission::kContentSettings
},
{ "proxy",
prefs::kProxy,
- Extension::kProxyPermission
+ ExtensionAPIPermission::kProxy
},
};
@@ -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::ID* 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::ID* permission) {
+ PrefMap::iterator it = event_mapping_.find(browser_pref);
if (it != event_mapping_.end()) {
*event_name = it->second.first;
*permission = it->second.second;
@@ -198,11 +197,15 @@ class PrefMapping {
transformers_[browser_pref] = transformer;
}
+ typedef std::map<std::string,
+ std::pair<std::string, ExtensionAPIPermission::ID> >
+ 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::ID permission = ExtensionAPIPermission::kInvalid;
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::ID permission = ExtensionAPIPermission::kInvalid;
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::ID permission = ExtensionAPIPermission::kInvalid;
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::ID permission = ExtensionAPIPermission::kInvalid;
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;
« no previous file with comments | « chrome/browser/extensions/extension_management_browsertest.cc ('k') | chrome/browser/extensions/extension_prefs.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698