| Index: content/public/android/javatests/src/org/chromium/content/browser/ViewportTest.java
|
| diff --git a/content/public/android/javatests/src/org/chromium/content/browser/ViewportTest.java b/content/public/android/javatests/src/org/chromium/content/browser/ViewportTest.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..841fc1ed8e2dd2c592545a6a952a4008f4ee707e
|
| --- /dev/null
|
| +++ b/content/public/android/javatests/src/org/chromium/content/browser/ViewportTest.java
|
| @@ -0,0 +1,71 @@
|
| +// Copyright (c) 2012 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.content.browser;
|
| +
|
| +import android.content.Context;
|
| +import android.test.suitebuilder.annotation.MediumTest;
|
| +import android.util.DisplayMetrics;
|
| +import android.view.Display;
|
| +import android.view.WindowManager;
|
| +
|
| +import org.chromium.base.test.util.Feature;
|
| +import org.chromium.content.browser.test.util.JavaScriptUtils;
|
| +import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
|
| +import org.chromium.content.common.DeviceInfo;
|
| +
|
| +/**
|
| + * Test suite for viewport-related properties.
|
| + */
|
| +public class ViewportTest extends ContentViewTestBase {
|
| +
|
| + private TestCallbackHelperContainer mCallbackHelper;
|
| +
|
| + /**
|
| + * Returns the TestCallbackHelperContainer associated with this ContentView,
|
| + * or creates it lazily.
|
| + */
|
| + protected TestCallbackHelperContainer getTestCallbackHelperContainer() {
|
| + if (mCallbackHelper == null) {
|
| + mCallbackHelper = new TestCallbackHelperContainer(getContentView());
|
| + }
|
| + return mCallbackHelper;
|
| + }
|
| +
|
| + protected String evaluateStringValue(String expression) throws Throwable {
|
| + return JavaScriptUtils.executeJavaScriptAndWaitForResult(this, getContentView(),
|
| + getTestCallbackHelperContainer(), expression);
|
| + }
|
| +
|
| + protected float evaluateFloatValue(String expression) throws Throwable {
|
| + return Float.valueOf(evaluateStringValue(expression));
|
| + }
|
| +
|
| + protected int evaluateIntegerValue(String expression) throws Throwable {
|
| + return Integer.valueOf(evaluateStringValue(expression));
|
| + }
|
| +
|
| + @MediumTest
|
| + @Feature({"Viewport", "InitialViewportSize"})
|
| + public void testDefaultViewportSize() throws Throwable {
|
| + launchContentShellWithUrl("about:blank");
|
| + waitForActiveShellToBeDoneLoading();
|
| +
|
| + Context context = getInstrumentation().getTargetContext();
|
| + WindowManager winManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
|
| + DisplayMetrics metrics = new DisplayMetrics();
|
| + winManager.getDefaultDisplay().getMetrics(metrics);
|
| +
|
| + // window.devicePixelRatio should match the default display. Only check to 1 decimal place
|
| + // to allow for rounding.
|
| + assertEquals(String.format("%.1g", metrics.density),
|
| + String.format("%.1g", evaluateFloatValue("window.devicePixelRatio")));
|
| +
|
| + // Check that the viewport width is vaguely sensible.
|
| + int viewportWidth = evaluateIntegerValue("document.documentElement.clientWidth");
|
| + assertTrue(Math.abs(evaluateIntegerValue("window.innerWidth") - viewportWidth) <= 1);
|
| + assertTrue(viewportWidth >= 979);
|
| + assertTrue(viewportWidth <= Math.max(981, metrics.widthPixels / metrics.density + 1));
|
| + }
|
| +}
|
|
|