| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 2146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2157 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); | 2157 webViewHelper.webView()->setDefaultPageScaleLimits(0.25f, 5); |
| 2158 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); | 2158 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); |
| 2159 webViewHelper.webView()->settings()->setUseWideViewport(false); | 2159 webViewHelper.webView()->settings()->setUseWideViewport(false); |
| 2160 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); | 2160 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); |
| 2161 | 2161 |
| 2162 EXPECT_NEAR(1.0f, webViewHelper.webViewImpl()->pageScaleFactor(), 0.01f); | 2162 EXPECT_NEAR(1.0f, webViewHelper.webViewImpl()->pageScaleFactor(), 0.01f); |
| 2163 EXPECT_NEAR(1.0f, webViewHelper.webViewImpl()->minimumPageScaleFactor(), 0.0
1f); | 2163 EXPECT_NEAR(1.0f, webViewHelper.webViewImpl()->minimumPageScaleFactor(), 0.0
1f); |
| 2164 EXPECT_NEAR(5.0f, webViewHelper.webViewImpl()->maximumPageScaleFactor(), 0.0
1f); | 2164 EXPECT_NEAR(5.0f, webViewHelper.webViewImpl()->maximumPageScaleFactor(), 0.0
1f); |
| 2165 } | 2165 } |
| 2166 | 2166 |
| 2167 class WebFrameResizeTest : public WebFrameTest { | 2167 class WebFrameResizeTest : public ParameterizedWebFrameTest { |
| 2168 protected: | 2168 protected: |
| 2169 | 2169 |
| 2170 static FloatSize computeRelativeOffset(const IntPoint& absoluteOffset, const
LayoutRect& rect) | 2170 static FloatSize computeRelativeOffset(const IntPoint& absoluteOffset, const
LayoutRect& rect) |
| 2171 { | 2171 { |
| 2172 FloatSize relativeOffset = FloatPoint(absoluteOffset) - FloatPoint(rect.
location()); | 2172 FloatSize relativeOffset = FloatPoint(absoluteOffset) - FloatPoint(rect.
location()); |
| 2173 relativeOffset.scale(1.f / rect.width(), 1.f / rect.height()); | 2173 relativeOffset.scale(1.f / rect.width(), 1.f / rect.height()); |
| 2174 return relativeOffset; | 2174 return relativeOffset; |
| 2175 } | 2175 } |
| 2176 | 2176 |
| 2177 void testResizeYieldsCorrectScrollAndScale(const char* url, | 2177 void testResizeYieldsCorrectScrollAndScale(const char* url, |
| 2178 const float initialPageScaleFacto
r, | 2178 const float initialPageScaleFacto
r, |
| 2179 const WebSize scrollOffset, | 2179 const WebSize scrollOffset, |
| 2180 const WebSize viewportSize, | 2180 const WebSize viewportSize, |
| 2181 const bool shouldScaleRelativeToV
iewportWidth) { | 2181 const bool shouldScaleRelativeToV
iewportWidth) { |
| 2182 UseMockScrollbarSettings mockScrollbarSettings; | 2182 UseMockScrollbarSettings mockScrollbarSettings; |
| 2183 registerMockedHttpURLLoad(url); | 2183 registerMockedHttpURLLoad(url); |
| 2184 | 2184 |
| 2185 const float aspectRatio = static_cast<float>(viewportSize.width) / viewp
ortSize.height; | 2185 const float aspectRatio = static_cast<float>(viewportSize.width) / viewp
ortSize.height; |
| 2186 | 2186 |
| 2187 FrameTestHelpers::WebViewHelper webViewHelper; | 2187 FrameTestHelpers::WebViewHelper webViewHelper(this); |
| 2188 webViewHelper.initializeAndLoad(m_baseURL + url, true, 0, 0, enableViewp
ortSettings); | 2188 webViewHelper.initializeAndLoad(m_baseURL + url, true, 0, 0, enableViewp
ortSettings); |
| 2189 webViewHelper.webViewImpl()->setDefaultPageScaleLimits(0.25f, 5); | 2189 webViewHelper.webViewImpl()->setDefaultPageScaleLimits(0.25f, 5); |
| 2190 | 2190 |
| 2191 // Origin scrollOffsets preserved under resize. | 2191 // Origin scrollOffsets preserved under resize. |
| 2192 { | 2192 { |
| 2193 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.width, view
portSize.height)); | 2193 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.width, view
portSize.height)); |
| 2194 webViewHelper.webViewImpl()->setPageScaleFactor(initialPageScaleFact
or); | 2194 webViewHelper.webViewImpl()->setPageScaleFactor(initialPageScaleFact
or); |
| 2195 ASSERT_EQ(viewportSize, webViewHelper.webViewImpl()->size()); | 2195 ASSERT_EQ(viewportSize, webViewHelper.webViewImpl()->size()); |
| 2196 ASSERT_EQ(initialPageScaleFactor, webViewHelper.webViewImpl()->pageS
caleFactor()); | 2196 ASSERT_EQ(initialPageScaleFactor, webViewHelper.webViewImpl()->pageS
caleFactor()); |
| 2197 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.height, vie
wportSize.width)); | 2197 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.height, vie
wportSize.width)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 2210 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.width, view
portSize.height * 0.8f)); | 2210 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.width, view
portSize.height * 0.8f)); |
| 2211 EXPECT_EQ(initialPageScaleFactor, webViewHelper.webViewImpl()->pageS
caleFactor()); | 2211 EXPECT_EQ(initialPageScaleFactor, webViewHelper.webViewImpl()->pageS
caleFactor()); |
| 2212 EXPECT_EQ(expectedScrollOffset, webViewHelper.webViewImpl()->mainFra
me()->scrollOffset()); | 2212 EXPECT_EQ(expectedScrollOffset, webViewHelper.webViewImpl()->mainFra
me()->scrollOffset()); |
| 2213 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.width, view
portSize.height * 0.8f)); | 2213 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.width, view
portSize.height * 0.8f)); |
| 2214 EXPECT_EQ(initialPageScaleFactor, webViewHelper.webViewImpl()->pageS
caleFactor()); | 2214 EXPECT_EQ(initialPageScaleFactor, webViewHelper.webViewImpl()->pageS
caleFactor()); |
| 2215 EXPECT_EQ(expectedScrollOffset, webViewHelper.webViewImpl()->mainFra
me()->scrollOffset()); | 2215 EXPECT_EQ(expectedScrollOffset, webViewHelper.webViewImpl()->mainFra
me()->scrollOffset()); |
| 2216 } | 2216 } |
| 2217 } | 2217 } |
| 2218 }; | 2218 }; |
| 2219 | 2219 |
| 2220 TEST_F(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForWidthEqualsDevice
Width) | 2220 INSTANTIATE_TEST_CASE_P(All, WebFrameResizeTest, ::testing::Values( |
| 2221 ParameterizedWebFrameTestConfig::Default, |
| 2222 ParameterizedWebFrameTestConfig::RootLayerScrolls)); |
| 2223 |
| 2224 TEST_P(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForWidthEqualsDevice
Width) |
| 2221 { | 2225 { |
| 2222 // With width=device-width, pageScaleFactor is preserved across resizes as | 2226 // With width=device-width, pageScaleFactor is preserved across resizes as |
| 2223 // long as the content adjusts according to the device-width. | 2227 // long as the content adjusts according to the device-width. |
| 2224 const char* url = "resize_scroll_mobile.html"; | 2228 const char* url = "resize_scroll_mobile.html"; |
| 2225 const float initialPageScaleFactor = 1; | 2229 const float initialPageScaleFactor = 1; |
| 2226 const WebSize scrollOffset(0, 50); | 2230 const WebSize scrollOffset(0, 50); |
| 2227 const WebSize viewportSize(120, 160); | 2231 const WebSize viewportSize(120, 160); |
| 2228 const bool shouldScaleRelativeToViewportWidth = true; | 2232 const bool shouldScaleRelativeToViewportWidth = true; |
| 2229 | 2233 |
| 2230 testResizeYieldsCorrectScrollAndScale( | 2234 testResizeYieldsCorrectScrollAndScale( |
| 2231 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela
tiveToViewportWidth); | 2235 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela
tiveToViewportWidth); |
| 2232 } | 2236 } |
| 2233 | 2237 |
| 2234 TEST_F(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForMinimumScale) | 2238 TEST_P(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForMinimumScale) |
| 2235 { | 2239 { |
| 2236 // This tests a scenario where minimum-scale is set to 1.0, but some element | 2240 // This tests a scenario where minimum-scale is set to 1.0, but some element |
| 2237 // on the page is slightly larger than the portrait width, so our "natural" | 2241 // on the page is slightly larger than the portrait width, so our "natural" |
| 2238 // minimum-scale would be lower. In that case, we should stick to 1.0 scale | 2242 // minimum-scale would be lower. In that case, we should stick to 1.0 scale |
| 2239 // on rotation and not do anything strange. | 2243 // on rotation and not do anything strange. |
| 2240 const char* url = "resize_scroll_minimum_scale.html"; | 2244 const char* url = "resize_scroll_minimum_scale.html"; |
| 2241 const float initialPageScaleFactor = 1; | 2245 const float initialPageScaleFactor = 1; |
| 2242 const WebSize scrollOffset(0, 0); | 2246 const WebSize scrollOffset(0, 0); |
| 2243 const WebSize viewportSize(240, 320); | 2247 const WebSize viewportSize(240, 320); |
| 2244 const bool shouldScaleRelativeToViewportWidth = false; | 2248 const bool shouldScaleRelativeToViewportWidth = false; |
| 2245 | 2249 |
| 2246 testResizeYieldsCorrectScrollAndScale( | 2250 testResizeYieldsCorrectScrollAndScale( |
| 2247 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela
tiveToViewportWidth); | 2251 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela
tiveToViewportWidth); |
| 2248 } | 2252 } |
| 2249 | 2253 |
| 2250 TEST_F(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForFixedWidth) | 2254 TEST_P(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForFixedWidth) |
| 2251 { | 2255 { |
| 2252 // With a fixed width, pageScaleFactor scales by the relative change in view
port width. | 2256 // With a fixed width, pageScaleFactor scales by the relative change in view
port width. |
| 2253 const char* url = "resize_scroll_fixed_width.html"; | 2257 const char* url = "resize_scroll_fixed_width.html"; |
| 2254 const float initialPageScaleFactor = 2; | 2258 const float initialPageScaleFactor = 2; |
| 2255 const WebSize scrollOffset(0, 200); | 2259 const WebSize scrollOffset(0, 200); |
| 2256 const WebSize viewportSize(240, 320); | 2260 const WebSize viewportSize(240, 320); |
| 2257 const bool shouldScaleRelativeToViewportWidth = true; | 2261 const bool shouldScaleRelativeToViewportWidth = true; |
| 2258 | 2262 |
| 2259 testResizeYieldsCorrectScrollAndScale( | 2263 testResizeYieldsCorrectScrollAndScale( |
| 2260 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela
tiveToViewportWidth); | 2264 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela
tiveToViewportWidth); |
| 2261 } | 2265 } |
| 2262 | 2266 |
| 2263 TEST_F(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForFixedLayout) | 2267 TEST_P(WebFrameResizeTest, ResizeYieldsCorrectScrollAndScaleForFixedLayout) |
| 2264 { | 2268 { |
| 2265 // With a fixed layout, pageScaleFactor scales by the relative change in vie
wport width. | 2269 // With a fixed layout, pageScaleFactor scales by the relative change in vie
wport width. |
| 2266 const char* url = "resize_scroll_fixed_layout.html"; | 2270 const char* url = "resize_scroll_fixed_layout.html"; |
| 2267 const float initialPageScaleFactor = 2; | 2271 const float initialPageScaleFactor = 2; |
| 2268 const WebSize scrollOffset(200, 400); | 2272 const WebSize scrollOffset(200, 400); |
| 2269 const WebSize viewportSize(320, 240); | 2273 const WebSize viewportSize(320, 240); |
| 2270 const bool shouldScaleRelativeToViewportWidth = true; | 2274 const bool shouldScaleRelativeToViewportWidth = true; |
| 2271 | 2275 |
| 2272 testResizeYieldsCorrectScrollAndScale( | 2276 testResizeYieldsCorrectScrollAndScale( |
| 2273 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela
tiveToViewportWidth); | 2277 url, initialPageScaleFactor, scrollOffset, viewportSize, shouldScaleRela
tiveToViewportWidth); |
| (...skipping 5565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7839 | 7843 |
| 7840 TEST_F(WebFrameTest, MaxFramesDetach) | 7844 TEST_F(WebFrameTest, MaxFramesDetach) |
| 7841 { | 7845 { |
| 7842 registerMockedHttpURLLoad("max-frames-detach.html"); | 7846 registerMockedHttpURLLoad("max-frames-detach.html"); |
| 7843 FrameTestHelpers::WebViewHelper webViewHelper; | 7847 FrameTestHelpers::WebViewHelper webViewHelper; |
| 7844 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "max-
frames-detach.html", true); | 7848 WebViewImpl* webViewImpl = webViewHelper.initializeAndLoad(m_baseURL + "max-
frames-detach.html", true); |
| 7845 webViewImpl->mainFrameImpl()->collectGarbage(); | 7849 webViewImpl->mainFrameImpl()->collectGarbage(); |
| 7846 } | 7850 } |
| 7847 | 7851 |
| 7848 } // namespace blink | 7852 } // namespace blink |
| OLD | NEW |