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

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

Issue 26251010: Reset to initial page scale in additional scenarios. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add test coverage and extra setNeedsLayout() call Created 7 years, 1 month 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 | Annotate | Revision Log
« Source/web/WebViewImpl.cpp ('K') | « Source/web/WebViewImpl.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 942 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 // Make sure we don't reset to initial scale if the page continues to load. 953 // Make sure we don't reset to initial scale if the page continues to load.
954 webViewHelper.webViewImpl()->didCommitLoad(false, false); 954 webViewHelper.webViewImpl()->didCommitLoad(false, false);
955 webViewHelper.webViewImpl()->didChangeContentsSize(); 955 webViewHelper.webViewImpl()->didChangeContentsSize();
956 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ()); 956 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ());
957 957
958 // Make sure we don't reset to initial scale if the viewport size changes. 958 // Make sure we don't reset to initial scale if the viewport size changes.
959 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight + 100) ); 959 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight + 100) );
960 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ()); 960 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ());
961 } 961 }
962 962
963 TEST_F(WebFrameTest, DelayedViewportInitialScale)
964 {
965 UseMockScrollbarSettings mockScrollbarSettings;
966 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
967
968 FixedLayoutTestWebViewClient client;
969 client.m_screenInfo.deviceScaleFactor = 1;
970 int viewportWidth = 640;
971 int viewportHeight = 480;
972
973 FrameTestHelpers::WebViewHelper webViewHelper;
974 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client);
975 webViewHelper.webView()->settings()->setViewportEnabled(true);
976 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
977
978 EXPECT_EQ(0.25f, webViewHelper.webView()->pageScaleFactor());
979
980 WebCore::Document* document = webViewHelper.webViewImpl()->page()->mainFrame ()->document();
981 WebCore::ViewportDescription description = document->viewportDescription();
982 description.zoom = 2;
983 document->setViewportDescription(description);
984 webViewHelper.webView()->layout();
985 EXPECT_EQ(2, webViewHelper.webView()->pageScaleFactor());
986 }
987
963 TEST_F(WebFrameTest, setLoadWithOverviewModeToFalse) 988 TEST_F(WebFrameTest, setLoadWithOverviewModeToFalse)
964 { 989 {
965 UseMockScrollbarSettings mockScrollbarSettings; 990 UseMockScrollbarSettings mockScrollbarSettings;
966 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 991 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
967 992
968 FixedLayoutTestWebViewClient client; 993 FixedLayoutTestWebViewClient client;
969 client.m_screenInfo.deviceScaleFactor = 1; 994 client.m_screenInfo.deviceScaleFactor = 1;
970 int viewportWidth = 640; 995 int viewportWidth = 640;
971 int viewportHeight = 480; 996 int viewportHeight = 480;
972 997
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
1185 1210
1186 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial Scale) 1211 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial Scale)
1187 { 1212 {
1188 UseMockScrollbarSettings mockScrollbarSettings; 1213 UseMockScrollbarSettings mockScrollbarSettings;
1189 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1214 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1190 1215
1191 FixedLayoutTestWebViewClient client; 1216 FixedLayoutTestWebViewClient client;
1192 client.m_screenInfo.deviceScaleFactor = 1; 1217 client.m_screenInfo.deviceScaleFactor = 1;
1193 int viewportWidth = 640; 1218 int viewportWidth = 640;
1194 int viewportHeight = 480; 1219 int viewportHeight = 480;
1195 float enforcedPageScalePactor = 0.5f; 1220 float enforcedPageScaleFactor = 0.5f;
1196 1221
1197 FrameTestHelpers::WebViewHelper webViewHelper; 1222 FrameTestHelpers::WebViewHelper webViewHelper;
1198 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client); 1223 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client);
1199 webViewHelper.webView()->settings()->setViewportEnabled(true); 1224 webViewHelper.webView()->settings()->setViewportEnabled(true);
1200 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScalePactor ); 1225 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1201 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1226 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1202 1227
1203 EXPECT_EQ(enforcedPageScalePactor, webViewHelper.webView()->pageScaleFactor( )); 1228 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1204 } 1229 }
1205 1230
1206 TEST_F(WebFrameTest, WideViewportInitialScaleDoesNotExpandFixedLayoutWidth) 1231 TEST_F(WebFrameTest, WideViewportInitialScaleDoesNotExpandFixedLayoutWidth)
1207 { 1232 {
1208 UseMockScrollbarSettings mockScrollbarSettings; 1233 UseMockScrollbarSettings mockScrollbarSettings;
1209 registerMockedHttpURLLoad("viewport-device-0.5x-initial-scale.html"); 1234 registerMockedHttpURLLoad("viewport-device-0.5x-initial-scale.html");
1210 1235
1211 FixedLayoutTestWebViewClient client; 1236 FixedLayoutTestWebViewClient client;
1212 client.m_screenInfo.deviceScaleFactor = 1; 1237 client.m_screenInfo.deviceScaleFactor = 1;
1213 int viewportWidth = 640; 1238 int viewportWidth = 640;
1214 int viewportHeight = 480; 1239 int viewportHeight = 480;
1215 1240
1216 FrameTestHelpers::WebViewHelper webViewHelper; 1241 FrameTestHelpers::WebViewHelper webViewHelper;
1217 webViewHelper.initializeAndLoad(m_baseURL + "viewport-device-0.5x-initial-sc ale.html", true, 0, &client); 1242 webViewHelper.initializeAndLoad(m_baseURL + "viewport-device-0.5x-initial-sc ale.html", true, 0, &client);
1218 webViewHelper.webView()->settings()->setViewportEnabled(true); 1243 webViewHelper.webView()->settings()->setViewportEnabled(true);
1219 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1244 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1220 webViewHelper.webView()->settings()->setUseWideViewport(true); 1245 webViewHelper.webView()->settings()->setUseWideViewport(true);
1221 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1246 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1222 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1247 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1223 1248
1224 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width()); 1249 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width());
1250 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor());
1251
1252 webViewHelper.webView()->setFixedLayoutSize(WebSize(2000, 1500));
1253 webViewHelper.webView()->layout();
1254 EXPECT_EQ(2000, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->l ayoutSize().width());
1255 EXPECT_EQ(0.5f, webViewHelper.webView()->pageScaleFactor());
1225 } 1256 }
1226 1257
1227 TEST_F(WebFrameTest, WideViewportAndWideContentWithInitialScale) 1258 TEST_F(WebFrameTest, WideViewportAndWideContentWithInitialScale)
1228 { 1259 {
1229 UseMockScrollbarSettings mockScrollbarSettings; 1260 UseMockScrollbarSettings mockScrollbarSettings;
1230 registerMockedHttpURLLoad("wide_document_width_viewport.html"); 1261 registerMockedHttpURLLoad("wide_document_width_viewport.html");
1231 1262
1232 FixedLayoutTestWebViewClient client; 1263 FixedLayoutTestWebViewClient client;
1233 client.m_screenInfo.deviceScaleFactor = 1; 1264 client.m_screenInfo.deviceScaleFactor = 1;
1234 int viewportWidth = 600; 1265 int viewportWidth = 600;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 1372
1342 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width()); 1373 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width());
1343 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1374 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1344 1375
1345 webViewHelper.webView()->settings()->setUseWideViewport(true); 1376 webViewHelper.webView()->settings()->setUseWideViewport(true);
1346 webViewHelper.webView()->layout(); 1377 webViewHelper.webView()->layout();
1347 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width()); 1378 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width());
1348 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1379 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1349 } 1380 }
1350 1381
1351 TEST_F(WebFrameTest, ScaleFactorShouldNotOscillate)
1352 {
1353 UseMockScrollbarSettings mockScrollbarSettings;
1354 registerMockedHttpURLLoad("scale_oscillate.html");
1355
1356 FixedLayoutTestWebViewClient client;
1357 client.m_screenInfo.deviceScaleFactor = static_cast<float>(1.325);
1358 int viewportWidth = 800;
1359 int viewportHeight = 1057;
1360
1361 FrameTestHelpers::WebViewHelper webViewHelper;
1362 webViewHelper.initializeAndLoad(m_baseURL + "scale_oscillate.html", true, 0, &client);
1363 webViewHelper.webView()->settings()->setViewportEnabled(true);
1364 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1365 webViewHelper.webView()->layout();
1366 }
1367
1368 TEST_F(WebFrameTest, setPageScaleFactorDoesNotLayout) 1382 TEST_F(WebFrameTest, setPageScaleFactorDoesNotLayout)
1369 { 1383 {
1370 UseMockScrollbarSettings mockScrollbarSettings; 1384 UseMockScrollbarSettings mockScrollbarSettings;
1371 registerMockedHttpURLLoad("fixed_layout.html"); 1385 registerMockedHttpURLLoad("fixed_layout.html");
1372 1386
1373 FixedLayoutTestWebViewClient client; 1387 FixedLayoutTestWebViewClient client;
1374 client.m_screenInfo.deviceScaleFactor = 1; 1388 client.m_screenInfo.deviceScaleFactor = 1;
1375 // Small viewport to ensure there are always scrollbars. 1389 // Small viewport to ensure there are always scrollbars.
1376 int viewportWidth = 64; 1390 int viewportWidth = 64;
1377 int viewportHeight = 48; 1391 int viewportHeight = 48;
(...skipping 3290 matching lines...) Expand 10 before | Expand all | Expand 10 after
4668 4682
4669 FrameTestHelpers::loadFrame(frame, 4683 FrameTestHelpers::loadFrame(frame,
4670 "javascript:window.frames[1].location.assign('" + m_baseURL + "find.html ')"); 4684 "javascript:window.frames[1].location.assign('" + m_baseURL + "find.html ')");
4671 runPendingTasks(); 4685 runPendingTasks();
4672 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 4686 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
4673 EXPECT_EQ(client.frame(), iframe); 4687 EXPECT_EQ(client.frame(), iframe);
4674 EXPECT_FALSE(client.replacesCurrentHistoryItem()); 4688 EXPECT_FALSE(client.replacesCurrentHistoryItem());
4675 } 4689 }
4676 4690
4677 } // namespace 4691 } // namespace
OLDNEW
« Source/web/WebViewImpl.cpp ('K') | « Source/web/WebViewImpl.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698