Index: content/browser/frame_host/frame_tree_node.cc |
diff --git a/content/browser/frame_host/frame_tree_node.cc b/content/browser/frame_host/frame_tree_node.cc |
index a67de695a205b85c456d5c8f63254140222ec10f..1a041d0d9dff9a0e4b8e23e7be2c686e3988dd28 100644 |
--- a/content/browser/frame_host/frame_tree_node.cc |
+++ b/content/browser/frame_host/frame_tree_node.cc |
@@ -256,12 +256,21 @@ void FrameTreeNode::SetFrameName(const std::string& name, |
} |
void FrameTreeNode::SetFeaturePolicyHeader( |
- const ParsedFeaturePolicy& parsed_header) { |
+ const FeaturePolicyHeader& parsed_header) { |
+ ResetFeaturePolicy(); |
replication_state_.feature_policy_header = parsed_header; |
+ feature_policy_->SetHeaderPolicy(parsed_header); |
} |
void FrameTreeNode::ResetFeaturePolicy() { |
replication_state_.feature_policy_header.clear(); |
+ if (parent()) { |
+ feature_policy_ = FeaturePolicy::CreateFromParentPolicy( |
+ parent()->feature_policy_.get(), current_origin()); |
+ } else { |
+ feature_policy_ = |
+ FeaturePolicy::CreateFromParentPolicy(nullptr, current_origin()); |
+ } |
} |
void FrameTreeNode::AddContentSecurityPolicy( |