Commit ca85be85 authored by boliu's avatar boliu Committed by Commit bot

android: Use DisplayAndroid in java

This replaces usage of java DeviceDisplayInfo with DisplayAndroid.
Unfortunately java code generally only pass around the Context instead
of WindowAndroid, so need to officially expose the DisplayAndroid.get
method to the public.

The rest is pretty easy. Only had to add getDIPScale.

BUG=625089

Review-Url: https://codereview.chromium.org/2394773006
Cr-Commit-Position: refs/heads/master@{#423806}
parent 1b83bb77
...@@ -11,7 +11,7 @@ import android.widget.FrameLayout; ...@@ -11,7 +11,7 @@ import android.widget.FrameLayout;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.content.browser.RenderCoordinates; import org.chromium.content.browser.RenderCoordinates;
import org.chromium.ui.base.ViewAndroidDelegate; import org.chromium.ui.base.ViewAndroidDelegate;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
...@@ -99,8 +99,7 @@ public class AwViewAndroidDelegate extends ViewAndroidDelegate { ...@@ -99,8 +99,7 @@ public class AwViewAndroidDelegate extends ViewAndroidDelegate {
} }
containerView.addView(anchorView); containerView.addView(anchorView);
if (position != null) { if (position != null) {
float scale = (float) DeviceDisplayInfo.create(containerView.getContext()) float scale = (float) DisplayAndroid.get(containerView.getContext()).getDIPScale();
.getDIPScale();
setViewPosition(anchorView, position.mX, position.mY, setViewPosition(anchorView, position.mX, position.mY,
position.mWidth, position.mHeight, scale, position.mWidth, position.mHeight, scale,
position.mLeftMargin, position.mTopMargin); position.mLeftMargin, position.mTopMargin);
......
...@@ -22,7 +22,7 @@ import org.chromium.base.test.util.parameter.ParameterizedTest; ...@@ -22,7 +22,7 @@ import org.chromium.base.test.util.parameter.ParameterizedTest;
import org.chromium.content.browser.test.util.CallbackHelper; import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.content_public.browser.GestureStateListener; import org.chromium.content_public.browser.GestureStateListener;
import org.chromium.net.test.util.TestWebServer; import org.chromium.net.test.util.TestWebServer;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
import java.util.Locale; import java.util.Locale;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
...@@ -322,7 +322,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase { ...@@ -322,7 +322,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
enableJavaScriptOnUiThread(testContainerView.getAwContents()); enableJavaScriptOnUiThread(testContainerView.getAwContents());
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int targetScrollXCss = 233; final int targetScrollXCss = 233;
final int targetScrollYCss = 322; final int targetScrollYCss = 322;
final int targetScrollXPix = (int) Math.ceil(targetScrollXCss * deviceDIPScale); final int targetScrollXPix = (int) Math.ceil(targetScrollXCss * deviceDIPScale);
...@@ -356,7 +356,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase { ...@@ -356,7 +356,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
enableJavaScriptOnUiThread(testContainerView.getAwContents()); enableJavaScriptOnUiThread(testContainerView.getAwContents());
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int targetScrollXCss = 132; final int targetScrollXCss = 132;
final int targetScrollYCss = 243; final int targetScrollYCss = 243;
final int targetScrollXPix = (int) Math.floor(targetScrollXCss * deviceDIPScale); final int targetScrollXPix = (int) Math.floor(targetScrollXCss * deviceDIPScale);
...@@ -384,7 +384,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase { ...@@ -384,7 +384,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
enableJavaScriptOnUiThread(testContainerView.getAwContents()); enableJavaScriptOnUiThread(testContainerView.getAwContents());
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int targetScrollXCss = 132; final int targetScrollXCss = 132;
final int targetScrollYCss = 243; final int targetScrollYCss = 243;
final int targetScrollXPix = (int) Math.floor(targetScrollXCss * deviceDIPScale); final int targetScrollXPix = (int) Math.floor(targetScrollXCss * deviceDIPScale);
...@@ -414,7 +414,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase { ...@@ -414,7 +414,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
enableJavaScriptOnUiThread(testContainerView.getAwContents()); enableJavaScriptOnUiThread(testContainerView.getAwContents());
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int targetScrollXCss = 132; final int targetScrollXCss = 132;
final int targetScrollYCss = 243; final int targetScrollYCss = 243;
final int targetScrollXPix = (int) Math.floor(targetScrollXCss * deviceDIPScale); final int targetScrollXPix = (int) Math.floor(targetScrollXCss * deviceDIPScale);
...@@ -458,7 +458,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase { ...@@ -458,7 +458,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
final int targetScrollYPix = dragStepSize * dragSteps; final int targetScrollYPix = dragStepSize * dragSteps;
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int maxScrollXPix = 101; final int maxScrollXPix = 101;
final int maxScrollYPix = 211; final int maxScrollYPix = 211;
// Make sure we can't hit these values simply as a result of scrolling. // Make sure we can't hit these values simply as a result of scrolling.
...@@ -683,7 +683,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase { ...@@ -683,7 +683,7 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
enableJavaScriptOnUiThread(testContainerView.getAwContents()); enableJavaScriptOnUiThread(testContainerView.getAwContents());
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int targetScrollYCss = 243; final int targetScrollYCss = 243;
final int targetScrollYPix = (int) Math.ceil(targetScrollYCss * deviceDIPScale); final int targetScrollYPix = (int) Math.ceil(targetScrollYCss * deviceDIPScale);
......
...@@ -16,7 +16,7 @@ import org.chromium.android_webview.test.util.CommonResources; ...@@ -16,7 +16,7 @@ import org.chromium.android_webview.test.util.CommonResources;
import org.chromium.android_webview.test.util.GraphicsTestUtils; import org.chromium.android_webview.test.util.GraphicsTestUtils;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.test.util.CallbackHelper; import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
...@@ -308,7 +308,7 @@ public class AndroidViewIntegrationTest extends AwTestBase { ...@@ -308,7 +308,7 @@ public class AndroidViewIntegrationTest extends AwTestBase {
assertZeroHeight(testContainerView); assertZeroHeight(testContainerView);
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int contentWidthCss = 142; final int contentWidthCss = 142;
final int contentHeightCss = 180; final int contentHeightCss = 180;
...@@ -335,7 +335,7 @@ public class AndroidViewIntegrationTest extends AwTestBase { ...@@ -335,7 +335,7 @@ public class AndroidViewIntegrationTest extends AwTestBase {
assertZeroHeight(testContainerView); assertZeroHeight(testContainerView);
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int contentWidthCss = 142; final int contentWidthCss = 142;
final int contentHeightCss = 180; final int contentHeightCss = 180;
...@@ -363,7 +363,7 @@ public class AndroidViewIntegrationTest extends AwTestBase { ...@@ -363,7 +363,7 @@ public class AndroidViewIntegrationTest extends AwTestBase {
assertZeroHeight(testContainerView); assertZeroHeight(testContainerView);
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int contentWidthCss = 142; final int contentWidthCss = 142;
final int contentHeightCss = 180; final int contentHeightCss = 180;
...@@ -389,7 +389,7 @@ public class AndroidViewIntegrationTest extends AwTestBase { ...@@ -389,7 +389,7 @@ public class AndroidViewIntegrationTest extends AwTestBase {
final AwContents awContents = testContainerView.getAwContents(); final AwContents awContents = testContainerView.getAwContents();
final double deviceDIPScale = final double deviceDIPScale =
DeviceDisplayInfo.create(testContainerView.getContext()).getDIPScale(); DisplayAndroid.get(testContainerView.getContext()).getDIPScale();
final int physicalWidth = 600; final int physicalWidth = 600;
final int spanWidth = 42; final int spanWidth = 42;
final int expectedWidthCss = final int expectedWidthCss =
......
...@@ -13,7 +13,7 @@ import android.widget.FrameLayout; ...@@ -13,7 +13,7 @@ import android.widget.FrameLayout;
import org.chromium.android_webview.AwViewAndroidDelegate; import org.chromium.android_webview.AwViewAndroidDelegate;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.RenderCoordinates; import org.chromium.content.browser.RenderCoordinates;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
/** /**
* Tests anchor views are correctly added/removed when their container view is updated. * Tests anchor views are correctly added/removed when their container view is updated.
...@@ -181,7 +181,7 @@ public class AwContentsAnchorViewTest extends AwTestBase { ...@@ -181,7 +181,7 @@ public class AwContentsAnchorViewTest extends AwTestBase {
} }
private LayoutParams setLayoutParams(View anchorView, int coords, int dimension) { private LayoutParams setLayoutParams(View anchorView, int coords, int dimension) {
float scale = (float) DeviceDisplayInfo.create(mContainerView.getContext()).getDIPScale(); float scale = (float) DisplayAndroid.get(mContainerView.getContext()).getDIPScale();
mViewDelegate.setViewPosition( mViewDelegate.setViewPosition(
anchorView, coords, coords, dimension, dimension, scale, 10, 10); anchorView, coords, coords, dimension, dimension, scale, 10, 10);
return anchorView.getLayoutParams(); return anchorView.getLayoutParams();
......
...@@ -12,7 +12,7 @@ import org.chromium.android_webview.AwSettings; ...@@ -12,7 +12,7 @@ import org.chromium.android_webview.AwSettings;
import org.chromium.base.annotations.SuppressFBWarnings; import org.chromium.base.annotations.SuppressFBWarnings;
import org.chromium.base.test.util.Feature; import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.test.util.CallbackHelper; import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
import java.util.Locale; import java.util.Locale;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
...@@ -41,14 +41,13 @@ public class AwLegacyQuirksTest extends AwTestBase { ...@@ -41,14 +41,13 @@ public class AwLegacyQuirksTest extends AwTestBase {
settings.setJavaScriptEnabled(true); settings.setJavaScriptEnabled(true);
DeviceDisplayInfo deviceInfo = DisplayAndroid displayAndroid = DisplayAndroid.get(getInstrumentation().getTargetContext());
DeviceDisplayInfo.create(getInstrumentation().getTargetContext());
loadDataSync(awContents, onPageFinishedHelper, pageDeviceDpi, "text/html", false); loadDataSync(awContents, onPageFinishedHelper, pageDeviceDpi, "text/html", false);
int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents)); int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
assertEquals(deviceInfo.getDisplayWidth(), actualWidth, 10f); assertEquals(displayAndroid.getDisplayWidth(), actualWidth, 10f);
float displayWidth = (deviceInfo.getDisplayWidth()); float displayWidth = (displayAndroid.getDisplayWidth());
float deviceDpi = (float) (160f * deviceInfo.getDIPScale()); float deviceDpi = (float) (160f * displayAndroid.getDIPScale());
loadDataSync(awContents, onPageFinishedHelper, pageHighDpi, "text/html", false); loadDataSync(awContents, onPageFinishedHelper, pageHighDpi, "text/html", false);
actualWidth = Integer.parseInt(getTitleOnUiThread(awContents)); actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
...@@ -76,10 +75,10 @@ public class AwLegacyQuirksTest extends AwTestBase { ...@@ -76,10 +75,10 @@ public class AwLegacyQuirksTest extends AwTestBase {
settings.setJavaScriptEnabled(true); settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true); settings.setUseWideViewPort(true);
DeviceDisplayInfo deviceInfo = DisplayAndroid displayAndroid = DisplayAndroid.get(getInstrumentation().getTargetContext());
DeviceDisplayInfo.create(getInstrumentation().getTargetContext());
loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false); loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
float displayWidth = (float) (deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale()); float displayWidth =
(float) (displayAndroid.getDisplayWidth() / displayAndroid.getDIPScale());
int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents)); int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
assertEquals(displayWidth, actualWidth, 10f); assertEquals(displayWidth, actualWidth, 10f);
assertEquals(1.0f, getScaleOnUiThread(awContents)); assertEquals(1.0f, getScaleOnUiThread(awContents));
...@@ -102,10 +101,10 @@ public class AwLegacyQuirksTest extends AwTestBase { ...@@ -102,10 +101,10 @@ public class AwLegacyQuirksTest extends AwTestBase {
settings.setJavaScriptEnabled(true); settings.setJavaScriptEnabled(true);
DeviceDisplayInfo deviceInfo = DisplayAndroid displayAndroid = DisplayAndroid.get(getInstrumentation().getTargetContext());
DeviceDisplayInfo.create(getInstrumentation().getTargetContext());
loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false); loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
float displayWidth = (float) (deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale()); float displayWidth =
(float) (displayAndroid.getDisplayWidth() / displayAndroid.getDIPScale());
int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents)); int actualWidth = Integer.parseInt(getTitleOnUiThread(awContents));
assertEquals(displayWidth, actualWidth, 10f); assertEquals(displayWidth, actualWidth, 10f);
assertEquals(1.0f, getScaleOnUiThread(awContents)); assertEquals(1.0f, getScaleOnUiThread(awContents));
...@@ -132,16 +131,15 @@ public class AwLegacyQuirksTest extends AwTestBase { ...@@ -132,16 +131,15 @@ public class AwLegacyQuirksTest extends AwTestBase {
loadUrlSync(awContents, onPageFinishedHelper, "about:blank"); loadUrlSync(awContents, onPageFinishedHelper, "about:blank");
DeviceDisplayInfo deviceInfo = DisplayAndroid displayAndroid = DisplayAndroid.get(getInstrumentation().getTargetContext());
DeviceDisplayInfo.create(getInstrumentation().getTargetContext()); float dipScale = (float) displayAndroid.getDIPScale();
float dipScale = (float) deviceInfo.getDIPScale(); float physicalDisplayWidth = displayAndroid.getPhysicalDisplayWidth() != 0
float physicalDisplayWidth = deviceInfo.getPhysicalDisplayWidth() != 0 ? displayAndroid.getPhysicalDisplayWidth()
? deviceInfo.getPhysicalDisplayWidth() : displayAndroid.getDisplayWidth();
: deviceInfo.getDisplayWidth();
float cssDisplayWidth = physicalDisplayWidth / dipScale; float cssDisplayWidth = physicalDisplayWidth / dipScale;
float physicalDisplayHeight = deviceInfo.getPhysicalDisplayHeight() != 0 float physicalDisplayHeight = displayAndroid.getPhysicalDisplayHeight() != 0
? deviceInfo.getPhysicalDisplayHeight() ? displayAndroid.getPhysicalDisplayHeight()
: deviceInfo.getDisplayHeight(); : displayAndroid.getDisplayHeight();
float cssDisplayHeight = physicalDisplayHeight / dipScale; float cssDisplayHeight = physicalDisplayHeight / dipScale;
float screenWidth = Integer.parseInt( float screenWidth = Integer.parseInt(
......
...@@ -22,6 +22,7 @@ import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout; ...@@ -22,6 +22,7 @@ import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
import org.apache.http.Header; import org.apache.http.Header;
import org.apache.http.HttpRequest; import org.apache.http.HttpRequest;
import org.chromium.android_webview.AwContents; import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwSettings; import org.chromium.android_webview.AwSettings;
import org.chromium.android_webview.AwWebResourceResponse; import org.chromium.android_webview.AwWebResourceResponse;
...@@ -41,7 +42,7 @@ import org.chromium.content.browser.test.util.HistoryUtils; ...@@ -41,7 +42,7 @@ import org.chromium.content.browser.test.util.HistoryUtils;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer; import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.net.test.util.TestWebServer; import org.chromium.net.test.util.TestWebServer;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
import java.io.File; import java.io.File;
import java.util.concurrent.Callable; import java.util.concurrent.Callable;
...@@ -958,8 +959,9 @@ public class AwSettingsTest extends AwTestBase { ...@@ -958,8 +959,9 @@ public class AwSettingsTest extends AwTestBase {
} }
protected String getData() { protected String getData() {
DeviceDisplayInfo deviceInfo = DeviceDisplayInfo.create(mContext); DisplayAndroid displayAndroid = DisplayAndroid.get(mContext);
int displayWidth = (int) (deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale()); int displayWidth =
(int) (displayAndroid.getDisplayWidth() / displayAndroid.getDIPScale());
int layoutWidth = (int) (displayWidth * 2.5f); // Use 2.5 as autosizing layout tests do. int layoutWidth = (int) (displayWidth * 2.5f); // Use 2.5 as autosizing layout tests do.
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("<html>" sb.append("<html>"
...@@ -1464,10 +1466,10 @@ public class AwSettingsTest extends AwTestBase { ...@@ -1464,10 +1466,10 @@ public class AwSettingsTest extends AwTestBase {
loadDataSync(getData()); loadDataSync(getData());
final int reportedClientWidth = Integer.parseInt(getTitleOnUiThread()); final int reportedClientWidth = Integer.parseInt(getTitleOnUiThread());
if (value) { if (value) {
final DeviceDisplayInfo deviceInfo = DeviceDisplayInfo.create(mContext); final DisplayAndroid displayAndroid = DisplayAndroid.get(mContext);
// The clientWidth is subject to pixel snapping. // The clientWidth is subject to pixel snapping.
final int displayWidth = (int) Math.ceil( final int displayWidth = (int) Math.ceil(
deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale()); displayAndroid.getDisplayWidth() / displayAndroid.getDIPScale());
assertEquals(displayWidth, reportedClientWidth); assertEquals(displayWidth, reportedClientWidth);
} else { } else {
assertEquals(3000, reportedClientWidth); assertEquals(3000, reportedClientWidth);
...@@ -2536,8 +2538,8 @@ public class AwSettingsTest extends AwTestBase { ...@@ -2536,8 +2538,8 @@ public class AwSettingsTest extends AwTestBase {
pageTemplate, pageTemplate,
"<meta name='viewport' content='width=" + viewportTagSpecifiedWidth + "' />"); "<meta name='viewport' content='width=" + viewportTagSpecifiedWidth + "' />");
DeviceDisplayInfo deviceInfo = DeviceDisplayInfo.create(testContainer.getContext()); DisplayAndroid displayAndroid = DisplayAndroid.get(testContainer.getContext());
int displayWidth = (int) (deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale()); int displayWidth = (int) (displayAndroid.getDisplayWidth() / displayAndroid.getDIPScale());
settings.setJavaScriptEnabled(true); settings.setJavaScriptEnabled(true);
assertFalse(settings.getUseWideViewPort()); assertFalse(settings.getUseWideViewPort());
...@@ -2604,9 +2606,9 @@ public class AwSettingsTest extends AwTestBase { ...@@ -2604,9 +2606,9 @@ public class AwSettingsTest extends AwTestBase {
AwSettings settings = getAwSettingsOnUiThread(awContents); AwSettings settings = getAwSettingsOnUiThread(awContents);
settings.setBuiltInZoomControls(true); settings.setBuiltInZoomControls(true);
DeviceDisplayInfo deviceInfo = DisplayAndroid displayAndroid =
DeviceDisplayInfo.create(testContainerView.getContext()); DisplayAndroid.get(testContainerView.getContext());
int displayWidth = (int) (deviceInfo.getDisplayWidth() / deviceInfo.getDIPScale()); int displayWidth = (int) (displayAndroid.getDisplayWidth() / displayAndroid.getDIPScale());
int layoutWidth = displayWidth * 2; int layoutWidth = displayWidth * 2;
final String page = "<html>" final String page = "<html>"
+ "<head><meta name='viewport' content='width=" + layoutWidth + "'>" + "<head><meta name='viewport' content='width=" + layoutWidth + "'>"
......
...@@ -21,7 +21,7 @@ import org.chromium.chrome.browser.profiles.Profile; ...@@ -21,7 +21,7 @@ import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.profiles.ProfileDownloader; import org.chromium.chrome.browser.profiles.ProfileDownloader;
import org.chromium.chrome.browser.profiles.ProfileDownloader.Observer; import org.chromium.chrome.browser.profiles.ProfileDownloader.Observer;
import org.chromium.components.signin.AccountManagerHelper; import org.chromium.components.signin.AccountManagerHelper;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
import java.util.HashMap; import java.util.HashMap;
...@@ -62,9 +62,9 @@ public class ProfileDataCache implements Observer { ...@@ -62,9 +62,9 @@ public class ProfileDataCache implements Observer {
mContext = context; mContext = context;
mProfile = profile; mProfile = profile;
final DeviceDisplayInfo info = DeviceDisplayInfo.create(context); final DisplayAndroid displayAndroid = DisplayAndroid.get(context);
mImageSizePx = (int) Math.ceil(PROFILE_IMAGE_SIZE_DP * info.getDIPScale()); mImageSizePx = (int) Math.ceil(PROFILE_IMAGE_SIZE_DP * displayAndroid.getDIPScale());
mImageStrokePx = (int) Math.ceil(PROFILE_IMAGE_STROKE_DP * info.getDIPScale()); mImageStrokePx = (int) Math.ceil(PROFILE_IMAGE_STROKE_DP * displayAndroid.getDIPScale());
mImageStrokeColor = Color.WHITE; mImageStrokeColor = Color.WHITE;
Bitmap placeHolder = BitmapFactory.decodeResource(mContext.getResources(), Bitmap placeHolder = BitmapFactory.decodeResource(mContext.getResources(),
......
...@@ -20,7 +20,7 @@ import android.widget.TextView; ...@@ -20,7 +20,7 @@ import android.widget.TextView;
import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.ui.UiUtils; import org.chromium.ui.UiUtils;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
/** /**
* The Autofill suggestion view that lists relevant suggestions. It sits above the keyboard and * The Autofill suggestion view that lists relevant suggestions. It sits above the keyboard and
...@@ -48,7 +48,7 @@ public class AutofillKeyboardAccessory extends LinearLayout ...@@ -48,7 +48,7 @@ public class AutofillKeyboardAccessory extends LinearLayout
mWindowAndroid = windowAndroid; mWindowAndroid = windowAndroid;
mAutofillDelegate = autofillDelegate; mAutofillDelegate = autofillDelegate;
int deviceWidthPx = DeviceDisplayInfo.create(getContext()).getDisplayWidth(); int deviceWidthPx = DisplayAndroid.get(getContext()).getDisplayWidth();
mMaximumLabelWidthPx = deviceWidthPx / 2; mMaximumLabelWidthPx = deviceWidthPx / 2;
mMaximumSublabelWidthPx = deviceWidthPx / 4; mMaximumSublabelWidthPx = deviceWidthPx / 4;
......
...@@ -7,6 +7,7 @@ package org.chromium.content.browser; ...@@ -7,6 +7,7 @@ package org.chromium.content.browser;
import android.app.Activity; import android.app.Activity;
import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.view.Surface;
import org.chromium.base.ApplicationStatus; import org.chromium.base.ApplicationStatus;
import org.chromium.base.Log; import org.chromium.base.Log;
...@@ -16,7 +17,6 @@ import org.chromium.base.annotations.JNINamespace; ...@@ -16,7 +17,6 @@ import org.chromium.base.annotations.JNINamespace;
import org.chromium.content_public.common.ScreenOrientationConstants; import org.chromium.content_public.common.ScreenOrientationConstants;
import org.chromium.content_public.common.ScreenOrientationValues; import org.chromium.content_public.common.ScreenOrientationValues;
import org.chromium.ui.display.DisplayAndroid; import org.chromium.ui.display.DisplayAndroid;
import org.chromium.ui.gfx.DeviceDisplayInfo;
/** /**
* This is the implementation of the C++ counterpart ScreenOrientationProvider. * This is the implementation of the C++ counterpart ScreenOrientationProvider.
...@@ -45,15 +45,15 @@ public class ScreenOrientationProvider { ...@@ -45,15 +45,15 @@ public class ScreenOrientationProvider {
case ScreenOrientationValues.ANY: case ScreenOrientationValues.ANY:
return ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR; return ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
case ScreenOrientationValues.NATURAL: case ScreenOrientationValues.NATURAL:
DeviceDisplayInfo displayInfo = DeviceDisplayInfo.create(activity); DisplayAndroid displayAndroid = DisplayAndroid.get(activity);
int rotation = displayInfo.getRotationDegrees(); int rotation = displayAndroid.getRotation();
if (rotation == 0 || rotation == 180) { if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) {
if (displayInfo.getDisplayHeight() >= displayInfo.getDisplayWidth()) { if (displayAndroid.getDisplayHeight() >= displayAndroid.getDisplayWidth()) {
return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
} }
return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
} else { } else {
if (displayInfo.getDisplayHeight() < displayInfo.getDisplayWidth()) { if (displayAndroid.getDisplayHeight() < displayAndroid.getDisplayWidth()) {
return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; return ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
} }
return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
......
...@@ -8,6 +8,7 @@ import android.annotation.TargetApi; ...@@ -8,6 +8,7 @@ import android.annotation.TargetApi;
import android.content.Context; import android.content.Context;
import android.graphics.Point; import android.graphics.Point;
import android.os.Build; import android.os.Build;
import android.util.DisplayMetrics;
import android.view.Display; import android.view.Display;
import java.util.WeakHashMap; import java.util.WeakHashMap;
...@@ -42,13 +43,18 @@ public class DisplayAndroid { ...@@ -42,13 +43,18 @@ public class DisplayAndroid {
// Updated by updateFromDisplay. // Updated by updateFromDisplay.
private final Point mSize; private final Point mSize;
private final Point mPhysicalSize; private final Point mPhysicalSize;
private final DisplayMetrics mDisplayMetrics;
private int mRotation; private int mRotation;
private static DisplayAndroidManager getManager() { private static DisplayAndroidManager getManager() {
return DisplayAndroidManager.getInstance(); return DisplayAndroidManager.getInstance();
} }
// Internal implementation. Should not be called outside of UI. /**
* Get the DisplayAndroid for this context. It's safe to call this with any type of context
* including the Application. However to support multi-display, prefer to use the Activity
* context if available, or obtain DisplayAndroid from WindowAndroid instead.
*/
public static DisplayAndroid get(Context context) { public static DisplayAndroid get(Context context) {
Display display = DisplayAndroidManager.getDisplayFromContext(context); Display display = DisplayAndroidManager.getDisplayFromContext(context);
int id = display.getDisplayId(); int id = display.getDisplayId();
...@@ -90,6 +96,13 @@ public class DisplayAndroid { ...@@ -90,6 +96,13 @@ public class DisplayAndroid {
return mRotation; return mRotation;
} }
/**
* @return A scaling factor for the Density Independent Pixel unit.
*/
public double getDIPScale() {
return mDisplayMetrics.density;
}
/** /**
* Add observer. Note repeat observers will be called only one. * Add observer. Note repeat observers will be called only one.
* Observers are held only weakly by Display. * Observers are held only weakly by Display.
...@@ -126,12 +139,14 @@ public class DisplayAndroid { ...@@ -126,12 +139,14 @@ public class DisplayAndroid {
mObservers = new WeakHashMap<>(); mObservers = new WeakHashMap<>();
mSize = new Point(); mSize = new Point();
mPhysicalSize = new Point(); mPhysicalSize = new Point();
mDisplayMetrics = new DisplayMetrics();
updateFromDisplay(display); updateFromDisplay(display);
} }
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
/* package */ void updateFromDisplay(Display display) { /* package */ void updateFromDisplay(Display display) {
display.getSize(mSize); display.getSize(mSize);
display.getMetrics(mDisplayMetrics);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
display.getRealSize(mPhysicalSize); display.getRealSize(mPhysicalSize);
......
...@@ -14,7 +14,7 @@ import org.chromium.base.annotations.CalledByNative; ...@@ -14,7 +14,7 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.MainDex; import org.chromium.base.annotations.MainDex;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import org.chromium.ui.gfx.DeviceDisplayInfo; import org.chromium.ui.display.DisplayAndroid;
import org.chromium.ui.resources.ResourceLoader.ResourceLoaderCallback; import org.chromium.ui.resources.ResourceLoader.ResourceLoaderCallback;
import org.chromium.ui.resources.dynamics.DynamicResource; import org.chromium.ui.resources.dynamics.DynamicResource;
import org.chromium.ui.resources.dynamics.DynamicResourceLoader; import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
...@@ -73,13 +73,13 @@ public class ResourceManager implements ResourceLoaderCallback { ...@@ -73,13 +73,13 @@ public class ResourceManager implements ResourceLoaderCallback {
throw new IllegalStateException("Context should not be null during initialization."); throw new IllegalStateException("Context should not be null during initialization.");
} }
DeviceDisplayInfo displayInfo = DeviceDisplayInfo.create(context); DisplayAndroid displayAndroid = windowAndroid.getDisplay();
int screenWidth = displayInfo.getPhysicalDisplayWidth() != 0 int screenWidth = displayAndroid.getPhysicalDisplayWidth() != 0
? displayInfo.getPhysicalDisplayWidth() ? displayAndroid.getPhysicalDisplayWidth()
: displayInfo.getDisplayWidth(); : displayAndroid.getDisplayWidth();
int screenHeight = displayInfo.getPhysicalDisplayHeight() != 0 int screenHeight = displayAndroid.getPhysicalDisplayHeight() != 0
? displayInfo.getPhysicalDisplayHeight() ? displayAndroid.getPhysicalDisplayHeight()
: displayInfo.getDisplayHeight(); : displayAndroid.getDisplayHeight();
int minScreenSideLength = Math.min(screenWidth, screenHeight); int minScreenSideLength = Math.min(screenWidth, screenHeight);
Resources resources = context.getResources(); Resources resources = context.getResources();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment