| Index: Source/web/tests/WebFrameTest.cpp
|
| diff --git a/Source/web/tests/WebFrameTest.cpp b/Source/web/tests/WebFrameTest.cpp
|
| index 3ebaed81af6d3a1ae437d36ed36b99f831c19753..b1dc367296c11b145ad4935922b06edf73b8ae1a 100644
|
| --- a/Source/web/tests/WebFrameTest.cpp
|
| +++ b/Source/web/tests/WebFrameTest.cpp
|
| @@ -1166,6 +1166,7 @@ TEST_F(WebFrameTest, DivAutoZoomParamsTest)
|
| const float deviceScaleFactor = 2.0f;
|
| int viewportWidth = 640 / deviceScaleFactor;
|
| int viewportHeight = 1280 / deviceScaleFactor;
|
| + float doubleTapZoomAlreadyLegibleRatio = 1.2f;
|
| m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_div_test.html"); //
|
| m_webView->setDeviceScaleFactor(deviceScaleFactor);
|
| m_webView->setPageScaleFactorLimits(0.01f, 4);
|
| @@ -1182,40 +1183,38 @@ TEST_F(WebFrameTest, DivAutoZoomParamsTest)
|
| WebRect tallBlockBounds;
|
| float scale;
|
| WebPoint scroll;
|
| - bool doubleTapShouldZoomOut;
|
| +
|
| + float doubleTapZoomAlreadyLegibleScale = webViewImpl()->minimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
|
|
|
| // Test double-tap zooming into wide div.
|
| wideBlockBounds = webViewImpl()->computeBlockBounds(doubleTapPointWide, false);
|
| - webViewImpl()->computeScaleAndScrollForBlockRect(wideBlockBounds, touchPointPadding, scale, scroll, doubleTapShouldZoomOut);
|
| + webViewImpl()->computeScaleAndScrollForBlockRect(wideBlockBounds, touchPointPadding, doubleTapZoomAlreadyLegibleScale, scale, scroll);
|
| // The div should horizontally fill the screen (modulo margins), and
|
| // vertically centered (modulo integer rounding).
|
| EXPECT_NEAR(viewportWidth / (float) wideDiv.width, scale, 0.1);
|
| EXPECT_NEAR(wideDiv.x, scroll.x, 20);
|
| EXPECT_EQ(0, scroll.y);
|
| - EXPECT_FALSE(doubleTapShouldZoomOut);
|
|
|
| setScaleAndScrollAndLayout(webViewImpl(), scroll, scale);
|
|
|
| // Test zoom out back to minimum scale.
|
| wideBlockBounds = webViewImpl()->computeBlockBounds(doubleTapPointWide, false);
|
| - webViewImpl()->computeScaleAndScrollForBlockRect(wideBlockBounds, touchPointPadding, scale, scroll, doubleTapShouldZoomOut);
|
| - EXPECT_TRUE(doubleTapShouldZoomOut);
|
| + webViewImpl()->computeScaleAndScrollForBlockRect(wideBlockBounds, touchPointPadding, doubleTapZoomAlreadyLegibleScale, scale, scroll);
|
|
|
| scale = webViewImpl()->minimumPageScaleFactor();
|
| setScaleAndScrollAndLayout(webViewImpl(), WebPoint(0, 0), scale);
|
|
|
| // Test double-tap zooming into tall div.
|
| tallBlockBounds = webViewImpl()->computeBlockBounds(doubleTapPointTall, false);
|
| - webViewImpl()->computeScaleAndScrollForBlockRect(tallBlockBounds, touchPointPadding, scale, scroll, doubleTapShouldZoomOut);
|
| + webViewImpl()->computeScaleAndScrollForBlockRect(tallBlockBounds, touchPointPadding, doubleTapZoomAlreadyLegibleScale, scale, scroll);
|
| // The div should start at the top left of the viewport.
|
| EXPECT_NEAR(viewportWidth / (float) tallDiv.width, scale, 0.1);
|
| EXPECT_NEAR(tallDiv.x, scroll.x, 20);
|
| EXPECT_NEAR(tallDiv.y, scroll.y, 20);
|
| - EXPECT_FALSE(doubleTapShouldZoomOut);
|
|
|
| // Test for Non-doubletap scaling
|
| // Test zooming into div.
|
| - webViewImpl()->computeScaleAndScrollForBlockRect(webViewImpl()->computeBlockBounds(WebRect(250, 250, 10, 10), true), 0, scale, scroll, doubleTapShouldZoomOut);
|
| + webViewImpl()->computeScaleAndScrollForBlockRect(webViewImpl()->computeBlockBounds(WebRect(250, 250, 10, 10), true), 0, doubleTapZoomAlreadyLegibleScale, scale, scroll);
|
| EXPECT_NEAR(viewportWidth / (float) wideDiv.width, scale, 0.1);
|
| }
|
|
|
| @@ -1240,6 +1239,37 @@ void simulateDoubleTap(WebViewImpl* webViewImpl, WebPoint& point, float& scale)
|
| simulatePageScale(webViewImpl, scale);
|
| }
|
|
|
| +TEST_F(WebFrameTest, DivAutoZoomWideDivTest)
|
| +{
|
| + registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html");
|
| +
|
| + const float deviceScaleFactor = 2.0f;
|
| + int viewportWidth = 640 / deviceScaleFactor;
|
| + int viewportHeight = 1280 / deviceScaleFactor;
|
| + float doubleTapZoomAlreadyLegibleRatio = 1.2f;
|
| + m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "get_wide_div_for_auto_zoom_test.html");
|
| + m_webView->enableFixedLayoutMode(true);
|
| + m_webView->resize(WebSize(viewportWidth, viewportHeight));
|
| + m_webView->setPageScaleFactorLimits(1.0f, 4);
|
| + m_webView->setDeviceScaleFactor(deviceScaleFactor);
|
| + m_webView->setPageScaleFactor(1.0f, WebPoint(0, 0));
|
| + m_webView->layout();
|
| +
|
| + webViewImpl()->enableFakePageScaleAnimationForTesting(true);
|
| +
|
| + float doubleTapZoomAlreadyLegibleScale = webViewImpl()->minimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
|
| +
|
| + WebRect div(0, 100, viewportWidth, 150);
|
| + WebPoint point(div.x + 50, div.y + 50);
|
| + float scale;
|
| + setScaleAndScrollAndLayout(webViewImpl(), WebPoint(0, 0), (webViewImpl()->minimumPageScaleFactor()) * (1 + doubleTapZoomAlreadyLegibleRatio) / 2);
|
| +
|
| + simulateDoubleTap(webViewImpl(), point, scale);
|
| + EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale);
|
| + simulateDoubleTap(webViewImpl(), point, scale);
|
| + EXPECT_FLOAT_EQ(webViewImpl()->minimumPageScaleFactor(), scale);
|
| +}
|
| +
|
| TEST_F(WebFrameTest, DivAutoZoomMultipleDivsTest)
|
| {
|
| registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html");
|
| @@ -1329,11 +1359,11 @@ TEST_F(WebFrameTest, DivAutoZoomScaleBoundsTest)
|
| doubleTapZoomAlreadyLegibleScale = webViewImpl()->minimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
|
| 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);
|
| + simulateDoubleTap(webViewImpl(), doubleTapPoint, scale);
|
| + EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale);
|
|
|
| // Zoom in to reset double_tap_zoom_in_effect flag.
|
| webViewImpl()->applyScrollAndScale(WebSize(), 1.1f);
|
| @@ -1343,11 +1373,11 @@ TEST_F(WebFrameTest, DivAutoZoomScaleBoundsTest)
|
| doubleTapZoomAlreadyLegibleScale = webViewImpl()->minimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
|
| 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);
|
| + simulateDoubleTap(webViewImpl(), doubleTapPoint, scale);
|
| + EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale);
|
| }
|
|
|
| TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest)
|
| @@ -1364,6 +1394,7 @@ TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest)
|
| m_webView->layout();
|
|
|
| webViewImpl()->enableFakePageScaleAnimationForTesting(true);
|
| + webViewImpl()->page()->settings().setTextAutosizingEnabled(true);
|
| webViewImpl()->page()->settings().setTextAutosizingFontScaleFactor(textAutosizingFontScaleFactor);
|
|
|
| WebRect div(200, 100, 200, 150);
|
| @@ -1392,11 +1423,11 @@ TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest)
|
| doubleTapZoomAlreadyLegibleScale = webViewImpl()->minimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
|
| 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);
|
| + simulateDoubleTap(webViewImpl(), doubleTapPoint, scale);
|
| + EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale);
|
|
|
| // Zoom in to reset double_tap_zoom_in_effect flag.
|
| webViewImpl()->applyScrollAndScale(WebSize(), 1.1f);
|
| @@ -1406,11 +1437,11 @@ TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest)
|
| doubleTapZoomAlreadyLegibleScale = webViewImpl()->minimumPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
|
| 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);
|
| + simulateDoubleTap(webViewImpl(), doubleTapPoint, scale);
|
| + EXPECT_FLOAT_EQ(doubleTapZoomAlreadyLegibleScale, scale);
|
|
|
| // Zoom in to reset double_tap_zoom_in_effect flag.
|
| webViewImpl()->applyScrollAndScale(WebSize(), 1.1f);
|
|
|