Index: android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java |
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java |
index ed6b10b1c3656c705f9d1e0486a675bb92bce5a8..ea0f68a74bb3ef083d756ac2311d9ff09a8baba1 100644 |
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java |
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java |
@@ -1355,6 +1355,127 @@ public class AwSettingsTest extends AwTestBase { |
private int mOnScaleChangedCallCount; |
} |
+ class AwSettingsForceZeroLayoutHeightTestHelper extends AwSettingsTestHelper<Boolean> { |
+ |
+ AwSettingsForceZeroLayoutHeightTestHelper( |
+ AwTestContainerView containerView, |
+ TestAwContentsClient contentViewClient, |
+ boolean withViewPortTag) throws Throwable { |
+ super(containerView, contentViewClient, true); |
+ mWithViewPortTag = withViewPortTag; |
+ mAwSettings.setUseWideViewPort(true); |
+ } |
+ |
+ @Override |
+ protected Boolean getAlteredValue() { |
+ return ENABLED; |
+ } |
+ |
+ @Override |
+ protected Boolean getInitialValue() { |
+ return DISABLED; |
+ } |
+ |
+ @Override |
+ protected Boolean getCurrentValue() { |
+ return mAwSettings.getForceZeroLayoutHeight(); |
+ } |
+ |
+ @Override |
+ protected void setCurrentValue(Boolean value) { |
+ mAwSettings.setForceZeroLayoutHeight(value); |
+ } |
+ |
+ @Override |
+ protected void doEnsureSettingHasValue(Boolean value) throws Throwable { |
+ loadDataSync(getData()); |
+ int height = Integer.parseInt(getTitleOnUiThread()); |
+ if (value) { |
+ assertEquals(0, height); |
+ } else { |
+ assertTrue("Div should be at least 50px high, was: " + height, height >= 50); |
+ } |
+ } |
+ |
+ private String getData() { |
+ return "<html><head>" + |
+ (mWithViewPortTag ? "<meta name='viewport' content='height=3000' />" : "") + |
+ " <script type='text/javascript'> " + |
+ " window.addEventListener('load', function(event) { " + |
+ " document.title = document.getElementById('testDiv').clientHeight; " + |
+ " }); " + |
+ " </script> " + |
+ "</head>" + |
+ "<body> " + |
+ " <div style='height:50px;'>test</div> " + |
+ " <div id='testDiv' style='height:100%;'></div> " + |
+ "</body></html>"; |
+ } |
+ |
+ private final boolean mWithViewPortTag; |
+ } |
+ |
+ class AwSettingsZeroLayoutHeightDisablesViewportQuirkTestHelper extends |
+ AwSettingsTestHelper<Boolean> { |
+ |
+ AwSettingsZeroLayoutHeightDisablesViewportQuirkTestHelper( |
+ AwTestContainerView containerView, |
+ TestAwContentsClient contentViewClient) throws Throwable { |
+ super(containerView, contentViewClient, true); |
+ mAwSettings.setUseWideViewPort(true); |
+ mAwSettings.setForceZeroLayoutHeight(true); |
+ } |
+ |
+ @Override |
+ protected Boolean getAlteredValue() { |
+ return ENABLED; |
+ } |
+ |
+ @Override |
+ protected Boolean getInitialValue() { |
+ return DISABLED; |
+ } |
+ |
+ @Override |
+ protected Boolean getCurrentValue() { |
+ return mAwSettings.getZeroLayoutHeightDisablesViewportQuirk(); |
+ } |
+ |
+ @Override |
+ protected void setCurrentValue(Boolean value) { |
+ mAwSettings.setZeroLayoutHeightDisablesViewportQuirk(value); |
+ } |
+ |
+ @Override |
+ protected void doEnsureSettingHasValue(Boolean value) throws Throwable { |
+ DeviceDisplayInfo deviceInfo = DeviceDisplayInfo.create(mContext); |
+ int displayWidth = (int) (deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale()); |
+ |
+ loadDataSync(getData()); |
+ int width = Integer.parseInt(getTitleOnUiThread()); |
+ if (value) { |
+ assertEquals(displayWidth, width); |
+ } else { |
+ assertEquals(3000, width); |
+ } |
+ } |
+ |
+ private String getData() { |
+ return "<html><head>" + |
+ "<meta name='viewport' content='width=3000' />" + |
+ " <script type='text/javascript'> " + |
+ " window.addEventListener('load', function(event) { " + |
+ " document.title = document.documentElement.clientWidth; " + |
+ " }); " + |
+ " </script> " + |
+ "</head>" + |
+ "<body> " + |
+ " <div style='height:50px;'>test</div> " + |
+ " <div id='testDiv' style='height:100%;'></div> " + |
+ "</body></html>"; |
+ } |
+ } |
+ |
// The test verifies that JavaScript is disabled upon WebView |
// creation without accessing AwSettings. If the test passes, |
// it means that WebView-specific web preferences configuration |
@@ -2484,6 +2605,39 @@ public class AwSettingsTest extends AwTestBase { |
@SmallTest |
@Feature({"AndroidWebView", "Preferences"}) |
+ public void testForceZeroLayoutHeightWithTwoViews() throws Throwable { |
+ ViewPair views = createViews(); |
+ runPerViewSettingsTest( |
+ new AwSettingsForceZeroLayoutHeightTestHelper( |
+ views.getContainer0(), views.getClient0(), false), |
+ new AwSettingsForceZeroLayoutHeightTestHelper( |
+ views.getContainer1(), views.getClient1(), false)); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"AndroidWebView", "Preferences"}) |
+ public void testForceZeroLayoutHeightViewportTagWithTwoViews() throws Throwable { |
+ ViewPair views = createViews(); |
+ runPerViewSettingsTest( |
+ new AwSettingsForceZeroLayoutHeightTestHelper( |
+ views.getContainer0(), views.getClient0(), true), |
+ new AwSettingsForceZeroLayoutHeightTestHelper( |
+ views.getContainer1(), views.getClient1(), true)); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"AndroidWebView", "Preferences"}) |
+ public void testZeroLayoutHeightDisablesViewportQuirkWithTwoViews() throws Throwable { |
+ ViewPair views = createViews(); |
+ runPerViewSettingsTest( |
+ new AwSettingsZeroLayoutHeightDisablesViewportQuirkTestHelper( |
+ views.getContainer0(), views.getClient0()), |
+ new AwSettingsZeroLayoutHeightDisablesViewportQuirkTestHelper( |
+ views.getContainer1(), views.getClient1())); |
+ } |
+ |
+ @SmallTest |
+ @Feature({"AndroidWebView", "Preferences"}) |
public void testLoadWithOverviewModeWithTwoViews() throws Throwable { |
ViewPair views = createViews(); |
runPerViewSettingsTest( |