OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/common/feature_policy/feature_policy.h" | 5 #include "content/common/feature_policy/feature_policy.h" |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 | 10 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 matches_all_origins(matches_all_origins), | 79 matches_all_origins(matches_all_origins), |
80 origins(origins) {} | 80 origins(origins) {} |
81 | 81 |
82 ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration( | 82 ParsedFeaturePolicyDeclaration::ParsedFeaturePolicyDeclaration( |
83 const ParsedFeaturePolicyDeclaration& rhs) = default; | 83 const ParsedFeaturePolicyDeclaration& rhs) = default; |
84 | 84 |
85 ParsedFeaturePolicyDeclaration::~ParsedFeaturePolicyDeclaration() {} | 85 ParsedFeaturePolicyDeclaration::~ParsedFeaturePolicyDeclaration() {} |
86 | 86 |
87 FeaturePolicy::Whitelist::Whitelist() : matches_all_origins_(false) {} | 87 FeaturePolicy::Whitelist::Whitelist() : matches_all_origins_(false) {} |
88 | 88 |
| 89 FeaturePolicy::Whitelist::Whitelist(const Whitelist& rhs) = default; |
| 90 |
89 FeaturePolicy::Whitelist::~Whitelist() = default; | 91 FeaturePolicy::Whitelist::~Whitelist() = default; |
90 | 92 |
91 void FeaturePolicy::Whitelist::Add(const url::Origin& origin) { | 93 void FeaturePolicy::Whitelist::Add(const url::Origin& origin) { |
92 origins_.push_back(origin); | 94 origins_.push_back(origin); |
93 } | 95 } |
94 | 96 |
95 void FeaturePolicy::Whitelist::AddAll() { | 97 void FeaturePolicy::Whitelist::AddAll() { |
96 matches_all_origins_ = true; | 98 matches_all_origins_ = true; |
97 } | 99 } |
98 | 100 |
(...skipping 15 matching lines...) Expand all Loading... |
114 | 116 |
115 // static | 117 // static |
116 std::unique_ptr<FeaturePolicy> FeaturePolicy::CreateFromParentPolicy( | 118 std::unique_ptr<FeaturePolicy> FeaturePolicy::CreateFromParentPolicy( |
117 const FeaturePolicy* parent_policy, | 119 const FeaturePolicy* parent_policy, |
118 const ParsedFeaturePolicyHeader& container_policy, | 120 const ParsedFeaturePolicyHeader& container_policy, |
119 const url::Origin& origin) { | 121 const url::Origin& origin) { |
120 return CreateFromParentPolicy(parent_policy, container_policy, origin, | 122 return CreateFromParentPolicy(parent_policy, container_policy, origin, |
121 GetDefaultFeatureList()); | 123 GetDefaultFeatureList()); |
122 } | 124 } |
123 | 125 |
124 void FeaturePolicy::ResetOrigin(const url::Origin& origin) { | 126 // static |
125 origin_ = url::Origin(origin); | 127 std::unique_ptr<FeaturePolicy> FeaturePolicy::CreateFromPolicyWithOrigin( |
| 128 const FeaturePolicy& policy, |
| 129 const url::Origin& origin) { |
| 130 std::unique_ptr<FeaturePolicy> new_policy = |
| 131 base::WrapUnique(new FeaturePolicy(origin, policy.feature_list_)); |
| 132 new_policy->inherited_policies_ = policy.inherited_policies_; |
| 133 for (const auto& feature : policy.whitelists_) { |
| 134 new_policy->whitelists_[feature.first] = |
| 135 base::WrapUnique(new Whitelist(*feature.second)); |
| 136 } |
| 137 return new_policy; |
126 } | 138 } |
127 | 139 |
128 bool FeaturePolicy::IsFeatureEnabled( | 140 bool FeaturePolicy::IsFeatureEnabled( |
129 blink::WebFeaturePolicyFeature feature) const { | 141 blink::WebFeaturePolicyFeature feature) const { |
130 return IsFeatureEnabledForOrigin(feature, origin_); | 142 return IsFeatureEnabledForOrigin(feature, origin_); |
131 } | 143 } |
132 | 144 |
133 bool FeaturePolicy::IsFeatureEnabledForOrigin( | 145 bool FeaturePolicy::IsFeatureEnabledForOrigin( |
134 blink::WebFeaturePolicyFeature feature, | 146 blink::WebFeaturePolicyFeature feature, |
135 const url::Origin& origin) const { | 147 const url::Origin& origin) const { |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 {blink::WebFeaturePolicyFeature::Push, &kPushFeature}, | 247 {blink::WebFeaturePolicyFeature::Push, &kPushFeature}, |
236 {blink::WebFeaturePolicyFeature::SyncScript, &kSyncScript}, | 248 {blink::WebFeaturePolicyFeature::SyncScript, &kSyncScript}, |
237 {blink::WebFeaturePolicyFeature::SyncXHR, &kSyncXHR}, | 249 {blink::WebFeaturePolicyFeature::SyncXHR, &kSyncXHR}, |
238 {blink::WebFeaturePolicyFeature::Usermedia, &kUsermedia}, | 250 {blink::WebFeaturePolicyFeature::Usermedia, &kUsermedia}, |
239 {blink::WebFeaturePolicyFeature::Vibrate, &kVibrateFeature}, | 251 {blink::WebFeaturePolicyFeature::Vibrate, &kVibrateFeature}, |
240 {blink::WebFeaturePolicyFeature::WebRTC, &kWebRTC}})); | 252 {blink::WebFeaturePolicyFeature::WebRTC, &kWebRTC}})); |
241 return default_feature_list; | 253 return default_feature_list; |
242 } | 254 } |
243 | 255 |
244 } // namespace content | 256 } // namespace content |
OLD | NEW |