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 097190ad126078692b3ade36bd3d0efe4c140a42..db5b4a6addb8db04e009a7567fff4254275eb0c6 100644 |
| --- a/third_party/WebKit/Source/core/html/HTMLFrameOwnerElement.cpp |
| +++ b/third_party/WebKit/Source/core/html/HTMLFrameOwnerElement.cpp |
| @@ -206,9 +206,10 @@ void HTMLFrameOwnerElement::setSandboxFlags(SandboxFlags flags) { |
| m_sandboxFlags = flags; |
| // Don't notify about updates if contentFrame() is null, for example when |
| // the subframe hasn't been created yet. |
| - if (contentFrame()) |
| - document().frame()->loader().client()->didChangeSandboxFlags(contentFrame(), |
| - flags); |
| + if (contentFrame()) { |
| + document().frame()->loader().client()->didChangeFramePolicy( |
| + contentFrame(), m_sandboxFlags, m_containerPolicy); |
| + } |
| } |
| bool HTMLFrameOwnerElement::isKeyboardFocusable() const { |
| @@ -223,7 +224,19 @@ void HTMLFrameOwnerElement::disposeWidgetSoon(FrameViewBase* frameViewBase) { |
| frameViewBase->dispose(); |
| } |
| +void HTMLFrameOwnerElement::updateContainerPolicy() { |
| + m_containerPolicy = getContainerPolicyFromAllowedFeatures( |
| + allowedFeatures(), SecurityOrigin::create(m_absoluteURL)); |
|
alexmos
2017/04/06 00:44:22
Is creating an origin directly from the src URL re
iclelland
2017/04/09 03:25:54
The way we have defined it in the spec, specifying
|
| + // Don't notify about updates if contentFrame() is null, for example when |
| + // the subframe hasn't been created yet. |
| + if (contentFrame()) { |
| + document().frame()->loader().client()->didChangeFramePolicy( |
| + contentFrame(), m_sandboxFlags, m_containerPolicy); |
| + } |
| +} |
| + |
| void HTMLFrameOwnerElement::frameOwnerPropertiesChanged() { |
| + updateContainerPolicy(); |
|
lunalu1
2017/04/05 22:30:03
I don't think we need to update it here?
iclelland
2017/04/09 03:25:54
Thanks; that was older code from a previous iterat
|
| // Don't notify about updates if contentFrame() is null, for example when |
| // the subframe hasn't been created yet. |
| if (contentFrame()) |
| @@ -240,6 +253,10 @@ HTMLFrameOwnerElement::allowedFeatures() const { |
| return features; |
| } |
| +const WebParsedFeaturePolicy& HTMLFrameOwnerElement::containerPolicy() const { |
| + return m_containerPolicy; |
| +} |
| + |
| Document* HTMLFrameOwnerElement::getSVGDocument( |
| ExceptionState& exceptionState) const { |
| Document* doc = contentDocument(); |
| @@ -308,6 +325,9 @@ bool HTMLFrameOwnerElement::loadOrRedirectSubframe( |
| const KURL& url, |
| const AtomicString& frameName, |
| bool replaceCurrentItem) { |
| + m_absoluteURL = url; |
|
lunalu1
2017/04/05 22:30:03
it seems like this is the only place this url is u
iclelland
2017/04/09 03:25:54
Thanks for catching that -- we don't need to anymo
|
| + updateContainerPolicy(); |
| + |
| LocalFrame* parentFrame = document().frame(); |
| if (contentFrame()) { |
| contentFrame()->navigate(document(), url, replaceCurrentItem, |