Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(957)

Side by Side Diff: Source/web/tests/WebFrameTest.cpp

Issue 1207103002: Update WebLocalFrameImpl and RotationViewportAnchor for root layer scrolling. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/web/tests/PinchViewportTest.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « Source/web/tests/PinchViewportTest.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698