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

Unified Diff: content/common/feature_policy/feature_policy.cc

Issue 2727803004: Replace string by enum in WebParsedFeaturePolicyDeclaration#feature (Closed)
Patch Set: Codereview: nit -- add comments to introduce features Created 3 years, 9 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: content/common/feature_policy/feature_policy.cc
diff --git a/content/common/feature_policy/feature_policy.cc b/content/common/feature_policy/feature_policy.cc
index 5ebdd7114f8e40fbe3d876e39599a798d21de0c5..f045f5a827524f01c6829e5785a6c2727207463a 100644
--- a/content/common/feature_policy/feature_policy.cc
+++ b/content/common/feature_policy/feature_policy.cc
@@ -12,48 +12,6 @@ namespace content {
namespace {
-// Given a string name, return the matching feature struct, or nullptr if it is
-// not the name of a policy-controlled feature.
-blink::WebFeaturePolicyFeature FeatureForName(
- const std::string& feature_name,
- const FeaturePolicy::FeatureList& features) {
- for (const auto& feature_mapping : features) {
- if (feature_name == feature_mapping.second->feature_name)
- return feature_mapping.first;
- }
- return blink::WebFeaturePolicyFeature::NotFound;
-}
-
-// Definitions of all features controlled by Feature Policy should appear here.
-const FeaturePolicy::Feature kDocumentCookie{
- "cookie", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kDocumentDomain{
- "domain", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kDocumentWrite{
- "docwrite", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kFullscreenFeature{
- "fullscreen", FeaturePolicy::FeatureDefault::EnableForSelf};
-const FeaturePolicy::Feature kGeolocationFeature{
- "geolocation", FeaturePolicy::FeatureDefault::EnableForSelf};
-const FeaturePolicy::Feature kMidiFeature{
- "midi", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kNotificationsFeature{
- "notifications", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kPaymentFeature{
- "payment", FeaturePolicy::FeatureDefault::EnableForSelf};
-const FeaturePolicy::Feature kPushFeature{
- "push", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kSyncScript{
- "sync-script", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kSyncXHR{
- "sync-xhr", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kUsermedia{
- "usermedia", FeaturePolicy::FeatureDefault::EnableForAll};
-const FeaturePolicy::Feature kVibrateFeature{
- "vibrate", FeaturePolicy::FeatureDefault::EnableForSelf};
-const FeaturePolicy::Feature kWebRTC{
- "webrtc", FeaturePolicy::FeatureDefault::EnableForAll};
-
// Extracts a Whitelist from a ParsedFeaturePolicyDeclaration.
std::unique_ptr<FeaturePolicy::Whitelist> WhitelistFromDeclaration(
const ParsedFeaturePolicyDeclaration& parsed_declaration) {
@@ -72,10 +30,10 @@ ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration()
: matches_all_origins(false) {}
ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration(
- std::string feature_name,
+ blink::WebFeaturePolicyFeature feature,
bool matches_all_origins,
std::vector<url::Origin> origins)
- : feature_name(feature_name),
+ : feature(feature),
matches_all_origins(matches_all_origins),
origins(origins) {}
@@ -146,19 +104,18 @@ bool FeaturePolicy::IsFeatureEnabledForOrigin(
blink::WebFeaturePolicyFeature feature,
const url::Origin& origin) const {
DCHECK(base::ContainsKey(feature_list_, feature));
- const FeaturePolicy::Feature* feature_definition = feature_list_.at(feature);
+ const FeaturePolicy::FeatureDefault default_policy =
+ feature_list_.at(feature);
DCHECK(base::ContainsKey(inherited_policies_, feature));
if (!inherited_policies_.at(feature))
return false;
auto whitelist = whitelists_.find(feature);
if (whitelist != whitelists_.end())
return whitelist->second->Contains(origin);
- if (feature_definition->default_policy ==
- FeaturePolicy::FeatureDefault::EnableForAll) {
+ if (default_policy == FeaturePolicy::FeatureDefault::EnableForAll) {
return true;
}
- if (feature_definition->default_policy ==
- FeaturePolicy::FeatureDefault::EnableForSelf) {
+ if (default_policy == FeaturePolicy::FeatureDefault::EnableForSelf) {
// TODO(iclelland): Remove the pointer equality check once it is possible to
// compare opaque origins successfully against themselves.
// https://crbug.com/690520
@@ -172,10 +129,8 @@ void FeaturePolicy::SetHeaderPolicy(
DCHECK(whitelists_.empty());
for (const ParsedFeaturePolicyDeclaration& parsed_declaration :
parsed_header) {
- blink::WebFeaturePolicyFeature feature =
- FeatureForName(parsed_declaration.feature_name, feature_list_);
- if (feature == blink::WebFeaturePolicyFeature::NotFound)
- continue;
+ blink::WebFeaturePolicyFeature feature = parsed_declaration.feature;
+ DCHECK(feature != blink::WebFeaturePolicyFeature::NotFound);
whitelists_[feature] = WhitelistFromDeclaration(parsed_declaration);
}
}
@@ -219,8 +174,7 @@ void FeaturePolicy::AddContainerPolicy(
// If a feature is enabled in the parent frame, and the parent chooses to
// delegate it to the child frame, using the iframe attribute, then the
// feature should be enabled in the child frame.
- blink::WebFeaturePolicyFeature feature =
- FeatureForName(parsed_declaration.feature_name, feature_list_);
+ blink::WebFeaturePolicyFeature feature = parsed_declaration.feature;
if (feature == blink::WebFeaturePolicyFeature::NotFound)
continue;
if (WhitelistFromDeclaration(parsed_declaration)->Contains(origin_) &&
@@ -234,22 +188,35 @@ void FeaturePolicy::AddContainerPolicy(
// static
const FeaturePolicy::FeatureList& FeaturePolicy::GetDefaultFeatureList() {
- CR_DEFINE_STATIC_LOCAL(
- FeatureList, default_feature_list,
- ({{blink::WebFeaturePolicyFeature::DocumentCookie, &kDocumentCookie},
- {blink::WebFeaturePolicyFeature::DocumentDomain, &kDocumentDomain},
- {blink::WebFeaturePolicyFeature::DocumentWrite, &kDocumentWrite},
- {blink::WebFeaturePolicyFeature::Fullscreen, &kFullscreenFeature},
- {blink::WebFeaturePolicyFeature::Geolocation, &kGeolocationFeature},
- {blink::WebFeaturePolicyFeature::MidiFeature, &kMidiFeature},
- {blink::WebFeaturePolicyFeature::Notifications, &kNotificationsFeature},
- {blink::WebFeaturePolicyFeature::Payment, &kPaymentFeature},
- {blink::WebFeaturePolicyFeature::Push, &kPushFeature},
- {blink::WebFeaturePolicyFeature::SyncScript, &kSyncScript},
- {blink::WebFeaturePolicyFeature::SyncXHR, &kSyncXHR},
- {blink::WebFeaturePolicyFeature::Usermedia, &kUsermedia},
- {blink::WebFeaturePolicyFeature::Vibrate, &kVibrateFeature},
- {blink::WebFeaturePolicyFeature::WebRTC, &kWebRTC}}));
+ CR_DEFINE_STATIC_LOCAL(FeatureList, default_feature_list,
+ ({{blink::WebFeaturePolicyFeature::DocumentCookie,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::DocumentDomain,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::DocumentWrite,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::Fullscreen,
+ FeaturePolicy::FeatureDefault::EnableForSelf},
+ {blink::WebFeaturePolicyFeature::Geolocation,
+ FeaturePolicy::FeatureDefault::EnableForSelf},
+ {blink::WebFeaturePolicyFeature::MidiFeature,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::Notifications,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::Payment,
+ FeaturePolicy::FeatureDefault::EnableForSelf},
+ {blink::WebFeaturePolicyFeature::Push,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::SyncScript,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::SyncXHR,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::Usermedia,
+ FeaturePolicy::FeatureDefault::EnableForAll},
+ {blink::WebFeaturePolicyFeature::Vibrate,
+ FeaturePolicy::FeatureDefault::EnableForSelf},
+ {blink::WebFeaturePolicyFeature::WebRTC,
+ FeaturePolicy::FeatureDefault::EnableForAll}}));
return default_feature_list;
}
« no previous file with comments | « content/common/feature_policy/feature_policy.h ('k') | content/common/feature_policy/feature_policy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698