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, 2011, 2012 Apple Inc. All r
ights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2011, 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) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. | 8 * Copyright (C) 2008, 2009, 2011, 2012 Google Inc. All rights reserved. |
9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. | 10 * Copyright (C) Research In Motion Limited 2010-2011. All rights reserved. |
(...skipping 4706 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4717 // An algorithm is allowed to show a pop-up if, in the task in which t
he algorithm is running, either: | 4717 // An algorithm is allowed to show a pop-up if, in the task in which t
he algorithm is running, either: |
4718 // - an activation behavior is currently being processed whose click e
vent was trusted, or | 4718 // - an activation behavior is currently being processed whose click e
vent was trusted, or |
4719 // - the event listener for a trusted click event is being handled. | 4719 // - the event listener for a trusted click event is being handled. |
4720 if (!ScriptController::processingUserGesture()) | 4720 if (!ScriptController::processingUserGesture()) |
4721 break; | 4721 break; |
4722 | 4722 |
4723 // There is a previously-established user preference, security risk, or
platform limitation. | 4723 // There is a previously-established user preference, security risk, or
platform limitation. |
4724 if (!page() || !page()->settings()->fullScreenEnabled()) | 4724 if (!page() || !page()->settings()->fullScreenEnabled()) |
4725 break; | 4725 break; |
4726 | 4726 |
4727 if (!page()->chrome()->client()->supportsFullScreenForElement(element, f
lags & Element::ALLOW_KEYBOARD_INPUT)) { | |
4728 // The new full screen API does not accept a "flags" parameter, so f
all back to disallowing | |
4729 // keyboard input if the chrome client refuses to allow keyboard inp
ut. | |
4730 if (!inLegacyMozillaMode && flags & Element::ALLOW_KEYBOARD_INPUT) { | |
4731 flags &= ~Element::ALLOW_KEYBOARD_INPUT; | |
4732 if (!page()->chrome()->client()->supportsFullScreenForElement(el
ement, false)) | |
4733 break; | |
4734 } else | |
4735 break; | |
4736 } | |
4737 | |
4738 // 2. Let doc be element's node document. (i.e. "this") | 4727 // 2. Let doc be element's node document. (i.e. "this") |
4739 Document* currentDoc = this; | 4728 Document* currentDoc = this; |
4740 | 4729 |
4741 // 3. Let docs be all doc's ancestor browsing context's documents (if an
y) and doc. | 4730 // 3. Let docs be all doc's ancestor browsing context's documents (if an
y) and doc. |
4742 Deque<Document*> docs; | 4731 Deque<Document*> docs; |
4743 | 4732 |
4744 do { | 4733 do { |
4745 docs.prepend(currentDoc); | 4734 docs.prepend(currentDoc); |
4746 currentDoc = currentDoc->ownerElement() ? currentDoc->ownerElement()
->document() : 0; | 4735 currentDoc = currentDoc->ownerElement() ? currentDoc->ownerElement()
->document() : 0; |
4747 } while (currentDoc); | 4736 } while (currentDoc); |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4995 else if (renderer && m_fullScreenRenderer && m_fullScreenRenderer->placehold
er()) { | 4984 else if (renderer && m_fullScreenRenderer && m_fullScreenRenderer->placehold
er()) { |
4996 RenderBlock* placeholder = m_fullScreenRenderer->placeholder(); | 4985 RenderBlock* placeholder = m_fullScreenRenderer->placeholder(); |
4997 renderer->createPlaceholder(RenderStyle::clone(placeholder->style()), pl
aceholder->frameRect()); | 4986 renderer->createPlaceholder(RenderStyle::clone(placeholder->style()), pl
aceholder->frameRect()); |
4998 } | 4987 } |
4999 | 4988 |
5000 if (m_fullScreenRenderer) | 4989 if (m_fullScreenRenderer) |
5001 m_fullScreenRenderer->destroy(); | 4990 m_fullScreenRenderer->destroy(); |
5002 ASSERT(!m_fullScreenRenderer); | 4991 ASSERT(!m_fullScreenRenderer); |
5003 | 4992 |
5004 m_fullScreenRenderer = renderer; | 4993 m_fullScreenRenderer = renderer; |
5005 | |
5006 // This notification can come in after the page has been destroyed. | |
5007 if (page()) | |
5008 page()->chrome()->client()->fullScreenRendererChanged(m_fullScreenRender
er); | |
5009 } | 4994 } |
5010 | 4995 |
5011 void Document::fullScreenRendererDestroyed() | 4996 void Document::fullScreenRendererDestroyed() |
5012 { | 4997 { |
5013 m_fullScreenRenderer = 0; | 4998 m_fullScreenRenderer = 0; |
5014 | |
5015 if (page()) | |
5016 page()->chrome()->client()->fullScreenRendererChanged(0); | |
5017 } | 4999 } |
5018 | 5000 |
5019 void Document::setFullScreenRendererSize(const IntSize& size) | 5001 void Document::setFullScreenRendererSize(const IntSize& size) |
5020 { | 5002 { |
5021 ASSERT(m_fullScreenRenderer); | 5003 ASSERT(m_fullScreenRenderer); |
5022 if (!m_fullScreenRenderer) | 5004 if (!m_fullScreenRenderer) |
5023 return; | 5005 return; |
5024 | 5006 |
5025 if (m_fullScreenRenderer) { | 5007 if (m_fullScreenRenderer) { |
5026 RefPtr<RenderStyle> newStyle = RenderStyle::clone(m_fullScreenRenderer->
style()); | 5008 RefPtr<RenderStyle> newStyle = RenderStyle::clone(m_fullScreenRenderer->
style()); |
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5692 | 5674 |
5693 PassRefPtr<FontLoader> Document::fontloader() | 5675 PassRefPtr<FontLoader> Document::fontloader() |
5694 { | 5676 { |
5695 if (!m_fontloader) | 5677 if (!m_fontloader) |
5696 m_fontloader = FontLoader::create(this); | 5678 m_fontloader = FontLoader::create(this); |
5697 return m_fontloader; | 5679 return m_fontloader; |
5698 } | 5680 } |
5699 | 5681 |
5700 void Document::didAssociateFormControl(Element* element) | 5682 void Document::didAssociateFormControl(Element* element) |
5701 { | 5683 { |
5702 if (!frame() || !frame()->page() || !frame()->page()->chrome()->client()->sh
ouldNotifyOnFormChanges()) | 5684 if (!frame() || !frame()->page()) |
5703 return; | 5685 return; |
5704 m_associatedFormControls.add(element); | 5686 m_associatedFormControls.add(element); |
5705 if (!m_didAssociateFormControlsTimer.isActive()) | 5687 if (!m_didAssociateFormControlsTimer.isActive()) |
5706 m_didAssociateFormControlsTimer.startOneShot(0); | 5688 m_didAssociateFormControlsTimer.startOneShot(0); |
5707 } | 5689 } |
5708 | 5690 |
5709 void Document::didAssociateFormControlsTimerFired(Timer<Document>* timer) | 5691 void Document::didAssociateFormControlsTimerFired(Timer<Document>* timer) |
5710 { | 5692 { |
5711 ASSERT_UNUSED(timer, timer == &m_didAssociateFormControlsTimer); | 5693 ASSERT_UNUSED(timer, timer == &m_didAssociateFormControlsTimer); |
5712 if (!frame() || !frame()->page()) | 5694 if (!frame() || !frame()->page()) |
5713 return; | 5695 return; |
5714 | 5696 |
5715 Vector<RefPtr<Element> > associatedFormControls; | 5697 Vector<RefPtr<Element> > associatedFormControls; |
5716 copyToVector(m_associatedFormControls, associatedFormControls); | 5698 copyToVector(m_associatedFormControls, associatedFormControls); |
5717 | 5699 |
5718 frame()->page()->chrome()->client()->didAssociateFormControls(associatedForm
Controls); | 5700 frame()->page()->chrome()->client()->didAssociateFormControls(associatedForm
Controls); |
5719 m_associatedFormControls.clear(); | 5701 m_associatedFormControls.clear(); |
5720 } | 5702 } |
5721 | 5703 |
5722 } // namespace WebCore | 5704 } // namespace WebCore |
OLD | NEW |