| Index: Source/core/page/FrameView.cpp
|
| diff --git a/Source/core/page/FrameView.cpp b/Source/core/page/FrameView.cpp
|
| index 26badff745b01edc786294db90f39d5761b6e9c3..2714c5f8a44080f4cc13d86befbb4c30bb3e7a7d 100644
|
| --- a/Source/core/page/FrameView.cpp
|
| +++ b/Source/core/page/FrameView.cpp
|
| @@ -33,6 +33,7 @@
|
| #include "core/animation/DocumentTimeline.h"
|
| #include "core/css/FontLoader.h"
|
| #include "core/css/resolver/StyleResolver.h"
|
| +#include "core/css/resolver/ViewportStyleResolver.h"
|
| #include "core/dom/DocumentMarkerController.h"
|
| #include "core/dom/OverflowEvent.h"
|
| #include "core/editing/FrameSelection.h"
|
| @@ -2206,9 +2207,12 @@ void FrameView::performPostLayoutTasks()
|
| if (page)
|
| milestonesOfInterest = page->layoutMilestones();
|
|
|
| + bool viewportDidChange = false;
|
| +
|
| if (m_nestedLayoutCount <= 1) {
|
| if (m_firstLayoutCallbackPending) {
|
| m_firstLayoutCallbackPending = false;
|
| + viewportDidChange = true;
|
| m_frame->loader()->didFirstLayout();
|
| if (milestonesOfInterest & DidFirstLayout)
|
| milestonesAchieved |= DidFirstLayout;
|
| @@ -2251,25 +2255,29 @@ void FrameView::performPostLayoutTasks()
|
|
|
| m_actionScheduler->resume();
|
|
|
| - // Viewport-dependent media queries may cause us to need completely different style information.
|
| - if (m_frame->document()->styleResolver()->affectedByViewportChange()) {
|
| + IntSize currentSize = layoutSize(IncludeScrollbars);
|
| + float currentZoomFactor = renderView->style()->zoom();
|
| +
|
| + bool didResize = currentSize != m_lastViewportSize || currentZoomFactor != m_lastZoomFactor;
|
| + viewportDidChange |= didResize;
|
| +
|
| + m_lastViewportSize = currentSize;
|
| + m_lastZoomFactor = currentZoomFactor;
|
| +
|
| + // Viewport-dependent media queries and @viewport rue may cause us to need completely
|
| + // different style information.
|
| + if (viewportDidChange && m_frame->document()->styleResolver()->affectedByViewportChange()) {
|
| + m_frame->document()->styleResolver()->viewportStyleResolver()->resolve();
|
| m_frame->document()->styleResolverChanged(DeferRecalcStyle);
|
| InspectorInstrumentation::mediaQueryResultChanged(m_frame->document());
|
| }
|
|
|
| // Refetch render view since it can be destroyed by updateWidget() call above.
|
| renderView = this->renderView();
|
| - if (renderView && !renderView->printing()) {
|
| - IntSize currentSize = layoutSize(IncludeScrollbars);
|
| - float currentZoomFactor = renderView->style()->zoom();
|
| - bool resized = !m_firstLayout && (currentSize != m_lastViewportSize || currentZoomFactor != m_lastZoomFactor);
|
| - m_lastViewportSize = currentSize;
|
| - m_lastZoomFactor = currentZoomFactor;
|
| - if (resized) {
|
| - m_frame->eventHandler()->sendResizeEvent();
|
| - if (page && page->mainFrame() == m_frame)
|
| - InspectorInstrumentation::didResizeMainFrame(page);
|
| - }
|
| + if (renderView && !renderView->printing() && !m_firstLayout && didResize) {
|
| + m_frame->eventHandler()->sendResizeEvent();
|
| + if (page && page->mainFrame() == m_frame)
|
| + InspectorInstrumentation::didResizeMainFrame(page);
|
| }
|
| }
|
|
|
|
|