Chromium Code Reviews| Index: third_party/WebKit/Source/core/dom/SecurityContext.cpp |
| diff --git a/third_party/WebKit/Source/core/dom/SecurityContext.cpp b/third_party/WebKit/Source/core/dom/SecurityContext.cpp |
| index efbb7d00dbe4b6d9fdba4d3098a1dc0c7c18d85d..19cdd87bc49c1248fdce2ca1001675fe92811451 100644 |
| --- a/third_party/WebKit/Source/core/dom/SecurityContext.cpp |
| +++ b/third_party/WebKit/Source/core/dom/SecurityContext.cpp |
| @@ -29,6 +29,7 @@ |
| #include "core/frame/csp/ContentSecurityPolicy.h" |
| #include "platform/RuntimeEnabledFeatures.h" |
| #include "platform/weborigin/SecurityOrigin.h" |
| +#include "public/platform/Platform.h" |
| namespace blink { |
| @@ -46,6 +47,7 @@ DEFINE_TRACE(SecurityContext) { |
| void SecurityContext::setSecurityOrigin( |
| PassRefPtr<SecurityOrigin> securityOrigin) { |
| m_securityOrigin = securityOrigin; |
| + updateFeaturePolicyOrigin(); |
| } |
| void SecurityContext::setContentSecurityPolicy( |
| @@ -99,15 +101,23 @@ void SecurityContext::enforceSuborigin(const Suborigin& suborigin) { |
| didUpdateSecurityOrigin(); |
| } |
| -void SecurityContext::setFeaturePolicyFromHeader( |
| +void SecurityContext::initializeFeaturePolicy( |
| const WebParsedFeaturePolicyHeader& parsedHeader, |
| - FeaturePolicy* parentFeaturePolicy) { |
| + const WebFeaturePolicy* parentFeaturePolicy) { |
| DCHECK(!m_featurePolicy); |
| // TODO(iclelland): Use the frame owner properties here to pass the frame |
| // policy, if it exists. |
| - m_featurePolicy = FeaturePolicy::createFromParentPolicy( |
| - parentFeaturePolicy, nullptr, m_securityOrigin); |
| - m_featurePolicy->setHeaderPolicy(parsedHeader); |
| + WebParsedFeaturePolicyHeader containerPolicy; |
| + WebSecurityOrigin origin = WebSecurityOrigin(m_securityOrigin); |
| + m_featurePolicy.reset(Platform::current()->createFeaturePolicy( |
| + parentFeaturePolicy, containerPolicy, parsedHeader, origin)); |
| +} |
| + |
| +void SecurityContext::updateFeaturePolicyOrigin() { |
| + if (!m_featurePolicy) |
| + return; |
| + m_featurePolicy.reset(Platform::current()->duplicateFeaturePolicyWithOrigin( |
| + *m_featurePolicy, WebSecurityOrigin(m_securityOrigin))); |
|
haraken
2017/03/04 07:36:01
Oh, if your intention is just to *update* (not dup
iclelland
2017/03/06 04:17:40
That is really the only modification being conside
|
| } |
| } // namespace blink |