| 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) 2001 Peter Kelly (pmk@post.com) | 4 * (C) 2001 Peter Kelly (pmk@post.com) |
| 5 * (C) 2001 Dirk Mueller (mueller@kde.org) | 5 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 6 * (C) 2007 David Smith (catfish.man@gmail.com) | 6 * (C) 2007 David Smith (catfish.man@gmail.com) |
| 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. | 7 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. |
| 8 * (C) 2007 Eric Seidel (eric@webkit.org) | 8 * (C) 2007 Eric Seidel (eric@webkit.org) |
| 9 * | 9 * |
| 10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
| (...skipping 3038 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3049 setAttribute(attributeName, AtomicString::number(value)); | 3049 setAttribute(attributeName, AtomicString::number(value)); |
| 3050 } | 3050 } |
| 3051 | 3051 |
| 3052 void Element::setContainsFullScreenElement(bool flag) | 3052 void Element::setContainsFullScreenElement(bool flag) |
| 3053 { | 3053 { |
| 3054 setElementFlag(ContainsFullScreenElement, flag); | 3054 setElementFlag(ContainsFullScreenElement, flag); |
| 3055 document().styleEngine().ensureFullscreenUAStyle(); | 3055 document().styleEngine().ensureFullscreenUAStyle(); |
| 3056 pseudoStateChanged(CSSSelector::PseudoFullScreenAncestor); | 3056 pseudoStateChanged(CSSSelector::PseudoFullScreenAncestor); |
| 3057 } | 3057 } |
| 3058 | 3058 |
| 3059 // Unlike Node::parentNode, this can cross frame boundaries. | 3059 static Element* parentCrossingFrameBoundaries(Element* element) |
| 3060 static Element* nextAncestorElement(Element* element) | |
| 3061 { | 3060 { |
| 3062 DCHECK(element); | 3061 DCHECK(element); |
| 3063 if (element->parentElement()) | 3062 return element->parentElement() ? element->parentElement() : element->docume
nt().localOwner(); |
| 3064 return element->parentElement(); | |
| 3065 | |
| 3066 Frame* frame = element->document().frame(); | |
| 3067 if (!frame || !frame->owner()) | |
| 3068 return nullptr; | |
| 3069 | |
| 3070 // Find the next LocalFrame on the ancestor chain, and return the | |
| 3071 // corresponding <iframe> element for the remote child if it exists. | |
| 3072 while (frame->tree().parent() && frame->tree().parent()->isRemoteFrame()) | |
| 3073 frame = frame->tree().parent(); | |
| 3074 | |
| 3075 if (frame->owner() && frame->owner()->isLocal()) | |
| 3076 return toHTMLFrameOwnerElement(frame->owner()); | |
| 3077 | |
| 3078 return nullptr; | |
| 3079 } | 3063 } |
| 3080 | 3064 |
| 3081 void Element::setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(boo
l flag) | 3065 void Element::setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(boo
l flag) |
| 3082 { | 3066 { |
| 3083 for (Element* element = nextAncestorElement(this); element; element = nextAn
cestorElement(element)) | 3067 for (Element* element = parentCrossingFrameBoundaries(this); element; elemen
t = parentCrossingFrameBoundaries(element)) |
| 3084 element->setContainsFullScreenElement(flag); | 3068 element->setContainsFullScreenElement(flag); |
| 3085 } | 3069 } |
| 3086 | 3070 |
| 3087 void Element::setIsInTopLayer(bool inTopLayer) | 3071 void Element::setIsInTopLayer(bool inTopLayer) |
| 3088 { | 3072 { |
| 3089 if (isInTopLayer() == inTopLayer) | 3073 if (isInTopLayer() == inTopLayer) |
| 3090 return; | 3074 return; |
| 3091 setElementFlag(IsInTopLayer, inTopLayer); | 3075 setElementFlag(IsInTopLayer, inTopLayer); |
| 3092 | 3076 |
| 3093 // We must ensure a reattach occurs so the layoutObject is inserted in the c
orrect sibling order under LayoutView according to its | 3077 // We must ensure a reattach occurs so the layoutObject is inserted in the c
orrect sibling order under LayoutView according to its |
| (...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3723 | 3707 |
| 3724 DEFINE_TRACE_WRAPPERS(Element) | 3708 DEFINE_TRACE_WRAPPERS(Element) |
| 3725 { | 3709 { |
| 3726 if (hasRareData()) { | 3710 if (hasRareData()) { |
| 3727 visitor->traceWrappers(elementRareData()); | 3711 visitor->traceWrappers(elementRareData()); |
| 3728 } | 3712 } |
| 3729 ContainerNode::traceWrappers(visitor); | 3713 ContainerNode::traceWrappers(visitor); |
| 3730 } | 3714 } |
| 3731 | 3715 |
| 3732 } // namespace blink | 3716 } // namespace blink |
| OLD | NEW |