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)); |
raymes
2017/04/05 05:43:22
Hmm, how do payment request and fullscreen get fac
iclelland
2017/04/05 14:51:13
Luna was doing that separately in https://coderevi
|
+ // 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(); |
// 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; |
+ updateContainerPolicy(); |
+ |
LocalFrame* parentFrame = document().frame(); |
if (contentFrame()) { |
contentFrame()->navigate(document(), url, replaceCurrentItem, |