ViewportTest.java revision a1401311d1ab56c4ed0a474bd38c108f75cb0cd9
1// Copyright 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5package org.chromium.content.browser;
6
7import android.content.Context;
8import android.util.DisplayMetrics;
9import android.view.WindowManager;
10
11import org.chromium.base.test.util.DisabledTest;
12import org.chromium.content.browser.test.util.JavaScriptUtils;
13import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
14
15/**
16 * Test suite for viewport-related properties.
17 */
18public class ViewportTest extends ContentViewTestBase {
19
20    private TestCallbackHelperContainer mCallbackHelper;
21
22    /**
23     * Returns the TestCallbackHelperContainer associated with this ContentView,
24     * or creates it lazily.
25     */
26    protected TestCallbackHelperContainer getTestCallbackHelperContainer() {
27        if (mCallbackHelper == null) {
28            mCallbackHelper = new TestCallbackHelperContainer(getContentView());
29        }
30        return mCallbackHelper;
31    }
32
33    protected String evaluateStringValue(String expression) throws Throwable {
34        return JavaScriptUtils.executeJavaScriptAndWaitForResult(getContentView(),
35                getTestCallbackHelperContainer(), expression);
36    }
37
38    protected float evaluateFloatValue(String expression) throws Throwable {
39        return Float.valueOf(evaluateStringValue(expression));
40    }
41
42    protected int evaluateIntegerValue(String expression) throws Throwable {
43        return Integer.valueOf(evaluateStringValue(expression));
44    }
45
46    /*
47    @MediumTest
48    @Feature({"Viewport", "InitialViewportSize"})
49    https://bugs.webkit.org/show_bug.cgi?id=107424
50    */
51    @DisabledTest
52    public void testDefaultViewportSize() throws Throwable {
53        launchContentShellWithUrl("about:blank");
54        waitForActiveShellToBeDoneLoading();
55
56        Context context = getInstrumentation().getTargetContext();
57        WindowManager winManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
58        DisplayMetrics metrics = new DisplayMetrics();
59        winManager.getDefaultDisplay().getMetrics(metrics);
60
61        // window.devicePixelRatio should match the default display. Only check to 1 decimal place
62        // to allow for rounding.
63        assertEquals(metrics.density, evaluateFloatValue("window.devicePixelRatio"), 0.1);
64
65        // Check that the viewport width is vaguely sensible.
66        int viewportWidth = evaluateIntegerValue("document.documentElement.clientWidth");
67        assertTrue(Math.abs(evaluateIntegerValue("window.innerWidth") - viewportWidth) <= 1);
68        assertTrue(viewportWidth >= 979);
69        assertTrue(viewportWidth <= Math.max(981, metrics.widthPixels / metrics.density + 1));
70    }
71}
72