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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 #include "core/dom/DocumentFragment.h" | 69 #include "core/dom/DocumentFragment.h" |
70 #include "core/dom/DocumentLifecycleObserver.h" | 70 #include "core/dom/DocumentLifecycleObserver.h" |
71 #include "core/dom/DocumentType.h" | 71 #include "core/dom/DocumentType.h" |
72 #include "core/dom/Element.h" | 72 #include "core/dom/Element.h" |
73 #include "core/dom/ElementDataCache.h" | 73 #include "core/dom/ElementDataCache.h" |
74 #include "core/dom/ElementRegistrationOptions.h" | 74 #include "core/dom/ElementRegistrationOptions.h" |
75 #include "core/dom/ElementTraversal.h" | 75 #include "core/dom/ElementTraversal.h" |
76 #include "core/dom/ExceptionCode.h" | 76 #include "core/dom/ExceptionCode.h" |
77 #include "core/dom/ExecutionContextTask.h" | 77 #include "core/dom/ExecutionContextTask.h" |
78 #include "core/dom/FrameRequestCallback.h" | 78 #include "core/dom/FrameRequestCallback.h" |
| 79 #include "core/dom/IntersectionObservationRegistry.h" |
79 #include "core/dom/LayoutTreeBuilderTraversal.h" | 80 #include "core/dom/LayoutTreeBuilderTraversal.h" |
80 #include "core/dom/MainThreadTaskRunner.h" | 81 #include "core/dom/MainThreadTaskRunner.h" |
81 #include "core/dom/Microtask.h" | 82 #include "core/dom/Microtask.h" |
82 #include "core/dom/MutationObserver.h" | 83 #include "core/dom/MutationObserver.h" |
83 #include "core/dom/NodeChildRemovalTracker.h" | 84 #include "core/dom/NodeChildRemovalTracker.h" |
84 #include "core/dom/NodeComputedStyle.h" | 85 #include "core/dom/NodeComputedStyle.h" |
85 #include "core/dom/NodeFilter.h" | 86 #include "core/dom/NodeFilter.h" |
86 #include "core/dom/NodeIterator.h" | 87 #include "core/dom/NodeIterator.h" |
87 #include "core/dom/NodeRareData.h" | 88 #include "core/dom/NodeRareData.h" |
88 #include "core/dom/NodeTraversal.h" | 89 #include "core/dom/NodeTraversal.h" |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
425 , m_isMobileDocument(false) | 426 , m_isMobileDocument(false) |
426 , m_layoutView(0) | 427 , m_layoutView(0) |
427 #if !ENABLE(OILPAN) | 428 #if !ENABLE(OILPAN) |
428 , m_weakFactory(this) | 429 , m_weakFactory(this) |
429 #endif | 430 #endif |
430 , m_contextDocument(initializer.contextDocument()) | 431 , m_contextDocument(initializer.contextDocument()) |
431 , m_hasFullscreenSupplement(false) | 432 , m_hasFullscreenSupplement(false) |
432 , m_loadEventDelayCount(0) | 433 , m_loadEventDelayCount(0) |
433 , m_loadEventDelayTimer(this, &Document::loadEventDelayTimerFired) | 434 , m_loadEventDelayTimer(this, &Document::loadEventDelayTimerFired) |
434 , m_pluginLoadingTimer(this, &Document::pluginLoadingTimerFired) | 435 , m_pluginLoadingTimer(this, &Document::pluginLoadingTimerFired) |
| 436 , m_deliverIntersectionObservationsTimer(this, &Document::deliverIntersectio
nObservationsTimerFired) |
435 , m_documentTiming(*this) | 437 , m_documentTiming(*this) |
436 , m_writeRecursionIsTooDeep(false) | 438 , m_writeRecursionIsTooDeep(false) |
437 , m_writeRecursionDepth(0) | 439 , m_writeRecursionDepth(0) |
438 , m_taskRunner(MainThreadTaskRunner::create(this)) | 440 , m_taskRunner(MainThreadTaskRunner::create(this)) |
439 , m_registrationContext(initializer.registrationContext(this)) | 441 , m_registrationContext(initializer.registrationContext(this)) |
440 , m_elementDataCacheClearTimer(this, &Document::elementDataCacheClearTimerFi
red) | 442 , m_elementDataCacheClearTimer(this, &Document::elementDataCacheClearTimerFi
red) |
441 , m_timeline(AnimationTimeline::create(this)) | 443 , m_timeline(AnimationTimeline::create(this)) |
442 , m_templateDocumentHost(nullptr) | 444 , m_templateDocumentHost(nullptr) |
443 , m_didAssociateFormControlsTimer(this, &Document::didAssociateFormControlsT
imerFired) | 445 , m_didAssociateFormControlsTimer(this, &Document::didAssociateFormControlsT
imerFired) |
444 , m_timers(Platform::current()->currentThread()->scheduler()->timerTaskRunne
r()->adoptClone()) | 446 , m_timers(Platform::current()->currentThread()->scheduler()->timerTaskRunne
r()->adoptClone()) |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 // FIXME: consider using ActiveDOMObject. | 597 // FIXME: consider using ActiveDOMObject. |
596 if (m_scriptedAnimationController) | 598 if (m_scriptedAnimationController) |
597 m_scriptedAnimationController->clearDocumentPointer(); | 599 m_scriptedAnimationController->clearDocumentPointer(); |
598 m_scriptedAnimationController.clear(); | 600 m_scriptedAnimationController.clear(); |
599 | 601 |
600 m_scriptedIdleTaskController.clear(); | 602 m_scriptedIdleTaskController.clear(); |
601 | 603 |
602 if (svgExtensions()) | 604 if (svgExtensions()) |
603 accessSVGExtensions().pauseAnimations(); | 605 accessSVGExtensions().pauseAnimations(); |
604 | 606 |
| 607 m_deliverIntersectionObservationsTimer.stop(); |
| 608 |
605 m_lifecycle.advanceTo(DocumentLifecycle::Disposed); | 609 m_lifecycle.advanceTo(DocumentLifecycle::Disposed); |
606 DocumentLifecycleNotifier::notifyDocumentWasDisposed(); | 610 DocumentLifecycleNotifier::notifyDocumentWasDisposed(); |
607 | 611 |
608 m_canvasFontCache.clear(); | 612 m_canvasFontCache.clear(); |
609 } | 613 } |
610 #endif | 614 #endif |
611 | 615 |
612 SelectorQueryCache& Document::selectorQueryCache() | 616 SelectorQueryCache& Document::selectorQueryCache() |
613 { | 617 { |
614 if (!m_selectorQueryCache) | 618 if (!m_selectorQueryCache) |
(...skipping 3863 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4478 | 4482 |
4479 ASSERT(doc); | 4483 ASSERT(doc); |
4480 return *doc; | 4484 return *doc; |
4481 } | 4485 } |
4482 | 4486 |
4483 WeakPtrWillBeRawPtr<Document> Document::contextDocument() | 4487 WeakPtrWillBeRawPtr<Document> Document::contextDocument() |
4484 { | 4488 { |
4485 if (m_contextDocument) | 4489 if (m_contextDocument) |
4486 return m_contextDocument; | 4490 return m_contextDocument; |
4487 if (m_frame) { | 4491 if (m_frame) { |
4488 #if ENABLE(OILPAN) | 4492 return createWeakPtr(); |
4489 return this; | |
4490 #else | |
4491 return m_weakFactory.createWeakPtr(); | |
4492 #endif | |
4493 } | 4493 } |
4494 return nullptr; | 4494 return nullptr; |
4495 } | 4495 } |
4496 | 4496 |
4497 PassRefPtrWillBeRawPtr<Attr> Document::createAttribute(const AtomicString& name,
ExceptionState& exceptionState) | 4497 PassRefPtrWillBeRawPtr<Attr> Document::createAttribute(const AtomicString& name,
ExceptionState& exceptionState) |
4498 { | 4498 { |
4499 if (isHTMLDocument() && name != name.lower()) | 4499 if (isHTMLDocument() && name != name.lower()) |
4500 UseCounter::count(*this, UseCounter::HTMLDocumentCreateAttributeNameNotL
owercase); | 4500 UseCounter::count(*this, UseCounter::HTMLDocumentCreateAttributeNameNotL
owercase); |
4501 return createAttributeNS(nullAtom, name, exceptionState, true); | 4501 return createAttributeNS(nullAtom, name, exceptionState, true); |
4502 } | 4502 } |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4959 { | 4959 { |
4960 if (equalIgnoringCase(dnsPrefetchControl, "on") && !m_haveExplicitlyDisabled
DNSPrefetch) { | 4960 if (equalIgnoringCase(dnsPrefetchControl, "on") && !m_haveExplicitlyDisabled
DNSPrefetch) { |
4961 m_isDNSPrefetchEnabled = true; | 4961 m_isDNSPrefetchEnabled = true; |
4962 return; | 4962 return; |
4963 } | 4963 } |
4964 | 4964 |
4965 m_isDNSPrefetchEnabled = false; | 4965 m_isDNSPrefetchEnabled = false; |
4966 m_haveExplicitlyDisabledDNSPrefetch = true; | 4966 m_haveExplicitlyDisabledDNSPrefetch = true; |
4967 } | 4967 } |
4968 | 4968 |
| 4969 WeakPtrWillBeRawPtr<Document> Document::createWeakPtr() |
| 4970 { |
| 4971 #if ENABLE(OILPAN) |
| 4972 return this; |
| 4973 #else |
| 4974 return m_weakFactory.createWeakPtr(); |
| 4975 #endif |
| 4976 } |
| 4977 |
| 4978 IntersectionObservationRegistry* Document::intersectionObservationRegistry() |
| 4979 { |
| 4980 if (!m_intersectionObservationRegistry) |
| 4981 m_intersectionObservationRegistry = new IntersectionObservationRegistry(
m_deliverIntersectionObservationsTimer); |
| 4982 return m_intersectionObservationRegistry.get(); |
| 4983 } |
| 4984 |
| 4985 void Document::deliverIntersectionObservationsTimerFired(Timer<Document>*) |
| 4986 { |
| 4987 ASSERT(isMainThread()); |
| 4988 ASSERT(m_intersectionObservationRegistry); |
| 4989 m_intersectionObservationRegistry->deliverIntersectionObservations(); |
| 4990 } |
| 4991 |
4969 void Document::reportBlockedScriptExecutionToInspector(const String& directiveTe
xt) | 4992 void Document::reportBlockedScriptExecutionToInspector(const String& directiveTe
xt) |
4970 { | 4993 { |
4971 InspectorInstrumentation::scriptExecutionBlockedByCSP(this, directiveText); | 4994 InspectorInstrumentation::scriptExecutionBlockedByCSP(this, directiveText); |
4972 } | 4995 } |
4973 | 4996 |
4974 void Document::addConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> consoleM
essage) | 4997 void Document::addConsoleMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> consoleM
essage) |
4975 { | 4998 { |
4976 if (!isContextThread()) { | 4999 if (!isContextThread()) { |
4977 m_taskRunner->postTask(BLINK_FROM_HERE, AddConsoleMessageTask::create(co
nsoleMessage->source(), consoleMessage->level(), consoleMessage->message())); | 5000 m_taskRunner->postTask(BLINK_FROM_HERE, AddConsoleMessageTask::create(co
nsoleMessage->source(), consoleMessage->level(), consoleMessage->message())); |
4978 return; | 5001 return; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5016 void Document::tasksWereResumed() | 5039 void Document::tasksWereResumed() |
5017 { | 5040 { |
5018 scriptRunner()->resume(); | 5041 scriptRunner()->resume(); |
5019 | 5042 |
5020 if (m_parser) | 5043 if (m_parser) |
5021 m_parser->resumeScheduledTasks(); | 5044 m_parser->resumeScheduledTasks(); |
5022 if (m_scriptedAnimationController) | 5045 if (m_scriptedAnimationController) |
5023 m_scriptedAnimationController->resume(); | 5046 m_scriptedAnimationController->resume(); |
5024 | 5047 |
5025 MutationObserver::resumeSuspendedObservers(); | 5048 MutationObserver::resumeSuspendedObservers(); |
| 5049 if (m_intersectionObservationRegistry) |
| 5050 m_intersectionObservationRegistry->resumeSuspendedIntersectionObservers(
); |
5026 if (m_domWindow) | 5051 if (m_domWindow) |
5027 DOMWindowPerformance::performance(*m_domWindow)->resumeSuspendedObserver
s(); | 5052 DOMWindowPerformance::performance(*m_domWindow)->resumeSuspendedObserver
s(); |
5028 } | 5053 } |
5029 | 5054 |
5030 // FIXME: suspendScheduledTasks(), resumeScheduledTasks(), tasksNeedSuspension() | 5055 // FIXME: suspendScheduledTasks(), resumeScheduledTasks(), tasksNeedSuspension() |
5031 // should be moved to LocalDOMWindow once it inherits ExecutionContext | 5056 // should be moved to LocalDOMWindow once it inherits ExecutionContext |
5032 void Document::suspendScheduledTasks() | 5057 void Document::suspendScheduledTasks() |
5033 { | 5058 { |
5034 ExecutionContext::suspendScheduledTasks(); | 5059 ExecutionContext::suspendScheduledTasks(); |
5035 m_taskRunner->suspend(); | 5060 m_taskRunner->suspend(); |
(...skipping 763 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5799 visitor->trace(m_timers); | 5824 visitor->trace(m_timers); |
5800 visitor->trace(m_templateDocument); | 5825 visitor->trace(m_templateDocument); |
5801 visitor->trace(m_templateDocumentHost); | 5826 visitor->trace(m_templateDocumentHost); |
5802 visitor->trace(m_visibilityObservers); | 5827 visitor->trace(m_visibilityObservers); |
5803 visitor->trace(m_userActionElements); | 5828 visitor->trace(m_userActionElements); |
5804 visitor->trace(m_svgExtensions); | 5829 visitor->trace(m_svgExtensions); |
5805 visitor->trace(m_timeline); | 5830 visitor->trace(m_timeline); |
5806 visitor->trace(m_compositorPendingAnimations); | 5831 visitor->trace(m_compositorPendingAnimations); |
5807 visitor->trace(m_contextDocument); | 5832 visitor->trace(m_contextDocument); |
5808 visitor->trace(m_canvasFontCache); | 5833 visitor->trace(m_canvasFontCache); |
| 5834 visitor->trace(m_intersectionObservationRegistry); |
5809 WillBeHeapSupplementable<Document>::trace(visitor); | 5835 WillBeHeapSupplementable<Document>::trace(visitor); |
5810 #endif | 5836 #endif |
5811 TreeScope::trace(visitor); | 5837 TreeScope::trace(visitor); |
5812 ContainerNode::trace(visitor); | 5838 ContainerNode::trace(visitor); |
5813 ExecutionContext::trace(visitor); | 5839 ExecutionContext::trace(visitor); |
5814 DocumentLifecycleNotifier::trace(visitor); | 5840 DocumentLifecycleNotifier::trace(visitor); |
5815 SecurityContext::trace(visitor); | 5841 SecurityContext::trace(visitor); |
5816 } | 5842 } |
5817 | 5843 |
5818 template class CORE_TEMPLATE_EXPORT WillBeHeapSupplement<Document>; | 5844 template class CORE_TEMPLATE_EXPORT WillBeHeapSupplement<Document>; |
5819 | 5845 |
5820 } // namespace blink | 5846 } // namespace blink |
5821 | 5847 |
5822 #ifndef NDEBUG | 5848 #ifndef NDEBUG |
5823 using namespace blink; | 5849 using namespace blink; |
5824 void showLiveDocumentInstances() | 5850 void showLiveDocumentInstances() |
5825 { | 5851 { |
5826 Document::WeakDocumentSet& set = Document::liveDocumentSet(); | 5852 Document::WeakDocumentSet& set = Document::liveDocumentSet(); |
5827 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); | 5853 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); |
5828 for (Document* document : set) | 5854 for (Document* document : set) |
5829 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str
ing().utf8().data()); | 5855 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().str
ing().utf8().data()); |
5830 } | 5856 } |
5831 #endif | 5857 #endif |
OLD | NEW |