| Index: android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java
|
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java
|
| deleted file mode 100644
|
| index 19d93c623491919001e5475b0d3560f456698115..0000000000000000000000000000000000000000
|
| --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java
|
| +++ /dev/null
|
| @@ -1,308 +0,0 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package org.chromium.android_webview.test;
|
| -
|
| -import android.test.suitebuilder.annotation.MediumTest;
|
| -
|
| -import org.chromium.android_webview.AwContents;
|
| -import org.chromium.android_webview.AwSettings;
|
| -import org.chromium.base.test.util.Feature;
|
| -import org.chromium.content.browser.test.util.CallbackHelper;
|
| -import org.chromium.ui.gfx.DeviceDisplayInfo;
|
| -
|
| -import java.util.Locale;
|
| -import java.util.concurrent.Callable;
|
| -
|
| -/**
|
| - * Tests for usage and quirks of viewport related methods.
|
| - */
|
| -public class AwViewportTest extends AwTestBase {
|
| -
|
| - @MediumTest
|
| - @Feature({"AndroidWebView"})
|
| - public void testTargetDensityDpi() throws Throwable {
|
| - final TestAwContentsClient contentClient = new TestAwContentsClient();
|
| - final AwTestContainerView testContainerView =
|
| - createAwTestContainerViewOnMainSync(contentClient);
|
| - final AwContents awContents = testContainerView.getAwContents();
|
| - AwSettings settings = getAwSettingsOnUiThread(awContents);
|
| - CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
|
| -
|
| - final String pageTemplate = "<html><head>" +
|
| - "<meta name='viewport' content='width=device-width, target-densityDpi=%s' />" +
|
| - "</head><body onload='document.title=document.body.clientWidth'></body></html>";
|
| - final String pageDeviceDpi = String.format((Locale)null, pageTemplate, "device-dpi");
|
| - final String pageHighDpi = String.format((Locale)null, pageTemplate, "high-dpi");
|
| - final String pageDpi100 = String.format((Locale)null, pageTemplate, "100");
|
| -
|
| - settings.setJavaScriptEnabled(true);
|
| -
|
| - DeviceDisplayInfo deviceInfo =
|
| - DeviceDisplayInfo.create(getInstrumentation().getTargetContext());
|
| - loadDataSync(awContents, onPageFinishedHelper, pageDeviceDpi, "text/html", false);
|
| - int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
|
| - assertEquals(deviceInfo.getDisplayWidth(), actualWidth, 10f);
|
| -
|
| - float displayWidth = (deviceInfo.getDisplayWidth());
|
| - float deviceDpi = (float) (160f * deviceInfo.getDIPScale());
|
| -
|
| - loadDataSync(awContents, onPageFinishedHelper, pageHighDpi, "text/html", false);
|
| - actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
|
| - assertEquals(displayWidth * (240f / deviceDpi), actualWidth, 10f);
|
| -
|
| - loadDataSync(awContents, onPageFinishedHelper, pageDpi100, "text/html", false);
|
| - actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
|
| - assertEquals(displayWidth * (100f / deviceDpi), actualWidth, 10f);
|
| - }
|
| -
|
| - @MediumTest
|
| - @Feature({"AndroidWebView"})
|
| - public void testWideViewportInitialScaleDoesNotExpandFixedLayoutWidth() throws Throwable {
|
| - final TestAwContentsClient contentClient = new TestAwContentsClient();
|
| - final AwTestContainerView testContainerView =
|
| - createAwTestContainerViewOnMainSync(contentClient);
|
| - final AwContents awContents = testContainerView.getAwContents();
|
| - AwSettings settings = getAwSettingsOnUiThread(awContents);
|
| - CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
|
| -
|
| - final String page = "<html><head>" +
|
| - "<meta name='viewport' content='width=device-width, initial-scale=0.5' />" +
|
| - "</head><body onload='document.title=document.body.clientWidth'></body></html>";
|
| -
|
| - settings.setJavaScriptEnabled(true);
|
| - settings.setUseWideViewPort(true);
|
| -
|
| - DeviceDisplayInfo deviceInfo =
|
| - DeviceDisplayInfo.create(getInstrumentation().getTargetContext());
|
| - loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
|
| - float displayWidth = (float) (deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale());
|
| - int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
|
| - assertEquals(displayWidth, actualWidth, 10f);
|
| - assertEquals(1.0f, getScaleOnUiThread(awContents));
|
| - }
|
| -
|
| - @MediumTest
|
| - @Feature({"AndroidWebView"})
|
| - public void testZeroValuesQuirk() throws Throwable {
|
| - final TestAwContentsClient contentClient = new TestAwContentsClient();
|
| - final AwTestContainerView testContainerView =
|
| - createAwTestContainerViewOnMainSync(contentClient);
|
| - final AwContents awContents = testContainerView.getAwContents();
|
| - AwSettings settings = getAwSettingsOnUiThread(awContents);
|
| - CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
|
| -
|
| - final String page = "<html><head>" +
|
| - "<meta name='viewport' content='width=0, height=0, initial-scale=0.0, " +
|
| - " minimum-scale=0.0, maximum-scale=0.0' />" +
|
| - "</head><body onload='document.title=document.body.clientWidth'></body></html>";
|
| -
|
| - settings.setJavaScriptEnabled(true);
|
| -
|
| - DeviceDisplayInfo deviceInfo =
|
| - DeviceDisplayInfo.create(getInstrumentation().getTargetContext());
|
| - loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
|
| - float displayWidth = (float) (deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale());
|
| - int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
|
| - assertEquals(displayWidth, actualWidth, 10f);
|
| - assertEquals(1.0f, getScaleOnUiThread(awContents));
|
| -
|
| - settings.setUseWideViewPort(true);
|
| - loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
|
| - actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
|
| - assertEquals(displayWidth, actualWidth, 10f);
|
| - assertEquals(1.0f, getScaleOnUiThread(awContents));
|
| - }
|
| -
|
| - @MediumTest
|
| - @Feature({"AndroidWebView"})
|
| - public void testScreenSizeInPhysicalPixelsQuirk() throws Throwable {
|
| - final TestAwContentsClient contentClient = new TestAwContentsClient();
|
| - final AwTestContainerView testContainerView =
|
| - createAwTestContainerViewOnMainSync(contentClient);
|
| - final AwContents awContents = testContainerView.getAwContents();
|
| - AwSettings settings = getAwSettingsOnUiThread(awContents);
|
| - CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
|
| -
|
| - settings.setJavaScriptEnabled(true);
|
| -
|
| - loadUrlSync(awContents, onPageFinishedHelper, "about:blank");
|
| -
|
| - DeviceDisplayInfo deviceInfo =
|
| - DeviceDisplayInfo.create(getInstrumentation().getTargetContext());
|
| - float dipScale = (float) deviceInfo.getDIPScale();
|
| - float physicalDisplayWidth = deviceInfo.getDisplayWidth();
|
| - float cssDisplayWidth = physicalDisplayWidth / dipScale;
|
| - float physicalDisplayHeight = deviceInfo.getDisplayHeight();
|
| - float cssDisplayHeight = physicalDisplayHeight / dipScale;
|
| -
|
| - float screenWidth = Integer.parseInt(
|
| - executeJavaScriptAndWaitForResult(awContents, contentClient, "screen.width"));
|
| - assertEquals(physicalDisplayWidth, screenWidth, 10f);
|
| - float screenAvailWidth = Integer.parseInt(
|
| - executeJavaScriptAndWaitForResult(awContents, contentClient, "screen.availWidth"));
|
| - assertEquals(physicalDisplayWidth, screenAvailWidth, 10f);
|
| - float outerWidth = Integer.parseInt(
|
| - executeJavaScriptAndWaitForResult(awContents, contentClient, "outerWidth"));
|
| - float innerWidth = Integer.parseInt(
|
| - executeJavaScriptAndWaitForResult(awContents, contentClient, "innerWidth"));
|
| - assertEquals(innerWidth * dipScale, outerWidth, 10f);
|
| - String deviceWidthEqualsScreenWidth = executeJavaScriptAndWaitForResult(awContents,
|
| - contentClient,
|
| - "matchMedia(\"screen and (device-width:" + (int) screenWidth + "px)\").matches");
|
| - assertEquals("true", deviceWidthEqualsScreenWidth);
|
| -
|
| - float screenHeight = Integer.parseInt(
|
| - executeJavaScriptAndWaitForResult(awContents, contentClient, "screen.height"));
|
| - assertEquals(physicalDisplayHeight, screenHeight, 10f);
|
| - float screenAvailHeight = Integer.parseInt(
|
| - executeJavaScriptAndWaitForResult(awContents, contentClient, "screen.availHeight"));
|
| - assertEquals(physicalDisplayHeight, screenAvailHeight, 10f);
|
| - float outerHeight = Integer.parseInt(
|
| - executeJavaScriptAndWaitForResult(awContents, contentClient, "outerHeight"));
|
| - float innerHeight = Integer.parseInt(
|
| - executeJavaScriptAndWaitForResult(awContents, contentClient, "innerHeight"));
|
| - assertEquals(innerHeight * dipScale, outerHeight, 10f);
|
| - String deviceHeightEqualsScreenHeight = executeJavaScriptAndWaitForResult(awContents,
|
| - contentClient,
|
| - "matchMedia(\"screen and (device-height:" + (int) screenHeight + "px)\").matches");
|
| - assertEquals("true", deviceHeightEqualsScreenHeight);
|
| - }
|
| -
|
| - @MediumTest
|
| - @Feature({"AndroidWebView"})
|
| - public void testMetaMergeContentQuirk() throws Throwable {
|
| - final TestAwContentsClient contentClient = new TestAwContentsClient();
|
| - final AwTestContainerView testContainerView =
|
| - createAwTestContainerViewOnMainSync(contentClient);
|
| - final AwContents awContents = testContainerView.getAwContents();
|
| - AwSettings settings = getAwSettingsOnUiThread(awContents);
|
| - CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
|
| -
|
| - final int pageWidth = 3000;
|
| - final float pageScale = 1.0f;
|
| - final String page = String.format((Locale)null, "<html><head>" +
|
| - "<meta name='viewport' content='width=%d' />" +
|
| - "<meta name='viewport' content='initial-scale=%.1f' />" +
|
| - "<meta name='viewport' content='user-scalable=0' />" +
|
| - "</head><body onload='document.title=document.body.clientWidth'></body></html>",
|
| - pageWidth, pageScale);
|
| -
|
| - settings.setJavaScriptEnabled(true);
|
| - settings.setUseWideViewPort(true);
|
| - settings.setBuiltInZoomControls(true);
|
| - settings.setSupportZoom(true);
|
| -
|
| - loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
|
| - int width = Integer.parseInt(getTitleOnUiThread(awContents));
|
| - assertEquals(pageWidth, width);
|
| - assertEquals(pageScale, getScaleOnUiThread(awContents));
|
| - assertEquals(false, canZoomInOnUiThread(awContents));
|
| - assertEquals(false, canZoomOutOnUiThread(awContents));
|
| - }
|
| -
|
| - @MediumTest
|
| - @Feature({"AndroidWebView"})
|
| - public void testMetaMergeContentQuirkOverrides() throws Throwable {
|
| - final TestAwContentsClient contentClient = new TestAwContentsClient();
|
| - final AwTestContainerView testContainerView =
|
| - createAwTestContainerViewOnMainSync(contentClient);
|
| - final AwContents awContents = testContainerView.getAwContents();
|
| - AwSettings settings = getAwSettingsOnUiThread(awContents);
|
| - CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
|
| -
|
| - final int pageWidth = 3000;
|
| - final String page = String.format((Locale)null, "<html><head>" +
|
| - "<meta name='viewport' content='width=device-width' />" +
|
| - "<meta name='viewport' content='width=%d' />" +
|
| - "</head><body onload='document.title=document.body.clientWidth'></body></html>",
|
| - pageWidth);
|
| -
|
| - settings.setJavaScriptEnabled(true);
|
| - settings.setUseWideViewPort(true);
|
| -
|
| - loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
|
| - int width = Integer.parseInt(getTitleOnUiThread(awContents));
|
| - assertEquals(pageWidth, width);
|
| - }
|
| -
|
| - @MediumTest
|
| - @Feature({"AndroidWebView"})
|
| - public void testInitialScaleClobberQuirk() throws Throwable {
|
| - final TestAwContentsClient contentClient = new TestAwContentsClient();
|
| - final AwTestContainerView testContainerView =
|
| - createAwTestContainerViewOnMainSync(contentClient);
|
| - final AwContents awContents = testContainerView.getAwContents();
|
| - AwSettings settings = getAwSettingsOnUiThread(awContents);
|
| - CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
|
| -
|
| - final String pageTemplate = "<html><head>" +
|
| - "<meta name='viewport' content='initial-scale=%d' />" +
|
| - "</head><body>" +
|
| - "<div style='width:10000px;height:200px'>A big div</div>" +
|
| - "</body></html>";
|
| - final String pageScale4 = String.format((Locale)null, pageTemplate, 4);
|
| - final String page = String.format((Locale)null, pageTemplate, 1);
|
| -
|
| - // Page scale updates are asynchronous. There is an issue that we can't
|
| - // reliably check, whether the scale as NOT changed (i.e. remains to be 1.0).
|
| - // So we first change the scale to some non-default value, and then wait
|
| - // until it gets back to 1.0.
|
| - int onScaleChangedCallCount = contentClient.getOnScaleChangedHelper().getCallCount();
|
| - loadDataSync(awContents, onPageFinishedHelper, pageScale4, "text/html", false);
|
| - contentClient.getOnScaleChangedHelper().waitForCallback(onScaleChangedCallCount);
|
| - assertEquals(4.0f, getScaleOnUiThread(awContents));
|
| - // The following call to set initial scale will be ignored. However, a temporary
|
| - // page scale change may occur, and this makes the usual onScaleChanged-based workflow
|
| - // flaky. So instead, we are just polling the scale until it becomes 1.0.
|
| - settings.setInitialPageScale(50);
|
| - loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
|
| - ensureScaleBecomes(1.0f, awContents);
|
| - }
|
| -
|
| - @MediumTest
|
| - @Feature({"AndroidWebView"})
|
| - public void testNoUserScalableQuirk() throws Throwable {
|
| - final TestAwContentsClient contentClient = new TestAwContentsClient();
|
| - final AwTestContainerView testContainerView =
|
| - createAwTestContainerViewOnMainSync(contentClient);
|
| - final AwContents awContents = testContainerView.getAwContents();
|
| - CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
|
| -
|
| - final String pageScale4 = "<html><head>" +
|
| - "<meta name='viewport' content='initial-scale=4' />" +
|
| - "</head><body>" +
|
| - "<div style='width:10000px;height:200px'>A big div</div>" +
|
| - "</body></html>";
|
| - final String page = "<html><head>" +
|
| - "<meta name='viewport' " +
|
| - "content='width=device-width,initial-scale=2,user-scalable=no' />" +
|
| - "</head><body>" +
|
| - "<div style='width:10000px;height:200px'>A big div</div>" +
|
| - "</body></html>";
|
| -
|
| - // Page scale updates are asynchronous. There is an issue that we can't
|
| - // reliably check, whether the scale as NOT changed (i.e. remains to be 1.0).
|
| - // So we first change the scale to some non-default value, and then wait
|
| - // until it gets back to 1.0.
|
| - int onScaleChangedCallCount = contentClient.getOnScaleChangedHelper().getCallCount();
|
| - loadDataSync(awContents, onPageFinishedHelper, pageScale4, "text/html", false);
|
| - contentClient.getOnScaleChangedHelper().waitForCallback(onScaleChangedCallCount);
|
| - assertEquals(4.0f, getScaleOnUiThread(awContents));
|
| - onScaleChangedCallCount = contentClient.getOnScaleChangedHelper().getCallCount();
|
| - loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
|
| - contentClient.getOnScaleChangedHelper().waitForCallback(onScaleChangedCallCount);
|
| - assertEquals(1.0f, getScaleOnUiThread(awContents));
|
| - }
|
| -
|
| - private void ensureScaleBecomes(final float targetScale, final AwContents awContents)
|
| - throws Throwable {
|
| - poll(new Callable<Boolean>() {
|
| - @Override
|
| - public Boolean call() throws Exception {
|
| - return targetScale == getScaleOnUiThread(awContents);
|
| - }
|
| - });
|
| - }
|
| -}
|
|
|