Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: third_party/WebKit/Source/core/dom/Element.cpp

Issue 1914643005: Add support for entering/exiting HTML fullscreen from OOPIFs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase (and deal with gfx:: -> display:: rename). Add replication CL as dependent and use its allowfullscreen test file. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 static Element* parentCrossingFrameBoundaries(Element* element) 3059 static Element* parentCrossingFrameBoundaries(Element* element)
dcheng 2016/05/18 01:04:34 This function should probably be renamed, it's not
alexmos 2016/05/18 15:08:33 I agree the name isn't great, but it was hard to c
dcheng 2016/05/19 00:21:34 Ehh.... maybe? I'm not too thrilled with either na
alexmos 2016/05/19 01:08:25 OK, done.
3060 { 3060 {
3061 DCHECK(element); 3061 DCHECK(element);
3062 return element->parentElement() ? element->parentElement() : element->docume nt().localOwner(); 3062 if (element->parentElement())
3063 return element->parentElement();
3064
3065 Frame* frame = element->document().frame();
3066 if (!frame || !frame->owner())
3067 return nullptr;
3068
3069 // Find the next LocalFrame on the ancestor chain, and return the
3070 // corresponding <iframe> element for the remote child if it exists.
3071 while (frame->tree().parent() && frame->tree().parent()->isRemoteFrame())
3072 frame = frame->tree().parent();
3073
3074 if (frame->owner() && frame->owner()->isLocal())
3075 return toHTMLFrameOwnerElement(frame->owner());
3076
3077 return nullptr;
3063 } 3078 }
3064 3079
3065 void Element::setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(boo l flag) 3080 void Element::setContainsFullScreenElementOnAncestorsCrossingFrameBoundaries(boo l flag)
3066 { 3081 {
3067 for (Element* element = parentCrossingFrameBoundaries(this); element; elemen t = parentCrossingFrameBoundaries(element)) 3082 for (Element* element = parentCrossingFrameBoundaries(this); element; elemen t = parentCrossingFrameBoundaries(element))
3068 element->setContainsFullScreenElement(flag); 3083 element->setContainsFullScreenElement(flag);
3069 } 3084 }
3070 3085
3071 void Element::setIsInTopLayer(bool inTopLayer) 3086 void Element::setIsInTopLayer(bool inTopLayer)
3072 { 3087 {
(...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after
3707 3722
3708 DEFINE_TRACE_WRAPPERS(Element) 3723 DEFINE_TRACE_WRAPPERS(Element)
3709 { 3724 {
3710 if (hasRareData()) { 3725 if (hasRareData()) {
3711 visitor->traceWrappers(elementRareData()); 3726 visitor->traceWrappers(elementRareData());
3712 } 3727 }
3713 ContainerNode::traceWrappers(visitor); 3728 ContainerNode::traceWrappers(visitor);
3714 } 3729 }
3715 3730
3716 } // namespace blink 3731 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698