Modified: branches/chromium/1364/Source/WebKit/chromium/tests/WebFrameTest.cpp (140431 => 140432)
--- branches/chromium/1364/Source/WebKit/chromium/tests/WebFrameTest.cpp 2013-01-22 17:17:13 UTC (rev 140431)
+++ branches/chromium/1364/Source/WebKit/chromium/tests/WebFrameTest.cpp 2013-01-22 17:24:01 UTC (rev 140432)
@@ -38,6 +38,7 @@
#include "FrameView.h"
#include "Range.h"
#include "ResourceError.h"
+#include "Settings.h"
#include "URLTestHelpers.h"
#include "WebDataSource.h"
#include "WebDocument.h"
@@ -451,7 +452,6 @@
webView->resize(WebSize(viewportWidth, viewportHeight));
webView->setPageScaleFactorLimits(1, 4);
webView->layout();
- webView->setDeviceScaleFactor(1.5f);
WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(webView);
webViewImpl->shouldUseAnimateDoubleTapTimeZeroForTesting(true);
@@ -463,6 +463,7 @@
// Test double tap scale bounds.
// minimumPageScale < doubleTapZoomAlreadyLegibleScale < deviceDpiScale
+ webViewImpl->setDeviceScaleFactor(1.5f);
setScaleAndScrollAndLayout(webViewImpl, WebPoint(0, 0), (webViewImpl->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyLegibleRatio) / 2);
simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
EXPECT_FLOAT_EQ(webViewImpl->deviceScaleFactor(), scale);
@@ -485,7 +486,7 @@
// Zoom in to reset double_tap_zoom_in_effect flag.
webViewImpl->applyScrollAndScale(WebSize(), 1.1f);
- // minimumPageScale < doubleTapZoomAlreadyLegibleScale < deviceDpiScale
+ // minimumPageScale < deviceDpiScale < doubleTapZoomAlreadyLegibleScale
webViewImpl->setDeviceScaleFactor(1.1f);
setScaleAndScrollAndLayout(webViewImpl, WebPoint(0, 0), (webViewImpl->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyLegibleRatio) / 2);
simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
@@ -496,6 +497,83 @@
EXPECT_FLOAT_EQ(webViewImpl->minimumPageScaleFactor(), scale);
}
+#if ENABLE(TEXT_AUTOSIZING)
+TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest)
+{
+ registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html");
+
+ int viewportWidth = 640;
+ int viewportHeight = 480;
+ float doubleTapZoomAlreadyLegibleRatio = 1.2f;
+ float textAutosizingFontScaleFactor = 1.13f;
+ WebKit::WebView* webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_scale_bounds_check_for_auto_zoom_test.html");
+ webView->enableFixedLayoutMode(true);
+ webView->resize(WebSize(viewportWidth, viewportHeight));
+ webView->setPageScaleFactorLimits(1, 4);
+ webView->layout();
+
+ WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(webView);
+ webViewImpl->shouldUseAnimateDoubleTapTimeZeroForTesting(true);
+ webViewImpl->page()->settings()->setTextAutosizingFontScaleFactor(textAutosizingFontScaleFactor);
+ float doubleTapZoomAlreadyLegibleScale = webViewImpl->minimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
+
+ WebRect div(200, 100, 200, 150);
+ WebPoint doubleTapPoint(div.x + 50, div.y + 50);
+ float scale;
+
+ // Test double tap scale bounds.
+ // minimumPageScale < doubleTapZoomAlreadyLegibleScale < deviceDpiScale < deviceDpiScale * textAutosizingFontScaleFactor
+ webViewImpl->setDeviceScaleFactor(1.5f);
+ float legibleScale = webViewImpl->deviceScaleFactor() * textAutosizingFontScaleFactor;
+ setScaleAndScrollAndLayout(webViewImpl, WebPoint(0, 0), (webViewImpl->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyLegibleRatio) / 2);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(legibleScale, scale);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(webViewImpl->minimumPageScaleFactor(), scale);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(legibleScale, scale);
+
+ // Zoom in to reset double_tap_zoom_in_effect flag.
+ webViewImpl->applyScrollAndScale(WebSize(), 1.1f);
+ // deviceDpiScale < deviceDpiScale * textAutosizingFontScaleFactor < minimumPageScale < doubleTapZoomAlreadyLegibleScale
+ webViewImpl->setDeviceScaleFactor(0.5f);
+ legibleScale = webViewImpl->deviceScaleFactor() * textAutosizingFontScaleFactor;
+ setScaleAndScrollAndLayout(webViewImpl, WebPoint(0, 0), (webViewImpl->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyLegibleRatio) / 2);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(webViewImpl->minimumPageScaleFactor(), scale);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(webViewImpl->minimumPageScaleFactor(), scale);
+
+ // Zoom in to reset double_tap_zoom_in_effect flag.
+ webViewImpl->applyScrollAndScale(WebSize(), 1.1f);
+ // minimumPageScale < deviceDpiScale < deviceDpiScale * textAutosizingFontScaleFactor < doubleTapZoomAlreadyLegibleScale
+ webViewImpl->setDeviceScaleFactor(1.05f);
+ legibleScale = webViewImpl->deviceScaleFactor() * textAutosizingFontScaleFactor;
+ setScaleAndScrollAndLayout(webViewImpl, WebPoint(0, 0), (webViewImpl->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyLegibleRatio) / 2);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(webViewImpl->minimumPageScaleFactor(), scale);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(webViewImpl->minimumPageScaleFactor(), scale);
+
+ // Zoom in to reset double_tap_zoom_in_effect flag.
+ webViewImpl->applyScrollAndScale(WebSize(), 1.1f);
+ // minimumPageScale < deviceDpiScale < doubleTapZoomAlreadyLegibleScale < deviceDpiScale * textAutosizingFontScaleFactor
+ webViewImpl->setDeviceScaleFactor(1.1f);
+ legibleScale = webViewImpl->deviceScaleFactor() * textAutosizingFontScaleFactor;
+ setScaleAndScrollAndLayout(webViewImpl, WebPoint(0, 0), (webViewImpl->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyLegibleRatio) / 2);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(legibleScale, scale);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(webViewImpl->minimumPageScaleFactor(), scale);
+ simulateDoubleTap(webViewImpl, doubleTapPoint, scale);
+ EXPECT_FLOAT_EQ(legibleScale, scale);
+}
+#endif
+
// This test depends on code that is compiled conditionally. We likely need to
// add the proper ifdef when re-enabling it. See
// https://bugs.webkit.org/show_bug.cgi?id=98558