Chromium Code Reviews| Index: third_party/WebKit/Source/core/html/HTMLFrameOwnerElement.cpp |
| diff --git a/third_party/WebKit/Source/core/html/HTMLFrameOwnerElement.cpp b/third_party/WebKit/Source/core/html/HTMLFrameOwnerElement.cpp |
| index 90d7742c2a7a0d82a13e9e5e742135dd53aa0b32..2cfc5dfd836357cf62361671fb490107be566475 100644 |
| --- a/third_party/WebKit/Source/core/html/HTMLFrameOwnerElement.cpp |
| +++ b/third_party/WebKit/Source/core/html/HTMLFrameOwnerElement.cpp |
| @@ -204,11 +204,12 @@ DOMWindow* HTMLFrameOwnerElement::contentWindow() const { |
| void HTMLFrameOwnerElement::SetSandboxFlags(SandboxFlags flags) { |
| sandbox_flags_ = flags; |
|
dcheng
2017/04/18 16:26:37
How come this doesn't need to refresh container_po
iclelland
2017/04/18 19:19:44
That's a really good point, it should update that
|
| - // Don't notify about updates if contentFrame() is null, for example when |
| + // Don't notify about updates if ContentFrame() is null, for example when |
| // the subframe hasn't been created yet. |
| - if (ContentFrame()) |
| - GetDocument().GetFrame()->Loader().Client()->DidChangeSandboxFlags( |
| - ContentFrame(), flags); |
| + if (ContentFrame()) { |
| + GetDocument().GetFrame()->Loader().Client()->DidChangeFramePolicy( |
| + ContentFrame(), sandbox_flags_, container_policy_); |
| + } |
| } |
| bool HTMLFrameOwnerElement::IsKeyboardFocusable() const { |
| @@ -223,12 +224,24 @@ void HTMLFrameOwnerElement::DisposeWidgetSoon(FrameViewBase* frame_view_base) { |
| frame_view_base->Dispose(); |
| } |
| +void HTMLFrameOwnerElement::UpdateContainerPolicy() { |
| + container_policy_ = GetContainerPolicyFromAllowedFeatures( |
| + AllowedFeatures(), GetOriginForFeaturePolicy()); |
| + // Don't notify about updates if ContentFrame() is null, for example when |
| + // the subframe hasn't been created yet. |
| + if (ContentFrame()) { |
| + GetDocument().GetFrame()->Loader().Client()->DidChangeFramePolicy( |
| + ContentFrame(), sandbox_flags_, container_policy_); |
| + } |
| +} |
| + |
| void HTMLFrameOwnerElement::FrameOwnerPropertiesChanged() { |
| - // Don't notify about updates if contentFrame() is null, for example when |
| + // Don't notify about updates if ContentFrame() is null, for example when |
| // the subframe hasn't been created yet. |
| - if (ContentFrame()) |
| + if (ContentFrame()) { |
| GetDocument().GetFrame()->Loader().Client()->DidChangeFrameOwnerProperties( |
| this); |
| + } |
| } |
| void HTMLFrameOwnerElement::DispatchLoad() { |
| @@ -241,6 +254,10 @@ HTMLFrameOwnerElement::AllowedFeatures() const { |
| return features; |
| } |
| +const WebParsedFeaturePolicy& HTMLFrameOwnerElement::ContainerPolicy() const { |
| + return container_policy_; |
| +} |
| + |
| Document* HTMLFrameOwnerElement::getSVGDocument( |
| ExceptionState& exception_state) const { |
| Document* doc = contentDocument(); |
| @@ -309,6 +326,8 @@ bool HTMLFrameOwnerElement::LoadOrRedirectSubframe( |
| const KURL& url, |
| const AtomicString& frame_name, |
| bool replace_current_item) { |
| + UpdateContainerPolicy(); |
| + |
| LocalFrame* parent_frame = GetDocument().GetFrame(); |
| if (ContentFrame()) { |
| ContentFrame()->Navigate(GetDocument(), url, replace_current_item, |