Chromium Code Reviews| 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 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 | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All |
| 7 * rights reserved. | 7 * rights reserved. |
| 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
| 9 * (http://www.torchmobile.com/) | 9 * (http://www.torchmobile.com/) |
| 10 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 10 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 22 * | 22 * |
| 23 * You should have received a copy of the GNU Library General Public License | 23 * You should have received a copy of the GNU Library General Public License |
| 24 * along with this library; see the file COPYING.LIB. If not, write to | 24 * along with this library; see the file COPYING.LIB. If not, write to |
| 25 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 25 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 26 * Boston, MA 02110-1301, USA. | 26 * Boston, MA 02110-1301, USA. |
| 27 * | 27 * |
| 28 */ | 28 */ |
| 29 | 29 |
| 30 #include "core/dom/Fullscreen.h" | 30 #include "core/dom/Fullscreen.h" |
| 31 | 31 |
| 32 #include "bindings/core/v8/ConditionalFeatures.h" | |
| 32 #include "core/dom/Document.h" | 33 #include "core/dom/Document.h" |
| 33 #include "core/dom/ElementTraversal.h" | 34 #include "core/dom/ElementTraversal.h" |
| 34 #include "core/dom/StyleEngine.h" | 35 #include "core/dom/StyleEngine.h" |
| 35 #include "core/events/Event.h" | 36 #include "core/events/Event.h" |
| 36 #include "core/frame/FrameHost.h" | 37 #include "core/frame/FrameHost.h" |
| 37 #include "core/frame/HostsUsingFeatures.h" | 38 #include "core/frame/HostsUsingFeatures.h" |
| 38 #include "core/frame/LocalFrame.h" | 39 #include "core/frame/LocalFrame.h" |
| 39 #include "core/frame/Settings.h" | 40 #include "core/frame/Settings.h" |
| 40 #include "core/frame/UseCounter.h" | 41 #include "core/frame/UseCounter.h" |
| 41 #include "core/html/HTMLIFrameElement.h" | 42 #include "core/html/HTMLIFrameElement.h" |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 301 // Ignore this request if the document is not in a live frame. | 302 // Ignore this request if the document is not in a live frame. |
| 302 if (!document.isActive()) | 303 if (!document.isActive()) |
| 303 return; | 304 return; |
| 304 | 305 |
| 305 // If |element| is on top of |doc|'s fullscreen element stack, terminate these | 306 // If |element| is on top of |doc|'s fullscreen element stack, terminate these |
| 306 // substeps. | 307 // substeps. |
| 307 if (&element == fullscreenElementFrom(document)) | 308 if (&element == fullscreenElementFrom(document)) |
| 308 return; | 309 return; |
| 309 | 310 |
| 310 do { | 311 do { |
| 312 Frame* frame = document.frame(); | |
|
foolip
2016/11/28 23:33:22
Making this part of fullscreenSupported should red
lunalu1
2016/12/01 20:10:07
Done.
| |
| 313 DCHECK(frame->isLocalFrame()); | |
| 314 if (!isFeatureEnabledInFrame(blink::kFullscreenFeature, | |
| 315 toLocalFrame(frame))) { | |
| 316 if (RuntimeEnabledFeatures::featurePolicyEnabled()) { | |
| 317 document.addConsoleMessage(ConsoleMessage::create( | |
| 318 JSMessageSource, WarningMessageLevel, | |
| 319 "Fullscreen API is not enabled in feature policy for this frame")); | |
|
foolip
2016/11/28 23:33:22
Is this the wording used for other features? "Full
lunalu1
2016/12/01 20:10:07
Done.
| |
| 320 break; | |
| 321 } | |
| 322 } | |
| 323 | |
| 311 // 1. If any of the following conditions are false, then terminate these | 324 // 1. If any of the following conditions are false, then terminate these |
| 312 // steps and queue a task to fire an event named fullscreenerror with its | 325 // steps and queue a task to fire an event named fullscreenerror with its |
| 313 // bubbles attribute set to true on the context object's node document: | 326 // bubbles attribute set to true on the context object's node document: |
| 314 | 327 |
| 315 // |element|'s namespace is the HTML namespace or |element| is an SVG | 328 // |element|'s namespace is the HTML namespace or |element| is an SVG |
| 316 // svg or MathML math element. | 329 // svg or MathML math element. |
| 317 // Note: MathML is not supported. | 330 // Note: MathML is not supported. |
| 318 if (!element.isHTMLElement() && !isSVGSVGElement(element)) | 331 if (!element.isHTMLElement() && !isSVGSVGElement(element)) |
| 319 break; | 332 break; |
| 320 | 333 |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 535 host->chromeClient().exitFullscreen(document.frame()); | 548 host->chromeClient().exitFullscreen(document.frame()); |
| 536 return; | 549 return; |
| 537 } | 550 } |
| 538 | 551 |
| 539 // Otherwise, notify the chrome of the new full screen element. | 552 // Otherwise, notify the chrome of the new full screen element. |
| 540 host->chromeClient().enterFullscreenForElement(newTop); | 553 host->chromeClient().enterFullscreenForElement(newTop); |
| 541 } | 554 } |
| 542 | 555 |
| 543 // https://fullscreen.spec.whatwg.org/#dom-document-fullscreenenabled | 556 // https://fullscreen.spec.whatwg.org/#dom-document-fullscreenenabled |
| 544 bool Fullscreen::fullscreenEnabled(Document& document) { | 557 bool Fullscreen::fullscreenEnabled(Document& document) { |
| 558 Frame* frame = document.frame(); | |
| 559 if (!isFeatureEnabledInFrame(blink::kFullscreenFeature, | |
| 560 toLocalFrame(frame))) { | |
| 561 if (RuntimeEnabledFeatures::featurePolicyEnabled()) { | |
| 562 document.addConsoleMessage(ConsoleMessage::create( | |
| 563 JSMessageSource, WarningMessageLevel, | |
| 564 "Fullscreen API is not enabled in feature policy for this frame")); | |
| 565 return false; | |
| 566 } | |
| 567 } | |
| 568 | |
| 545 // The fullscreenEnabled attribute's getter must return true if the context | 569 // The fullscreenEnabled attribute's getter must return true if the context |
| 546 // object is allowed to use the feature indicated by attribute name | 570 // object is allowed to use the feature indicated by attribute name |
| 547 // allowfullscreen and fullscreen is supported, and false otherwise. | 571 // allowfullscreen and fullscreen is supported, and false otherwise. |
| 548 return allowedToUseFullscreen(document.frame()) && | 572 if (!fullscreenIsSupported(document)) |
| 549 fullscreenIsSupported(document); | 573 return false; |
| 574 | |
| 575 return allowedToUseFullscreen(frame); | |
| 550 } | 576 } |
| 551 | 577 |
| 552 void Fullscreen::didEnterFullscreenForElement(Element* element) { | 578 void Fullscreen::didEnterFullscreenForElement(Element* element) { |
| 553 DCHECK(element); | 579 DCHECK(element); |
| 554 if (!document()->isActive()) | 580 if (!document()->isActive()) |
| 555 return; | 581 return; |
| 556 | 582 |
| 557 if (m_fullScreenLayoutObject) | 583 if (m_fullScreenLayoutObject) |
| 558 m_fullScreenLayoutObject->unwrapLayoutObject(); | 584 m_fullScreenLayoutObject->unwrapLayoutObject(); |
| 559 | 585 |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 762 | 788 |
| 763 DEFINE_TRACE(Fullscreen) { | 789 DEFINE_TRACE(Fullscreen) { |
| 764 visitor->trace(m_currentFullScreenElement); | 790 visitor->trace(m_currentFullScreenElement); |
| 765 visitor->trace(m_fullscreenElementStack); | 791 visitor->trace(m_fullscreenElementStack); |
| 766 visitor->trace(m_eventQueue); | 792 visitor->trace(m_eventQueue); |
| 767 Supplement<Document>::trace(visitor); | 793 Supplement<Document>::trace(visitor); |
| 768 ContextLifecycleObserver::trace(visitor); | 794 ContextLifecycleObserver::trace(visitor); |
| 769 } | 795 } |
| 770 | 796 |
| 771 } // namespace blink | 797 } // namespace blink |
| OLD | NEW |