| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2000 Simon Hausmann (hausmann@kde.org) | 4 * (C) 2000 Simon Hausmann (hausmann@kde.org) |
| 5 * (C) 2001 Dirk Mueller (mueller@kde.org) | 5 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 6 * Copyright (C) 2004, 2006, 2008, 2009 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2006, 2008, 2009 Apple Inc. All rights reserved. |
| 7 * Copyright (C) 2009 Ericsson AB. All rights reserved. | 7 * Copyright (C) 2009 Ericsson AB. All rights reserved. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "platform/RuntimeEnabledFeatures.h" | 33 #include "platform/RuntimeEnabledFeatures.h" |
| 34 | 34 |
| 35 namespace blink { | 35 namespace blink { |
| 36 | 36 |
| 37 using namespace HTMLNames; | 37 using namespace HTMLNames; |
| 38 | 38 |
| 39 inline HTMLIFrameElement::HTMLIFrameElement(Document& document) | 39 inline HTMLIFrameElement::HTMLIFrameElement(Document& document) |
| 40 : HTMLFrameElementBase(iframeTag, document), | 40 : HTMLFrameElementBase(iframeTag, document), |
| 41 m_didLoadNonEmptyDocument(false), | 41 m_didLoadNonEmptyDocument(false), |
| 42 m_sandbox(HTMLIFrameElementSandbox::create(this)), | 42 m_sandbox(HTMLIFrameElementSandbox::create(this)), |
| 43 m_allow(HTMLIFrameElementAllow::create(this)), |
| 43 m_referrerPolicy(ReferrerPolicyDefault) {} | 44 m_referrerPolicy(ReferrerPolicyDefault) {} |
| 44 | 45 |
| 45 DEFINE_NODE_FACTORY(HTMLIFrameElement) | 46 DEFINE_NODE_FACTORY(HTMLIFrameElement) |
| 46 | 47 |
| 47 DEFINE_TRACE(HTMLIFrameElement) { | 48 DEFINE_TRACE(HTMLIFrameElement) { |
| 48 visitor->trace(m_sandbox); | 49 visitor->trace(m_sandbox); |
| 49 visitor->trace(m_permissions); | 50 visitor->trace(m_permissions); |
| 51 visitor->trace(m_allow); |
| 50 HTMLFrameElementBase::trace(visitor); | 52 HTMLFrameElementBase::trace(visitor); |
| 51 Supplementable<HTMLIFrameElement>::trace(visitor); | 53 Supplementable<HTMLIFrameElement>::trace(visitor); |
| 52 } | 54 } |
| 53 | 55 |
| 54 HTMLIFrameElement::~HTMLIFrameElement() {} | 56 HTMLIFrameElement::~HTMLIFrameElement() {} |
| 55 | 57 |
| 56 DOMTokenList* HTMLIFrameElement::sandbox() const { | 58 DOMTokenList* HTMLIFrameElement::sandbox() const { |
| 57 return m_sandbox.get(); | 59 return m_sandbox.get(); |
| 58 } | 60 } |
| 59 | 61 |
| 60 DOMTokenList* HTMLIFrameElement::permissions() const { | 62 DOMTokenList* HTMLIFrameElement::permissions() const { |
| 61 if (!const_cast<HTMLIFrameElement*>(this)->initializePermissionsAttribute()) | 63 if (!const_cast<HTMLIFrameElement*>(this)->initializePermissionsAttribute()) |
| 62 return nullptr; | 64 return nullptr; |
| 63 return m_permissions.get(); | 65 return m_permissions.get(); |
| 64 } | 66 } |
| 65 | 67 |
| 68 DOMTokenList* HTMLIFrameElement::allow() const { |
| 69 return m_allow.get(); |
| 70 } |
| 71 |
| 66 bool HTMLIFrameElement::isPresentationAttribute( | 72 bool HTMLIFrameElement::isPresentationAttribute( |
| 67 const QualifiedName& name) const { | 73 const QualifiedName& name) const { |
| 68 if (name == widthAttr || name == heightAttr || name == alignAttr || | 74 if (name == widthAttr || name == heightAttr || name == alignAttr || |
| 69 name == frameborderAttr) | 75 name == frameborderAttr) |
| 70 return true; | 76 return true; |
| 71 return HTMLFrameElementBase::isPresentationAttribute(name); | 77 return HTMLFrameElementBase::isPresentationAttribute(name); |
| 72 } | 78 } |
| 73 | 79 |
| 74 void HTMLIFrameElement::collectStyleForPresentationAttribute( | 80 void HTMLIFrameElement::collectStyleForPresentationAttribute( |
| 75 const QualifiedName& name, | 81 const QualifiedName& name, |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 m_csp = nullAtom; | 157 m_csp = nullAtom; |
| 152 document().addConsoleMessage(ConsoleMessage::create( | 158 document().addConsoleMessage(ConsoleMessage::create( |
| 153 OtherMessageSource, ErrorMessageLevel, | 159 OtherMessageSource, ErrorMessageLevel, |
| 154 "'csp' attribute contains non-ASCII characters: " + value)); | 160 "'csp' attribute contains non-ASCII characters: " + value)); |
| 155 return; | 161 return; |
| 156 } | 162 } |
| 157 AtomicString oldCSP = m_csp; | 163 AtomicString oldCSP = m_csp; |
| 158 m_csp = value; | 164 m_csp = value; |
| 159 if (m_csp != oldCSP) | 165 if (m_csp != oldCSP) |
| 160 frameOwnerPropertiesChanged(); | 166 frameOwnerPropertiesChanged(); |
| 167 } else if (RuntimeEnabledFeatures::featurePolicyEnabled() && |
| 168 name == allowAttr) { |
| 169 m_allow->setValue(value); |
| 161 } else { | 170 } else { |
| 162 if (name == srcAttr) | 171 if (name == srcAttr) |
| 163 logUpdateAttributeIfIsolatedWorldAndInDocument("iframe", params); | 172 logUpdateAttributeIfIsolatedWorldAndInDocument("iframe", params); |
| 164 HTMLFrameElementBase::parseAttribute(params); | 173 HTMLFrameElementBase::parseAttribute(params); |
| 165 } | 174 } |
| 166 } | 175 } |
| 167 | 176 |
| 168 bool HTMLIFrameElement::layoutObjectIsNeeded(const ComputedStyle& style) { | 177 bool HTMLIFrameElement::layoutObjectIsNeeded(const ComputedStyle& style) { |
| 169 return contentFrame() && HTMLElement::layoutObjectIsNeeded(style); | 178 return contentFrame() && HTMLElement::layoutObjectIsNeeded(style); |
| 170 } | 179 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 setSandboxFlags(m_sandbox->value().isNull() | 222 setSandboxFlags(m_sandbox->value().isNull() |
| 214 ? SandboxNone | 223 ? SandboxNone |
| 215 : parseSandboxPolicy(m_sandbox->tokens(), invalidTokens)); | 224 : parseSandboxPolicy(m_sandbox->tokens(), invalidTokens)); |
| 216 if (!invalidTokens.isNull()) | 225 if (!invalidTokens.isNull()) |
| 217 document().addConsoleMessage(ConsoleMessage::create( | 226 document().addConsoleMessage(ConsoleMessage::create( |
| 218 OtherMessageSource, ErrorMessageLevel, | 227 OtherMessageSource, ErrorMessageLevel, |
| 219 "Error while parsing the 'sandbox' attribute: " + invalidTokens)); | 228 "Error while parsing the 'sandbox' attribute: " + invalidTokens)); |
| 220 setSynchronizedLazyAttribute(sandboxAttr, m_sandbox->value()); | 229 setSynchronizedLazyAttribute(sandboxAttr, m_sandbox->value()); |
| 221 } | 230 } |
| 222 | 231 |
| 232 void HTMLIFrameElement::allowValueWasSet() { |
| 233 String invalidTokens; |
| 234 m_allowedFeatureNames = m_allow->parseAllowedFeatureNames(invalidTokens); |
| 235 if (!invalidTokens.isNull()) { |
| 236 document().addConsoleMessage(ConsoleMessage::create( |
| 237 OtherMessageSource, ErrorMessageLevel, |
| 238 "Error while parsing the 'allow' attribute: " + invalidTokens)); |
| 239 } |
| 240 setSynchronizedLazyAttribute(allowAttr, m_allow->value()); |
| 241 // TODO(lunalu): Once allowedFeatureNames is passed to frame owner, call |
| 242 // frameOwnerPropertiesChanged. |
| 243 } |
| 244 |
| 223 ReferrerPolicy HTMLIFrameElement::referrerPolicyAttribute() { | 245 ReferrerPolicy HTMLIFrameElement::referrerPolicyAttribute() { |
| 224 return m_referrerPolicy; | 246 return m_referrerPolicy; |
| 225 } | 247 } |
| 226 | 248 |
| 227 bool HTMLIFrameElement::initializePermissionsAttribute() { | 249 bool HTMLIFrameElement::initializePermissionsAttribute() { |
| 228 if (!RuntimeEnabledFeatures::permissionDelegationEnabled()) | 250 if (!RuntimeEnabledFeatures::permissionDelegationEnabled()) |
| 229 return false; | 251 return false; |
| 230 | 252 |
| 231 if (!m_permissions) | 253 if (!m_permissions) |
| 232 m_permissions = HTMLIFrameElementPermissions::create(this); | 254 m_permissions = HTMLIFrameElementPermissions::create(this); |
| 233 return true; | 255 return true; |
| 234 } | 256 } |
| 235 | 257 |
| 236 } // namespace blink | 258 } // namespace blink |
| OLD | NEW |