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 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 , m_isAnimatingFullScreen(false) | 491 , m_isAnimatingFullScreen(false) |
492 #endif | 492 #endif |
493 , m_loadEventDelayCount(0) | 493 , m_loadEventDelayCount(0) |
494 , m_loadEventDelayTimer(this, &Document::loadEventDelayTimerFired) | 494 , m_loadEventDelayTimer(this, &Document::loadEventDelayTimerFired) |
495 , m_referrerPolicy(ReferrerPolicyDefault) | 495 , m_referrerPolicy(ReferrerPolicyDefault) |
496 , m_directionSetOnDocumentElement(false) | 496 , m_directionSetOnDocumentElement(false) |
497 , m_writingModeSetOnDocumentElement(false) | 497 , m_writingModeSetOnDocumentElement(false) |
498 , m_writeRecursionIsTooDeep(false) | 498 , m_writeRecursionIsTooDeep(false) |
499 , m_writeRecursionDepth(0) | 499 , m_writeRecursionDepth(0) |
500 , m_wheelEventHandlerCount(0) | 500 , m_wheelEventHandlerCount(0) |
501 #if ENABLE(TOUCH_EVENTS) | |
502 , m_touchEventHandlerCount(0) | |
503 #endif | |
504 , m_pendingTasksTimer(this, &Document::pendingTasksTimerFired) | 501 , m_pendingTasksTimer(this, &Document::pendingTasksTimerFired) |
505 , m_scheduledTasksAreSuspended(false) | 502 , m_scheduledTasksAreSuspended(false) |
506 , m_visualUpdatesAllowed(true) | 503 , m_visualUpdatesAllowed(true) |
507 , m_visualUpdatesSuppressionTimer(this, &Document::visualUpdatesSuppressionT
imerFired) | 504 , m_visualUpdatesSuppressionTimer(this, &Document::visualUpdatesSuppressionT
imerFired) |
508 , m_sharedObjectPoolClearTimer(this, &Document::sharedObjectPoolClearTimerFi
red) | 505 , m_sharedObjectPoolClearTimer(this, &Document::sharedObjectPoolClearTimerFi
red) |
509 #ifndef NDEBUG | 506 #ifndef NDEBUG |
510 , m_didDispatchViewportPropertiesChanged(false) | 507 , m_didDispatchViewportPropertiesChanged(false) |
511 #endif | 508 #endif |
512 { | 509 { |
513 m_document = this; | 510 m_document = this; |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
606 Document::~Document() | 603 Document::~Document() |
607 { | 604 { |
608 ASSERT(!renderer()); | 605 ASSERT(!renderer()); |
609 ASSERT(!m_inPageCache); | 606 ASSERT(!m_inPageCache); |
610 ASSERT(!m_savedRenderer); | 607 ASSERT(!m_savedRenderer); |
611 ASSERT(m_ranges.isEmpty()); | 608 ASSERT(m_ranges.isEmpty()); |
612 ASSERT(!m_styleRecalcTimer.isActive()); | 609 ASSERT(!m_styleRecalcTimer.isActive()); |
613 ASSERT(!m_parentTreeScope); | 610 ASSERT(!m_parentTreeScope); |
614 ASSERT(!m_guardRefCount); | 611 ASSERT(!m_guardRefCount); |
615 | 612 |
| 613 #if ENABLE(TOUCH_EVENT_TRACKING) |
| 614 if (Document* ownerDocument = this->ownerDocument()) |
| 615 ownerDocument->didRemoveEventTargetNode(this); |
| 616 #endif |
616 // FIXME: Should we reset m_domWindow when we detach from the Frame? | 617 // FIXME: Should we reset m_domWindow when we detach from the Frame? |
617 if (m_domWindow) | 618 if (m_domWindow) |
618 m_domWindow->resetUnlessSuspendedForPageCache(); | 619 m_domWindow->resetUnlessSuspendedForPageCache(); |
619 | 620 |
620 m_scriptRunner.clear(); | 621 m_scriptRunner.clear(); |
621 | 622 |
622 histogramMutationEventUsage(m_listenerTypes); | 623 histogramMutationEventUsage(m_listenerTypes); |
623 | 624 |
624 removeAllEventListeners(); | 625 removeAllEventListeners(); |
625 | 626 |
(...skipping 4966 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5592 { | 5593 { |
5593 ASSERT(m_wheelEventHandlerCount > 0); | 5594 ASSERT(m_wheelEventHandlerCount > 0); |
5594 --m_wheelEventHandlerCount; | 5595 --m_wheelEventHandlerCount; |
5595 Frame* mainFrame = page() ? page()->mainFrame() : 0; | 5596 Frame* mainFrame = page() ? page()->mainFrame() : 0; |
5596 if (mainFrame) | 5597 if (mainFrame) |
5597 mainFrame->notifyChromeClientWheelEventHandlerCountChanged(); | 5598 mainFrame->notifyChromeClientWheelEventHandlerCountChanged(); |
5598 | 5599 |
5599 wheelEventHandlerCountChanged(this); | 5600 wheelEventHandlerCountChanged(this); |
5600 } | 5601 } |
5601 | 5602 |
5602 void Document::didAddTouchEventHandler() | 5603 void Document::didAddTouchEventHandler(Node* handler) |
5603 { | 5604 { |
5604 #if ENABLE(TOUCH_EVENTS) | 5605 #if ENABLE(TOUCH_EVENTS) |
5605 ++m_touchEventHandlerCount; | 5606 if (!m_touchEventTargets.get()) |
5606 if (m_touchEventHandlerCount > 1) | 5607 m_touchEventTargets = adoptPtr(new TouchEventTargetSet); |
| 5608 m_touchEventTargets->add(handler); |
| 5609 if (Document* parent = parentDocument()) { |
| 5610 parent->didAddTouchEventHandler(this); |
5607 return; | 5611 return; |
5608 if (Page* page = this->page()) | 5612 } |
5609 page->chrome()->client()->needTouchEvents(true); | 5613 if (Page* page = this->page()) { |
| 5614 #if ENABLE(TOUCH_EVENT_TRACKING) |
| 5615 if (ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordina
tor()) |
| 5616 scrollingCoordinator->touchEventTargetRectsDidChange(this); |
| 5617 #endif |
| 5618 if (m_touchEventTargets->size() == 1) |
| 5619 page->chrome()->client()->needTouchEvents(true); |
| 5620 } |
| 5621 #else |
| 5622 UNUSED_PARAM(handler); |
5610 #endif | 5623 #endif |
5611 } | 5624 } |
5612 | 5625 |
5613 void Document::didRemoveTouchEventHandler() | 5626 void Document::didRemoveTouchEventHandler(Node* handler) |
5614 { | 5627 { |
5615 #if ENABLE(TOUCH_EVENTS) | 5628 #if ENABLE(TOUCH_EVENTS) |
5616 ASSERT(m_touchEventHandlerCount); | 5629 if (!m_touchEventTargets.get()) |
5617 --m_touchEventHandlerCount; | |
5618 if (m_touchEventHandlerCount) | |
5619 return; | 5630 return; |
| 5631 ASSERT(m_touchEventTargets->contains(handler)); |
| 5632 m_touchEventTargets->remove(handler); |
| 5633 if (Document* parent = parentDocument()) { |
| 5634 parent->didRemoveTouchEventHandler(this); |
| 5635 return; |
| 5636 } |
5620 | 5637 |
5621 Page* page = this->page(); | 5638 Page* page = this->page(); |
5622 if (!page) | 5639 if (!page) |
5623 return; | 5640 return; |
| 5641 #if ENABLE(TOUCH_EVENT_TRACKING) |
| 5642 if (ScrollingCoordinator* scrollingCoordinator = page->scrollingCoordinator(
)) |
| 5643 scrollingCoordinator->touchEventTargetRectsDidChange(this); |
| 5644 #endif |
| 5645 if (m_touchEventTargets->size()) |
| 5646 return; |
5624 for (const Frame* frame = page->mainFrame(); frame; frame = frame->tree()->t
raverseNext()) { | 5647 for (const Frame* frame = page->mainFrame(); frame; frame = frame->tree()->t
raverseNext()) { |
5625 if (frame->document() && frame->document()->touchEventHandlerCount()) | 5648 if (frame->document() && frame->document()->hasTouchEventHandlers()) |
5626 return; | 5649 return; |
5627 } | 5650 } |
5628 page->chrome()->client()->needTouchEvents(false); | 5651 page->chrome()->client()->needTouchEvents(false); |
| 5652 #else |
| 5653 UNUSED_PARAM(handler); |
5629 #endif | 5654 #endif |
5630 } | 5655 } |
5631 | 5656 |
| 5657 #if ENABLE(TOUCH_EVENT_TRACKING) |
| 5658 void Document::didRemoveEventTargetNode(Node* handler) |
| 5659 { |
| 5660 if (m_touchEventTargets.get()) |
| 5661 m_touchEventTargets->removeAll(handler); |
| 5662 } |
| 5663 #endif |
| 5664 |
5632 HTMLIFrameElement* Document::seamlessParentIFrame() const | 5665 HTMLIFrameElement* Document::seamlessParentIFrame() const |
5633 { | 5666 { |
5634 if (!shouldDisplaySeamlesslyWithParent()) | 5667 if (!shouldDisplaySeamlesslyWithParent()) |
5635 return 0; | 5668 return 0; |
5636 | 5669 |
5637 HTMLFrameOwnerElement* ownerElement = this->ownerElement(); | 5670 HTMLFrameOwnerElement* ownerElement = this->ownerElement(); |
5638 ASSERT(ownerElement->hasTagName(iframeTag)); | 5671 ASSERT(ownerElement->hasTagName(iframeTag)); |
5639 return static_cast<HTMLIFrameElement*>(ownerElement); | 5672 return static_cast<HTMLIFrameElement*>(ownerElement); |
5640 } | 5673 } |
5641 | 5674 |
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5938 m_templateContentsOwnerDocument = HTMLDocument::create(0, blankURL()
); | 5971 m_templateContentsOwnerDocument = HTMLDocument::create(0, blankURL()
); |
5939 else | 5972 else |
5940 m_templateContentsOwnerDocument = Document::create(0, blankURL()); | 5973 m_templateContentsOwnerDocument = Document::create(0, blankURL()); |
5941 } | 5974 } |
5942 | 5975 |
5943 return m_templateContentsOwnerDocument.get(); | 5976 return m_templateContentsOwnerDocument.get(); |
5944 } | 5977 } |
5945 #endif | 5978 #endif |
5946 | 5979 |
5947 } // namespace WebCore | 5980 } // namespace WebCore |
OLD | NEW |