| 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 ffeda9e10c946b8f8c33b43ecf8a99042e65b63f..0fadcaa8afb6208aa9e8cc06439e864a03a492eb 100644 | 
| --- a/content/browser/frame_host/frame_tree_node.cc | 
| +++ b/content/browser/frame_host/frame_tree_node.cc | 
| @@ -321,6 +321,14 @@ void FrameTreeNode::SetPendingSandboxFlags( | 
| pending_sandbox_flags_ |= parent()->effective_sandbox_flags(); | 
| } | 
|  | 
| +void FrameTreeNode::SetPendingContainerPolicy( | 
| +    const ParsedFeaturePolicyHeader& container_policy) { | 
| +  // This should only be called on subframes; container policy is not mutable on | 
| +  // main frame. | 
| +  DCHECK(!IsMainFrame()); | 
| +  pending_container_policy_ = container_policy; | 
| +} | 
| + | 
| bool FrameTreeNode::IsDescendantOf(FrameTreeNode* other) const { | 
| if (!other || !other->child_count()) | 
| return false; | 
| @@ -364,11 +372,16 @@ bool FrameTreeNode::IsLoading() const { | 
| return current_frame_host->is_loading(); | 
| } | 
|  | 
| -bool FrameTreeNode::CommitPendingSandboxFlags() { | 
| +bool FrameTreeNode::CommitPendingFramePolicy() { | 
| bool did_change_flags = | 
| pending_sandbox_flags_ != replication_state_.sandbox_flags; | 
| -  replication_state_.sandbox_flags = pending_sandbox_flags_; | 
| -  return did_change_flags; | 
| +  bool did_change_container_policy = | 
| +      pending_container_policy_ != replication_state_.container_policy; | 
| +  if (did_change_flags) | 
| +    replication_state_.sandbox_flags = pending_sandbox_flags_; | 
| +  if (did_change_container_policy) | 
| +    replication_state_.container_policy = pending_container_policy_; | 
| +  return did_change_flags || did_change_container_policy; | 
| } | 
|  | 
| void FrameTreeNode::CreatedNavigationRequest( | 
|  |