| Index: third_party/WebKit/Source/core/loader/FrameLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/FrameLoader.cpp b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
|
| index 23c0121c422682de09655ce209a4a58600b7aa4c..16d3f82be879b3e6970e5ffc2175422e03270600 100644
|
| --- a/third_party/WebKit/Source/core/loader/FrameLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/FrameLoader.cpp
|
| @@ -577,25 +577,23 @@ void FrameLoader::didBeginDocument() {
|
| m_frame->document(),
|
| m_documentLoader->response().httpHeaderField(HTTPNames::Origin_Trial));
|
| if (RuntimeEnabledFeatures::featurePolicyEnabled()) {
|
| - std::unique_ptr<FeaturePolicy> featurePolicy(
|
| - FeaturePolicy::createFromParentPolicy(
|
| - (isLoadingMainFrame() ? nullptr
|
| - : m_frame->client()
|
| - ->parent()
|
| - ->securityContext()
|
| - ->getFeaturePolicy()),
|
| - m_frame->securityContext()->getSecurityOrigin()));
|
| - Vector<String> messages;
|
| - featurePolicy->setHeaderPolicy(
|
| + SecurityContext* parentSecurityContext =
|
| + (isLoadingMainFrame()
|
| + ? nullptr
|
| + : m_frame->client()->parent()->securityContext());
|
| + const String& featurePolicyHeader =
|
| m_documentLoader->response().httpHeaderField(
|
| - HTTPNames::Feature_Policy),
|
| - messages);
|
| + HTTPNames::Feature_Policy);
|
| + Vector<String> messages;
|
| + m_frame->securityContext()->setFeaturePolicyFromHeader(
|
| + featurePolicyHeader, parentSecurityContext, &messages);
|
| for (auto& message : messages) {
|
| m_frame->document()->addConsoleMessage(ConsoleMessage::create(
|
| OtherMessageSource, ErrorMessageLevel,
|
| "Error with Feature-Policy header: " + message));
|
| }
|
| - m_frame->document()->setFeaturePolicy(std::move(featurePolicy));
|
| + if (client() && !featurePolicyHeader.isEmpty())
|
| + client()->didSetFeaturePolicyHeader(featurePolicyHeader);
|
| }
|
| }
|
|
|
|
|