Title: [140690] branches/chromium/1391a/Source

Diff

Modified: branches/chromium/1391a/Source/WebCore/page/FrameView.cpp (140689 => 140690)


--- branches/chromium/1391a/Source/WebCore/page/FrameView.cpp	2013-01-24 17:18:17 UTC (rev 140689)
+++ branches/chromium/1391a/Source/WebCore/page/FrameView.cpp	2013-01-24 17:28:02 UTC (rev 140690)
@@ -1992,7 +1992,7 @@
     if (!frame()->view())
         return;
 
-    if (needsLayout())
+    if (!useFixedLayout() && needsLayout())
         layout();
 
 #if USE(ACCELERATED_COMPOSITING)

Modified: branches/chromium/1391a/Source/WebCore/page/Page.cpp (140689 => 140690)


--- branches/chromium/1391a/Source/WebCore/page/Page.cpp	2013-01-24 17:18:17 UTC (rev 140689)
+++ branches/chromium/1391a/Source/WebCore/page/Page.cpp	2013-01-24 17:28:02 UTC (rev 140690)
@@ -723,9 +723,10 @@
     Document* document = mainFrame()->document();
     FrameView* view = document->view();
 
-    if (scale == m_pageScaleFactor) {
+    if (m_pageScaleFactor == scale) {
         if (view && (view->scrollPosition() != origin || view->delegatesScrolling())) {
-            document->updateLayoutIgnorePendingStylesheets();
+            if (!m_settings->applyPageScaleFactorInCompositor())
+                document->updateLayoutIgnorePendingStylesheets();
             view->setScrollPosition(origin);
         }
         return;
@@ -748,7 +749,7 @@
 #endif
 
     if (view && view->scrollPosition() != origin) {
-        if (document->renderer() && document->renderer()->needsLayout() && view->didFirstLayout())
+        if (!m_settings->applyPageScaleFactorInCompositor() && document->renderer() && document->renderer()->needsLayout() && view->didFirstLayout())
             view->layout();
         view->setScrollPosition(origin);
     }

Modified: branches/chromium/1391a/Source/WebCore/platform/ScrollView.cpp (140689 => 140690)


--- branches/chromium/1391a/Source/WebCore/platform/ScrollView.cpp	2013-01-24 17:18:17 UTC (rev 140689)
+++ branches/chromium/1391a/Source/WebCore/platform/ScrollView.cpp	2013-01-24 17:28:02 UTC (rev 140690)
@@ -288,6 +288,8 @@
         return;
     m_fixedLayoutSize = newSize;
     updateScrollbars(scrollOffset());
+    if (useFixedLayout())
+        contentsResized();
 }
 
 bool ScrollView::useFixedLayout() const
@@ -301,6 +303,7 @@
         return;
     m_useFixedLayout = enable;
     updateScrollbars(scrollOffset());
+    contentsResized();
 }
 
 IntSize ScrollView::contentsSize() const

Modified: branches/chromium/1391a/Source/WebKit/chromium/src/WebViewImpl.cpp (140689 => 140690)


--- branches/chromium/1391a/Source/WebKit/chromium/src/WebViewImpl.cpp	2013-01-24 17:18:17 UTC (rev 140689)
+++ branches/chromium/1391a/Source/WebKit/chromium/src/WebViewImpl.cpp	2013-01-24 17:28:02 UTC (rev 140690)
@@ -1661,11 +1661,6 @@
 
 #if ENABLE(VIEWPORT)
     if (settings()->viewportEnabled()) {
-        if (!settingsImpl()->applyPageScaleFactorInCompositor()) {
-            // Relayout immediately to obtain the new content width, which is needed
-            // to calculate the minimum scale limit.
-            view->layout();
-        }
         computePageScaleFactorLimits();
 
         // When the device rotates:
@@ -3106,6 +3101,10 @@
 
     FrameView* view = page()->mainFrame()->view();
 
+    // Layout to refresh to the latest contents width.
+    if (view->needsLayout())
+        view->layout();
+
     m_minimumPageScaleFactor = min(max(m_pageDefinedMinimumPageScaleFactor, minPageScaleFactor), maxPageScaleFactor);
     m_maximumPageScaleFactor = max(min(m_pageDefinedMaximumPageScaleFactor, maxPageScaleFactor), minPageScaleFactor);
     if (!m_webSettings->applyDeviceScaleFactorInCompositor()) {

Modified: branches/chromium/1391a/Source/WebKit/chromium/tests/WebFrameTest.cpp (140689 => 140690)


--- branches/chromium/1391a/Source/WebKit/chromium/tests/WebFrameTest.cpp	2013-01-24 17:18:17 UTC (rev 140689)
+++ branches/chromium/1391a/Source/WebKit/chromium/tests/WebFrameTest.cpp	2013-01-24 17:28:02 UTC (rev 140690)
@@ -238,6 +238,8 @@
 
     WebView* webView = static_cast<WebView*>(FrameTestHelpers::createWebViewAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client));
 
+    webView->settings()->setApplyDeviceScaleFactorInCompositor(true);
+    webView->settings()->setApplyPageScaleFactorInCompositor(true);
     webView->settings()->setViewportEnabled(true);
     webView->enableFixedLayoutMode(true);
     webView->resize(WebSize(viewportWidth, viewportHeight));
@@ -245,17 +247,15 @@
 
     EXPECT_EQ(2, webView->deviceScaleFactor());
 
-    // Device scale factor should be a component of page scale factor in fixed-layout, so a scale of 1 becomes 2.
+    // Page scale factor should not include device scale factor.
     webView->setPageScaleFactorLimits(1, 2);
-    EXPECT_EQ(2, webView->pageScaleFactor());
+    EXPECT_EQ(1, webView->pageScaleFactor());
 
     // Force the layout to happen before leaving the test.
     webView->mainFrame()->contentAsText(1024).utf8();
 }
 
-// Test is disabled because it started failing after r140025.
-// See bug for details: webkit.org/b/107206.
-TEST_F(WebFrameTest, DISABLED_FixedLayoutInitializeAtMinimumPageScale)
+TEST_F(WebFrameTest, FixedLayoutInitializeAtMinimumPageScale)
 {
     registerMockedHttpURLLoad("fixed_layout.html");
 
@@ -267,6 +267,8 @@
     // Make sure we initialize to minimum scale, even if the window size
     // only becomes available after the load begins.
     WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client));
+    webViewImpl->settings()->setApplyDeviceScaleFactorInCompositor(true);
+    webViewImpl->settings()->setApplyPageScaleFactorInCompositor(true);
     webViewImpl->enableFixedLayoutMode(true);
     webViewImpl->settings()->setViewportEnabled(true);
     webViewImpl->resize(WebSize(viewportWidth, viewportHeight));
@@ -301,12 +303,37 @@
     int viewportHeight = 1057;
 
     WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(FrameTestHelpers::createWebViewAndLoad(m_baseURL + "scale_oscillate.html", true, 0, &client));
+    webViewImpl->settings()->setApplyDeviceScaleFactorInCompositor(true);
+    webViewImpl->settings()->setApplyPageScaleFactorInCompositor(true);
     webViewImpl->enableFixedLayoutMode(true);
     webViewImpl->settings()->setViewportEnabled(true);
     webViewImpl->resize(WebSize(viewportWidth, viewportHeight));
     webViewImpl->layout();
 }
 
+TEST_F(WebFrameTest, setPageScaleFactorDoesNotLayout)
+{
+    registerMockedHttpURLLoad("fixed_layout.html");
+
+    FixedLayoutTestWebViewClient client;
+    client.m_screenInfo.deviceScaleFactor = 1;
+    int viewportWidth = 640;
+    int viewportHeight = 480;
+
+    WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client));
+    webViewImpl->settings()->setApplyDeviceScaleFactorInCompositor(true);
+    webViewImpl->settings()->setApplyPageScaleFactorInCompositor(true);
+    webViewImpl->enableFixedLayoutMode(true);
+    webViewImpl->settings()->setViewportEnabled(true);
+    webViewImpl->resize(WebSize(viewportWidth, viewportHeight));
+    webViewImpl->layout();
+
+    int prevLayoutCount = webViewImpl->mainFrameImpl()->frameView()->layoutCount();
+    webViewImpl->setPageScaleFactor(3, WebPoint());
+    EXPECT_EQ(false, webViewImpl->mainFrameImpl()->frameView()->needsLayout());
+    EXPECT_EQ(prevLayoutCount, webViewImpl->mainFrameImpl()->frameView()->layoutCount());
+}
+
 #endif
 
 TEST_F(WebFrameTest, CanOverrideMaximumScaleFactor)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to