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 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 , m_startTime(currentTime()) | 243 , m_startTime(currentTime()) |
244 , m_renderView(0) | 244 , m_renderView(0) |
245 #if !ENABLE(OILPAN) | 245 #if !ENABLE(OILPAN) |
246 , m_weakFactory(this) | 246 , m_weakFactory(this) |
247 #endif | 247 #endif |
248 , m_contextDocument(initializer.contextDocument()) | 248 , m_contextDocument(initializer.contextDocument()) |
249 , m_loadEventDelayCount(0) | 249 , m_loadEventDelayCount(0) |
250 , m_loadEventDelayTimer(this, &Document::loadEventDelayTimerFired) | 250 , m_loadEventDelayTimer(this, &Document::loadEventDelayTimerFired) |
251 , m_didSetReferrerPolicy(false) | 251 , m_didSetReferrerPolicy(false) |
252 , m_referrerPolicy(ReferrerPolicyDefault) | 252 , m_referrerPolicy(ReferrerPolicyDefault) |
253 , m_directionSetOnDocumentElement(false) | |
254 , m_registrationContext(initializer.registrationContext()) | 253 , m_registrationContext(initializer.registrationContext()) |
255 , m_elementDataCacheClearTimer(this, &Document::elementDataCacheClearTimerFi
red) | 254 , m_elementDataCacheClearTimer(this, &Document::elementDataCacheClearTimerFi
red) |
256 , m_timeline(AnimationTimeline::create(this)) | 255 , m_timeline(AnimationTimeline::create(this)) |
257 , m_templateDocumentHost(nullptr) | 256 , m_templateDocumentHost(nullptr) |
258 , m_hasViewportUnits(false) | 257 , m_hasViewportUnits(false) |
259 , m_styleRecalcElementCounter(0) | 258 , m_styleRecalcElementCounter(0) |
260 { | 259 { |
261 setClient(this); | 260 setClient(this); |
262 | 261 |
263 if (!m_registrationContext) | 262 if (!m_registrationContext) |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 void Document::dispose() | 346 void Document::dispose() |
348 { | 347 { |
349 ASSERT_WITH_SECURITY_IMPLICATION(!m_deletionHasBegun); | 348 ASSERT_WITH_SECURITY_IMPLICATION(!m_deletionHasBegun); |
350 | 349 |
351 // We must make sure not to be retaining any of our children through | 350 // We must make sure not to be retaining any of our children through |
352 // these extra pointers or we will create a reference cycle. | 351 // these extra pointers or we will create a reference cycle. |
353 m_focusedElement = nullptr; | 352 m_focusedElement = nullptr; |
354 m_hoverNode = nullptr; | 353 m_hoverNode = nullptr; |
355 m_activeHoverElement = nullptr; | 354 m_activeHoverElement = nullptr; |
356 m_titleElement = nullptr; | 355 m_titleElement = nullptr; |
357 m_documentElement = nullptr; | |
358 m_userActionElements.documentDidRemoveLastRef(); | 356 m_userActionElements.documentDidRemoveLastRef(); |
359 | 357 |
360 detachParser(); | 358 detachParser(); |
361 | 359 |
362 m_registrationContext.clear(); | 360 m_registrationContext.clear(); |
363 | 361 |
364 if (m_importsController) | 362 if (m_importsController) |
365 HTMLImportsController::removeFrom(*this); | 363 HTMLImportsController::removeFrom(*this); |
366 | 364 |
367 // removeDetachedChildren() doesn't always unregister IDs, | 365 // removeDetachedChildren() doesn't always unregister IDs, |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 } | 401 } |
404 | 402 |
405 Location* Document::location() const | 403 Location* Document::location() const |
406 { | 404 { |
407 if (!frame()) | 405 if (!frame()) |
408 return 0; | 406 return 0; |
409 | 407 |
410 return &domWindow()->location(); | 408 return &domWindow()->location(); |
411 } | 409 } |
412 | 410 |
413 void Document::childrenChanged(const ChildrenChange& change) | |
414 { | |
415 ContainerNode::childrenChanged(change); | |
416 m_documentElement = ElementTraversal::firstWithin(*this); | |
417 } | |
418 | |
419 PassRefPtr<Element> Document::createElement(const AtomicString& name, ExceptionS
tate& exceptionState) | 411 PassRefPtr<Element> Document::createElement(const AtomicString& name, ExceptionS
tate& exceptionState) |
420 { | 412 { |
421 if (!isValidName(name)) { | 413 if (!isValidName(name)) { |
422 exceptionState.ThrowDOMException(InvalidCharacterError, "The tag name pr
ovided ('" + name + "') is not a valid name."); | 414 exceptionState.ThrowDOMException(InvalidCharacterError, "The tag name pr
ovided ('" + name + "') is not a valid name."); |
423 return nullptr; | 415 return nullptr; |
424 } | 416 } |
425 | 417 |
426 return HTMLElementFactory::createHTMLElement(name, *this, false); | 418 return HTMLElementFactory::createHTMLElement(name, *this, false); |
427 } | 419 } |
428 | 420 |
(...skipping 607 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1036 | 1028 |
1037 // Uncomment to enable printing of statistics about style sharing and the ma
tched property cache. | 1029 // Uncomment to enable printing of statistics about style sharing and the ma
tched property cache. |
1038 // Optionally pass StyleResolver::ReportSlowStats to print numbers that requ
ire crawling the | 1030 // Optionally pass StyleResolver::ReportSlowStats to print numbers that requ
ire crawling the |
1039 // entire DOM (where collecting them is very slow). | 1031 // entire DOM (where collecting them is very slow). |
1040 // FIXME: Expose this as a runtime flag. | 1032 // FIXME: Expose this as a runtime flag. |
1041 // styleResolver().enableStats(/*StyleResolver::ReportSlowStats*/); | 1033 // styleResolver().enableStats(/*StyleResolver::ReportSlowStats*/); |
1042 | 1034 |
1043 if (StyleResolverStats* stats = styleResolver().stats()) | 1035 if (StyleResolverStats* stats = styleResolver().stats()) |
1044 stats->reset(); | 1036 stats->reset(); |
1045 | 1037 |
1046 if (Element* documentElement = this->documentElement()) { | 1038 for (Element* element = ElementTraversal::firstChild(*this); element; elemen
t = ElementTraversal::nextSibling(*element)) { |
1047 if (documentElement->shouldCallRecalcStyle(change)) | 1039 if (element->shouldCallRecalcStyle(change)) |
1048 documentElement->recalcStyle(change); | 1040 element->recalcStyle(change); |
1049 } | 1041 } |
1050 | 1042 |
1051 styleResolver().printStats(); | 1043 styleResolver().printStats(); |
1052 | 1044 |
1053 view()->recalcOverflowAfterStyleChange(); | 1045 view()->recalcOverflowAfterStyleChange(); |
1054 | 1046 |
1055 clearChildNeedsStyleRecalc(); | 1047 clearChildNeedsStyleRecalc(); |
1056 | 1048 |
1057 m_styleEngine->resolver().clearStyleSharingList(); | 1049 m_styleEngine->resolver().clearStyleSharingList(); |
1058 | 1050 |
(...skipping 1102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2161 return &m_documentLoadTiming; | 2153 return &m_documentLoadTiming; |
2162 } | 2154 } |
2163 | 2155 |
2164 IntSize Document::initialViewportSize() const | 2156 IntSize Document::initialViewportSize() const |
2165 { | 2157 { |
2166 if (!view()) | 2158 if (!view()) |
2167 return IntSize(); | 2159 return IntSize(); |
2168 return view()->unscaledVisibleContentSize(); | 2160 return view()->unscaledVisibleContentSize(); |
2169 } | 2161 } |
2170 | 2162 |
2171 Node* eventTargetNodeForDocument(Document* doc) | |
2172 { | |
2173 if (!doc) | |
2174 return 0; | |
2175 Node* node = doc->focusedElement(); | |
2176 if (!node) | |
2177 node = doc->documentElement(); | |
2178 return node; | |
2179 } | |
2180 | |
2181 void Document::decrementActiveParserCount() | 2163 void Document::decrementActiveParserCount() |
2182 { | 2164 { |
2183 --m_activeParserCount; | 2165 --m_activeParserCount; |
2184 } | 2166 } |
2185 | 2167 |
2186 Document& Document::ensureTemplateDocument() | 2168 Document& Document::ensureTemplateDocument() |
2187 { | 2169 { |
2188 if (isTemplateDocument()) | 2170 if (isTemplateDocument()) |
2189 return *this; | 2171 return *this; |
2190 | 2172 |
(...skipping 20 matching lines...) Expand all Loading... |
2211 | 2193 |
2212 DocumentLifecycleNotifier& Document::lifecycleNotifier() | 2194 DocumentLifecycleNotifier& Document::lifecycleNotifier() |
2213 { | 2195 { |
2214 return static_cast<DocumentLifecycleNotifier&>(LifecycleContext<Document>::l
ifecycleNotifier()); | 2196 return static_cast<DocumentLifecycleNotifier&>(LifecycleContext<Document>::l
ifecycleNotifier()); |
2215 } | 2197 } |
2216 | 2198 |
2217 Element* Document::activeElement() const | 2199 Element* Document::activeElement() const |
2218 { | 2200 { |
2219 if (Element* element = treeScope().adjustedFocusedElement()) | 2201 if (Element* element = treeScope().adjustedFocusedElement()) |
2220 return element; | 2202 return element; |
2221 return documentElement(); | 2203 return nullptr; |
2222 } | 2204 } |
2223 | 2205 |
2224 void Document::getTransitionElementData(Vector<TransitionElementData>& elementDa
ta) | 2206 void Document::getTransitionElementData(Vector<TransitionElementData>& elementDa
ta) |
2225 { | 2207 { |
2226 } | 2208 } |
2227 | 2209 |
2228 bool Document::hasFocus() const | 2210 bool Document::hasFocus() const |
2229 { | 2211 { |
2230 Page* page = this->page(); | 2212 Page* page = this->page(); |
2231 if (!page) | 2213 if (!page) |
(...skipping 10 matching lines...) Expand all Loading... |
2242 using namespace blink; | 2224 using namespace blink; |
2243 void showLiveDocumentInstances() | 2225 void showLiveDocumentInstances() |
2244 { | 2226 { |
2245 WeakDocumentSet& set = liveDocumentSet(); | 2227 WeakDocumentSet& set = liveDocumentSet(); |
2246 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); | 2228 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); |
2247 for (WeakDocumentSet::const_iterator it = set.begin(); it != set.end(); ++it
) { | 2229 for (WeakDocumentSet::const_iterator it = set.begin(); it != set.end(); ++it
) { |
2248 fprintf(stderr, "- Document %p URL: %s\n", *it, (*it)->url().string().ut
f8().data()); | 2230 fprintf(stderr, "- Document %p URL: %s\n", *it, (*it)->url().string().ut
f8().data()); |
2249 } | 2231 } |
2250 } | 2232 } |
2251 #endif | 2233 #endif |
OLD | NEW |