| Index: Source/core/dom/Document.cpp
 | 
| diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp
 | 
| index b2ba85404dafcb1612f45d95646ee0625d1d4edf..7517e92423a45924f19f06f7e4a3c536eb99360d 100644
 | 
| --- a/Source/core/dom/Document.cpp
 | 
| +++ b/Source/core/dom/Document.cpp
 | 
| @@ -385,6 +385,7 @@ Document::Document(const DocumentInit& initializer, DocumentClassFlags documentC
 | 
|      , m_lastStyleResolverAccessTime(0)
 | 
|      , m_didCalculateStyleResolver(false)
 | 
|      , m_ignorePendingStylesheets(false)
 | 
| +    , m_evaluateMediaQueriesOnStyleRecalc(false)
 | 
|      , m_needsNotifyRemoveAllPendingStylesheet(false)
 | 
|      , m_hasNodesWithPlaceholderStyle(false)
 | 
|      , m_pendingSheetLayout(NoLayoutWithPendingSheets)
 | 
| @@ -1692,6 +1693,11 @@ void Document::recalcStyle(StyleRecalcChange change)
 | 
|      TRACE_EVENT0("webkit", "Document::recalcStyle");
 | 
|      TRACE_EVENT_SCOPED_SAMPLING_STATE("Blink", "RecalcStyle");
 | 
|  
 | 
| +    if (m_evaluateMediaQueriesOnStyleRecalc) {
 | 
| +        m_evaluateMediaQueriesOnStyleRecalc = false;
 | 
| +        evaluateMediaQueryList();
 | 
| +    }
 | 
| +
 | 
|      updateDistributionIfNeeded();
 | 
|  
 | 
|      // FIXME: We should update style on our ancestor chain before proceeding (especially for seamless),
 | 
| @@ -2828,7 +2834,7 @@ void Document::didRemoveAllPendingStylesheet()
 | 
|  {
 | 
|      m_needsNotifyRemoveAllPendingStylesheet = false;
 | 
|  
 | 
| -    styleResolverChanged(RecalcStyleImmediately, AnalyzedStyleUpdate);
 | 
| +    styleResolverChanged(RecalcStyleDeferred, AnalyzedStyleUpdate);
 | 
|      executeScriptsWaitingForResourcesIfNeeded();
 | 
|  
 | 
|      if (m_gotoAnchorNeededAfterStylesheetsLoad && view())
 | 
| @@ -3303,34 +3309,21 @@ void Document::styleResolverChanged(StyleResolverUpdateType updateType, StyleRes
 | 
|  
 | 
|      bool needsRecalc = m_styleSheetCollections->updateActiveStyleSheets(updateMode);
 | 
|  
 | 
| -    if (updateType >= RecalcStyleDeferred) {
 | 
| -        setNeedsStyleRecalc();
 | 
| -        return;
 | 
| -    }
 | 
| -
 | 
|      if (didLayoutWithPendingStylesheets() && !m_styleSheetCollections->hasPendingSheets()) {
 | 
| +        // We need to manually repaint because we avoid doing all repaints in layout or style
 | 
| +        // recalc while sheets are still loading to avoid FOUC.
 | 
|          m_pendingSheetLayout = IgnoreLayoutWithPendingSheets;
 | 
| -        if (renderer())
 | 
| -            renderView()->repaintViewAndCompositedLayers();
 | 
| +        renderView()->repaintViewAndCompositedLayers();
 | 
|      }
 | 
|  
 | 
|      if (!needsRecalc)
 | 
|          return;
 | 
|  
 | 
| -    // This recalcStyle initiates a new recalc cycle. We need to bracket it to
 | 
| -    // make sure animations get the correct update time
 | 
| -    {
 | 
| -        AnimationUpdateBlock animationUpdateBlock(m_frame ? m_frame->animation() : 0);
 | 
| -        recalcStyle(Force);
 | 
| -    }
 | 
| -
 | 
| -    if (renderer()) {
 | 
| -        renderer()->setNeedsLayoutAndPrefWidthsRecalc();
 | 
| -        if (view())
 | 
| -            view()->scheduleRelayout();
 | 
| -    }
 | 
| +    m_evaluateMediaQueriesOnStyleRecalc = true;
 | 
| +    setNeedsStyleRecalc();
 | 
|  
 | 
| -    evaluateMediaQueryList();
 | 
| +    if (updateType == RecalcStyleImmediately)
 | 
| +        updateStyleIfNeeded();
 | 
|  }
 | 
|  
 | 
|  void Document::notifySeamlessChildDocumentsOfStylesheetUpdate() const
 | 
| 
 |