| 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 fde5f299ac1e539ba4f62f6f845d6b91866f77a7..53e0d94e769a85411bb3d38ba5f7605240fbfa6d 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);
|
| }
|
| }
|
|
|
|
|