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

Side by Side Diff: Source/core/dom/FullscreenElementStack.cpp

Issue 317493002: Change FrameTree to return Frames instead of LocalFrames. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: dcheng's comment addressed Created 6 years, 6 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
« no previous file with comments | « Source/core/dom/DocumentInit.cpp ('k') | Source/core/dom/TreeScope.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 7 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
9 * Copyright (C) 2013 Google Inc. All rights reserved. 9 * Copyright (C) 2013 Google Inc. All rights reserved.
10 * 10 *
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 // is not an ancestor of the context object. (NOTE: Ignore this requirem ent if the request was 182 // is not an ancestor of the context object. (NOTE: Ignore this requirem ent if the request was
183 // made via the legacy Mozilla-style API.) 183 // made via the legacy Mozilla-style API.)
184 if (!m_fullScreenElementStack.isEmpty() && !inLegacyMozillaMode) { 184 if (!m_fullScreenElementStack.isEmpty() && !inLegacyMozillaMode) {
185 Element* lastElementOnStack = m_fullScreenElementStack.last().get(); 185 Element* lastElementOnStack = m_fullScreenElementStack.last().get();
186 if (lastElementOnStack == element || !lastElementOnStack->contains(e lement)) 186 if (lastElementOnStack == element || !lastElementOnStack->contains(e lement))
187 break; 187 break;
188 } 188 }
189 189
190 // A descendant browsing context's document has a non-empty fullscreen e lement stack. 190 // A descendant browsing context's document has a non-empty fullscreen e lement stack.
191 bool descendentHasNonEmptyStack = false; 191 bool descendentHasNonEmptyStack = false;
192 for (LocalFrame* descendant = document()->frame() ? document()->frame()- >tree().traverseNext() : 0; descendant; descendant = descendant->tree().traverse Next()) { 192 for (Frame* descendant = document()->frame() ? document()->frame()->tree ().traverseNext() : 0; descendant; descendant = descendant->tree().traverseNext( )) {
193 ASSERT(descendant->document()); 193 if (!descendant->isLocalFrame())
194 if (fullscreenElementFrom(*descendant->document())) { 194 continue;
195 ASSERT(toLocalFrame(descendant)->document());
196 if (fullscreenElementFrom(*toLocalFrame(descendant)->document())) {
195 descendentHasNonEmptyStack = true; 197 descendentHasNonEmptyStack = true;
196 break; 198 break;
197 } 199 }
198 } 200 }
199 if (descendentHasNonEmptyStack && !inLegacyMozillaMode) 201 if (descendentHasNonEmptyStack && !inLegacyMozillaMode)
200 break; 202 break;
201 203
202 // This algorithm is not allowed to show a pop-up: 204 // This algorithm is not allowed to show a pop-up:
203 // An algorithm is allowed to show a pop-up if, in the task in which t he algorithm is running, either: 205 // An algorithm is allowed to show a pop-up if, in the task in which t he algorithm is running, either:
204 // - an activation behavior is currently being processed whose click e vent was trusted, or 206 // - an activation behavior is currently being processed whose click e vent was trusted, or
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 return; 297 return;
296 298
297 // 2. If doc's fullscreen element stack is empty, terminate these steps. 299 // 2. If doc's fullscreen element stack is empty, terminate these steps.
298 if (m_fullScreenElementStack.isEmpty()) 300 if (m_fullScreenElementStack.isEmpty())
299 return; 301 return;
300 302
301 // 3. Let descendants be all the doc's descendant browsing context's documen ts with a non-empty fullscreen 303 // 3. Let descendants be all the doc's descendant browsing context's documen ts with a non-empty fullscreen
302 // element stack (if any), ordered so that the child of the doc is last and the document furthest 304 // element stack (if any), ordered so that the child of the doc is last and the document furthest
303 // away from the doc is first. 305 // away from the doc is first.
304 WillBeHeapDeque<RefPtrWillBeMember<Document> > descendants; 306 WillBeHeapDeque<RefPtrWillBeMember<Document> > descendants;
305 for (LocalFrame* descendant = document()->frame() ? document()->frame()->tr ee().traverseNext() : 0; descendant; descendant = descendant->tree().traverseNex t()) { 307 for (Frame* descendant = document()->frame() ? document()->frame()->tree().t raverseNext() : 0; descendant; descendant = descendant->tree().traverseNext()) {
306 ASSERT(descendant->document()); 308 if (!descendant->isLocalFrame())
307 if (fullscreenElementFrom(*descendant->document())) 309 continue;
308 descendants.prepend(descendant->document()); 310 ASSERT(toLocalFrame(descendant)->document());
311 if (fullscreenElementFrom(*toLocalFrame(descendant)->document()))
312 descendants.prepend(toLocalFrame(descendant)->document());
309 } 313 }
310 314
311 // 4. For each descendant in descendants, empty descendant's fullscreen elem ent stack, and queue a 315 // 4. For each descendant in descendants, empty descendant's fullscreen elem ent stack, and queue a
312 // task to fire an event named fullscreenchange with its bubbles attribute s et to true on descendant. 316 // task to fire an event named fullscreenchange with its bubbles attribute s et to true on descendant.
313 for (WillBeHeapDeque<RefPtrWillBeMember<Document> >::iterator i = descendant s.begin(); i != descendants.end(); ++i) { 317 for (WillBeHeapDeque<RefPtrWillBeMember<Document> >::iterator i = descendant s.begin(); i != descendants.end(); ++i) {
314 ASSERT(*i); 318 ASSERT(*i);
315 from(**i).clearFullscreenElementStack(); 319 from(**i).clearFullscreenElementStack();
316 addDocumentToFullScreenChangeEventQueue(i->get()); 320 addDocumentToFullScreenChangeEventQueue(i->get());
317 } 321 }
318 322
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 void FullscreenElementStack::trace(Visitor* visitor) 592 void FullscreenElementStack::trace(Visitor* visitor)
589 { 593 {
590 visitor->trace(m_fullScreenElement); 594 visitor->trace(m_fullScreenElement);
591 visitor->trace(m_fullScreenElementStack); 595 visitor->trace(m_fullScreenElementStack);
592 visitor->trace(m_fullScreenChangeEventTargetQueue); 596 visitor->trace(m_fullScreenChangeEventTargetQueue);
593 visitor->trace(m_fullScreenErrorEventTargetQueue); 597 visitor->trace(m_fullScreenErrorEventTargetQueue);
594 DocumentSupplement::trace(visitor); 598 DocumentSupplement::trace(visitor);
595 } 599 }
596 600
597 } // namespace WebCore 601 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/dom/DocumentInit.cpp ('k') | Source/core/dom/TreeScope.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698