| 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 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 #include "wtf/HashFunctions.h" | 235 #include "wtf/HashFunctions.h" |
| 236 #include "wtf/PtrUtil.h" | 236 #include "wtf/PtrUtil.h" |
| 237 #include "wtf/StdLibExtras.h" | 237 #include "wtf/StdLibExtras.h" |
| 238 #include "wtf/TemporaryChange.h" | 238 #include "wtf/TemporaryChange.h" |
| 239 #include "wtf/text/StringBuffer.h" | 239 #include "wtf/text/StringBuffer.h" |
| 240 #include "wtf/text/TextEncodingRegistry.h" | 240 #include "wtf/text/TextEncodingRegistry.h" |
| 241 | 241 |
| 242 using namespace WTF; | 242 using namespace WTF; |
| 243 using namespace Unicode; | 243 using namespace Unicode; |
| 244 | 244 |
| 245 #ifndef NDEBUG |
| 246 using WeakDocumentSet = blink::PersistentHeapHashSet<blink::WeakMember<blink::Do
cument>>; |
| 247 static WeakDocumentSet& liveDocumentSet(); |
| 248 #endif |
| 249 |
| 245 namespace blink { | 250 namespace blink { |
| 246 | 251 |
| 247 using namespace HTMLNames; | 252 using namespace HTMLNames; |
| 248 | 253 |
| 249 static const unsigned cMaxWriteRecursionDepth = 21; | 254 static const unsigned cMaxWriteRecursionDepth = 21; |
| 250 | 255 |
| 251 // This amount of time must have elapsed before we will even consider scheduling
a layout without a delay. | 256 // This amount of time must have elapsed before we will even consider scheduling
a layout without a delay. |
| 252 // FIXME: For faster machines this value can really be lowered to 200. 250 is a
dequate, but a little high | 257 // FIXME: For faster machines this value can really be lowered to 200. 250 is a
dequate, but a little high |
| 253 // for dual G5s. :) | 258 // for dual G5s. :) |
| 254 static const int cLayoutScheduleThreshold = 250; | 259 static const int cLayoutScheduleThreshold = 250; |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 return true; | 365 return true; |
| 361 if (errorMessage) | 366 if (errorMessage) |
| 362 *errorMessage = origin->isPotentiallyTrustworthyErrorMessage(); | 367 *errorMessage = origin->isPotentiallyTrustworthyErrorMessage(); |
| 363 return false; | 368 return false; |
| 364 } | 369 } |
| 365 | 370 |
| 366 uint64_t Document::s_globalTreeVersion = 0; | 371 uint64_t Document::s_globalTreeVersion = 0; |
| 367 | 372 |
| 368 static bool s_threadedParsingEnabledForTesting = true; | 373 static bool s_threadedParsingEnabledForTesting = true; |
| 369 | 374 |
| 370 using WeakDocumentSet = PersistentHeapHashSet<WeakMember<Document>>; | |
| 371 | |
| 372 static WeakDocumentSet& liveDocumentSet() | |
| 373 { | |
| 374 DEFINE_STATIC_LOCAL(WeakDocumentSet, set, ()); | |
| 375 return set; | |
| 376 } | |
| 377 | |
| 378 // This class doesn't work with non-Document ExecutionContext. | 375 // This class doesn't work with non-Document ExecutionContext. |
| 379 class AutofocusTask final : public ExecutionContextTask { | 376 class AutofocusTask final : public ExecutionContextTask { |
| 380 public: | 377 public: |
| 381 static std::unique_ptr<AutofocusTask> create() | 378 static std::unique_ptr<AutofocusTask> create() |
| 382 { | 379 { |
| 383 return wrapUnique(new AutofocusTask()); | 380 return wrapUnique(new AutofocusTask()); |
| 384 } | 381 } |
| 385 ~AutofocusTask() override { } | 382 ~AutofocusTask() override { } |
| 386 | 383 |
| 387 private: | 384 private: |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 507 // CSSFontSelector, need to initialize m_styleEngine after initializing | 504 // CSSFontSelector, need to initialize m_styleEngine after initializing |
| 508 // m_fetcher. | 505 // m_fetcher. |
| 509 m_styleEngine = StyleEngine::create(*this); | 506 m_styleEngine = StyleEngine::create(*this); |
| 510 | 507 |
| 511 // The parent's parser should be suspended together with all the other objec
ts, | 508 // The parent's parser should be suspended together with all the other objec
ts, |
| 512 // else this new Document would have a new ExecutionContext which suspended
state | 509 // else this new Document would have a new ExecutionContext which suspended
state |
| 513 // would not match the one from the parent, and could start loading resource
s | 510 // would not match the one from the parent, and could start loading resource
s |
| 514 // ignoring the defersLoading flag. | 511 // ignoring the defersLoading flag. |
| 515 DCHECK(!parentDocument() || !parentDocument()->activeDOMObjectsAreSuspended(
)); | 512 DCHECK(!parentDocument() || !parentDocument()->activeDOMObjectsAreSuspended(
)); |
| 516 | 513 |
| 514 #ifndef NDEBUG |
| 517 liveDocumentSet().add(this); | 515 liveDocumentSet().add(this); |
| 516 #endif |
| 518 } | 517 } |
| 519 | 518 |
| 520 Document::~Document() | 519 Document::~Document() |
| 521 { | 520 { |
| 522 DCHECK(!layoutView()); | 521 DCHECK(!layoutView()); |
| 523 DCHECK(!parentTreeScope()); | 522 DCHECK(!parentTreeScope()); |
| 524 // If a top document with a cache, verify that it was comprehensively | 523 // If a top document with a cache, verify that it was comprehensively |
| 525 // cleared during detach. | 524 // cleared during detach. |
| 526 DCHECK(!m_axObjectCache); | 525 DCHECK(!m_axObjectCache); |
| 527 InstanceCounters::decrementCounter(InstanceCounters::DocumentCounter); | 526 InstanceCounters::decrementCounter(InstanceCounters::DocumentCounter); |
| (...skipping 5461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5989 } | 5988 } |
| 5990 ContainerNode::traceWrappers(visitor); | 5989 ContainerNode::traceWrappers(visitor); |
| 5991 } | 5990 } |
| 5992 | 5991 |
| 5993 template class CORE_TEMPLATE_EXPORT Supplement<Document>; | 5992 template class CORE_TEMPLATE_EXPORT Supplement<Document>; |
| 5994 | 5993 |
| 5995 } // namespace blink | 5994 } // namespace blink |
| 5996 | 5995 |
| 5997 #ifndef NDEBUG | 5996 #ifndef NDEBUG |
| 5998 using namespace blink; | 5997 using namespace blink; |
| 5998 |
| 5999 static WeakDocumentSet& liveDocumentSet() |
| 6000 { |
| 6001 DEFINE_STATIC_LOCAL(WeakDocumentSet, set, ()); |
| 6002 return set; |
| 6003 } |
| 6004 |
| 5999 void showLiveDocumentInstances() | 6005 void showLiveDocumentInstances() |
| 6000 { | 6006 { |
| 6001 WeakDocumentSet& set = liveDocumentSet(); | 6007 WeakDocumentSet& set = liveDocumentSet(); |
| 6002 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); | 6008 fprintf(stderr, "There are %u documents currently alive:\n", set.size()); |
| 6003 for (Document* document : set) | 6009 for (Document* document : set) |
| 6004 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get
String().utf8().data()); | 6010 fprintf(stderr, "- Document %p URL: %s\n", document, document->url().get
String().utf8().data()); |
| 6005 } | 6011 } |
| 6006 #endif | 6012 #endif |
| OLD | NEW |