| 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 367 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 378     } | 378     } | 
| 379 }; | 379 }; | 
| 380 | 380 | 
| 381 Document::Document(const DocumentInit& initializer, DocumentClassFlags documentC
      lasses) | 381 Document::Document(const DocumentInit& initializer, DocumentClassFlags documentC
      lasses) | 
| 382     : ContainerNode(0, CreateDocument) | 382     : ContainerNode(0, CreateDocument) | 
| 383     , TreeScope(this) | 383     , TreeScope(this) | 
| 384     , m_styleResolverThrowawayTimer(this, &Document::styleResolverThrowawayTimer
      Fired) | 384     , m_styleResolverThrowawayTimer(this, &Document::styleResolverThrowawayTimer
      Fired) | 
| 385     , m_lastStyleResolverAccessTime(0) | 385     , m_lastStyleResolverAccessTime(0) | 
| 386     , m_didCalculateStyleResolver(false) | 386     , m_didCalculateStyleResolver(false) | 
| 387     , m_ignorePendingStylesheets(false) | 387     , m_ignorePendingStylesheets(false) | 
|  | 388     , m_evaluateMediaQueriesOnStyleRecalc(false) | 
| 388     , m_needsNotifyRemoveAllPendingStylesheet(false) | 389     , m_needsNotifyRemoveAllPendingStylesheet(false) | 
| 389     , m_hasNodesWithPlaceholderStyle(false) | 390     , m_hasNodesWithPlaceholderStyle(false) | 
| 390     , m_pendingSheetLayout(NoLayoutWithPendingSheets) | 391     , m_pendingSheetLayout(NoLayoutWithPendingSheets) | 
| 391     , m_frame(initializer.frame()) | 392     , m_frame(initializer.frame()) | 
| 392     , m_domWindow(0) | 393     , m_domWindow(0) | 
| 393     , m_import(initializer.import()) | 394     , m_import(initializer.import()) | 
| 394     , m_activeParserCount(0) | 395     , m_activeParserCount(0) | 
| 395     , m_contextFeatures(ContextFeatures::defaultSwitch()) | 396     , m_contextFeatures(ContextFeatures::defaultSwitch()) | 
| 396     , m_wellFormed(false) | 397     , m_wellFormed(false) | 
| 397     , m_printing(false) | 398     , m_printing(false) | 
| (...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1685     ASSERT(!view() || !view()->isPainting()); | 1686     ASSERT(!view() || !view()->isPainting()); | 
| 1686     if (view() && view()->isPainting()) | 1687     if (view() && view()->isPainting()) | 
| 1687         return; | 1688         return; | 
| 1688 | 1689 | 
| 1689     if (m_inStyleRecalc) | 1690     if (m_inStyleRecalc) | 
| 1690         return; // Guard against re-entrancy. -dwh | 1691         return; // Guard against re-entrancy. -dwh | 
| 1691 | 1692 | 
| 1692     TRACE_EVENT0("webkit", "Document::recalcStyle"); | 1693     TRACE_EVENT0("webkit", "Document::recalcStyle"); | 
| 1693     TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "RecalcStyle"); | 1694     TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "RecalcStyle"); | 
| 1694 | 1695 | 
|  | 1696     if (m_evaluateMediaQueriesOnStyleRecalc) { | 
|  | 1697         m_evaluateMediaQueriesOnStyleRecalc = false; | 
|  | 1698         evaluateMediaQueryList(); | 
|  | 1699     } | 
|  | 1700 | 
| 1695     updateDistributionIfNeeded(); | 1701     updateDistributionIfNeeded(); | 
| 1696 | 1702 | 
| 1697     // FIXME: We should update style on our ancestor chain before proceeding (es
      pecially for seamless), | 1703     // FIXME: We should update style on our ancestor chain before proceeding (es
      pecially for seamless), | 
| 1698     // however doing so currently causes several tests to crash, as Frame::setDo
      cument calls Document::attach | 1704     // however doing so currently causes several tests to crash, as Frame::setDo
      cument calls Document::attach | 
| 1699     // before setting the DOMWindow on the Frame, or the SecurityOrigin on the d
      ocument. The attach, in turn | 1705     // before setting the DOMWindow on the Frame, or the SecurityOrigin on the d
      ocument. The attach, in turn | 
| 1700     // resolves style (here) and then when we resolve style on the parent chain,
       we may end up | 1706     // resolves style (here) and then when we resolve style on the parent chain,
       we may end up | 
| 1701     // re-attaching our containing iframe, which when asked HTMLFrameElementBase
      ::isURLAllowed | 1707     // re-attaching our containing iframe, which when asked HTMLFrameElementBase
      ::isURLAllowed | 
| 1702     // hits a null-dereference due to security code always assuming the document
       has a SecurityOrigin. | 1708     // hits a null-dereference due to security code always assuming the document
       has a SecurityOrigin. | 
| 1703 | 1709 | 
| 1704     if (m_styleSheetCollections->needsUpdateActiveStylesheetsOnStyleRecalc()) | 1710     if (m_styleSheetCollections->needsUpdateActiveStylesheetsOnStyleRecalc()) | 
| (...skipping 1116 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2821 void Document::seamlessParentUpdatedStylesheets() | 2827 void Document::seamlessParentUpdatedStylesheets() | 
| 2822 { | 2828 { | 
| 2823     m_styleSheetCollections->didModifySeamlessParentStyleSheet(); | 2829     m_styleSheetCollections->didModifySeamlessParentStyleSheet(); | 
| 2824     styleResolverChanged(RecalcStyleImmediately); | 2830     styleResolverChanged(RecalcStyleImmediately); | 
| 2825 } | 2831 } | 
| 2826 | 2832 | 
| 2827 void Document::didRemoveAllPendingStylesheet() | 2833 void Document::didRemoveAllPendingStylesheet() | 
| 2828 { | 2834 { | 
| 2829     m_needsNotifyRemoveAllPendingStylesheet = false; | 2835     m_needsNotifyRemoveAllPendingStylesheet = false; | 
| 2830 | 2836 | 
| 2831     styleResolverChanged(RecalcStyleImmediately, AnalyzedStyleUpdate); | 2837     styleResolverChanged(RecalcStyleDeferred, AnalyzedStyleUpdate); | 
| 2832     executeScriptsWaitingForResourcesIfNeeded(); | 2838     executeScriptsWaitingForResourcesIfNeeded(); | 
| 2833 | 2839 | 
| 2834     if (m_gotoAnchorNeededAfterStylesheetsLoad && view()) | 2840     if (m_gotoAnchorNeededAfterStylesheetsLoad && view()) | 
| 2835         view()->scrollToFragment(m_url); | 2841         view()->scrollToFragment(m_url); | 
| 2836 } | 2842 } | 
| 2837 | 2843 | 
| 2838 void Document::executeScriptsWaitingForResourcesIfNeeded() | 2844 void Document::executeScriptsWaitingForResourcesIfNeeded() | 
| 2839 { | 2845 { | 
| 2840     if (!haveStylesheetsAndImportsLoaded()) | 2846     if (!haveStylesheetsAndImportsLoaded()) | 
| 2841         return; | 2847         return; | 
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 3296     // Don't bother updating, since we haven't loaded all our style info yet | 3302     // Don't bother updating, since we haven't loaded all our style info yet | 
| 3297     // and haven't calculated the style selector for the first time. | 3303     // and haven't calculated the style selector for the first time. | 
| 3298     if (!attached() || (!m_didCalculateStyleResolver && !haveStylesheetsLoaded()
      )) { | 3304     if (!attached() || (!m_didCalculateStyleResolver && !haveStylesheetsLoaded()
      )) { | 
| 3299         m_styleResolver.clear(); | 3305         m_styleResolver.clear(); | 
| 3300         return; | 3306         return; | 
| 3301     } | 3307     } | 
| 3302     m_didCalculateStyleResolver = true; | 3308     m_didCalculateStyleResolver = true; | 
| 3303 | 3309 | 
| 3304     bool needsRecalc = m_styleSheetCollections->updateActiveStyleSheets(updateMo
      de); | 3310     bool needsRecalc = m_styleSheetCollections->updateActiveStyleSheets(updateMo
      de); | 
| 3305 | 3311 | 
| 3306     if (updateType >= RecalcStyleDeferred) { |  | 
| 3307         setNeedsStyleRecalc(); |  | 
| 3308         return; |  | 
| 3309     } |  | 
| 3310 |  | 
| 3311     if (didLayoutWithPendingStylesheets() && !m_styleSheetCollections->hasPendin
      gSheets()) { | 3312     if (didLayoutWithPendingStylesheets() && !m_styleSheetCollections->hasPendin
      gSheets()) { | 
|  | 3313         // We need to manually repaint because we avoid doing all repaints in la
      yout or style | 
|  | 3314         // recalc while sheets are still loading to avoid FOUC. | 
| 3312         m_pendingSheetLayout = IgnoreLayoutWithPendingSheets; | 3315         m_pendingSheetLayout = IgnoreLayoutWithPendingSheets; | 
| 3313         if (renderer()) | 3316         renderView()->repaintViewAndCompositedLayers(); | 
| 3314             renderView()->repaintViewAndCompositedLayers(); |  | 
| 3315     } | 3317     } | 
| 3316 | 3318 | 
| 3317     if (!needsRecalc) | 3319     if (!needsRecalc) | 
| 3318         return; | 3320         return; | 
| 3319 | 3321 | 
| 3320     // This recalcStyle initiates a new recalc cycle. We need to bracket it to | 3322     m_evaluateMediaQueriesOnStyleRecalc = true; | 
| 3321     // make sure animations get the correct update time | 3323     setNeedsStyleRecalc(); | 
| 3322     { |  | 
| 3323         AnimationUpdateBlock animationUpdateBlock(m_frame ? m_frame->animation()
       : 0); |  | 
| 3324         recalcStyle(Force); |  | 
| 3325     } |  | 
| 3326 | 3324 | 
| 3327     if (renderer()) { | 3325     if (updateType == RecalcStyleImmediately) | 
| 3328         renderer()->setNeedsLayoutAndPrefWidthsRecalc(); | 3326         updateStyleIfNeeded(); | 
| 3329         if (view()) |  | 
| 3330             view()->scheduleRelayout(); |  | 
| 3331     } |  | 
| 3332 |  | 
| 3333     evaluateMediaQueryList(); |  | 
| 3334 } | 3327 } | 
| 3335 | 3328 | 
| 3336 void Document::notifySeamlessChildDocumentsOfStylesheetUpdate() const | 3329 void Document::notifySeamlessChildDocumentsOfStylesheetUpdate() const | 
| 3337 { | 3330 { | 
| 3338     // If we're not in a frame yet any potential child documents won't have a St
      yleResolver to update. | 3331     // If we're not in a frame yet any potential child documents won't have a St
      yleResolver to update. | 
| 3339     if (!frame()) | 3332     if (!frame()) | 
| 3340         return; | 3333         return; | 
| 3341 | 3334 | 
| 3342     // Seamless child frames are expected to notify their seamless children recu
      rsively, so we only do direct children. | 3335     // Seamless child frames are expected to notify their seamless children recu
      rsively, so we only do direct children. | 
| 3343     for (Frame* child = frame()->tree()->firstChild(); child; child = child->tre
      e()->nextSibling()) { | 3336     for (Frame* child = frame()->tree()->firstChild(); child; child = child->tre
      e()->nextSibling()) { | 
| (...skipping 2107 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5451 { | 5444 { | 
| 5452     return DocumentLifecycleNotifier::create(this); | 5445     return DocumentLifecycleNotifier::create(this); | 
| 5453 } | 5446 } | 
| 5454 | 5447 | 
| 5455 DocumentLifecycleNotifier* Document::lifecycleNotifier() | 5448 DocumentLifecycleNotifier* Document::lifecycleNotifier() | 
| 5456 { | 5449 { | 
| 5457     return static_cast<DocumentLifecycleNotifier*>(ScriptExecutionContext::lifec
      ycleNotifier()); | 5450     return static_cast<DocumentLifecycleNotifier*>(ScriptExecutionContext::lifec
      ycleNotifier()); | 
| 5458 } | 5451 } | 
| 5459 | 5452 | 
| 5460 } // namespace WebCore | 5453 } // namespace WebCore | 
| OLD | NEW | 
|---|