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