blob: 17c82359343885dd49dc599272fa210133fc071f [file] [log] [blame]
// Copyright 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.content.pm.PackageManager;
import org.chromium.base.CommandLine;
import org.chromium.content.common.ContentSwitches;
/**
* A utility class that has helper methods for device configuration.
*/
public class DeviceUtils {
/**
* The minimum width that would classify the device as a tablet.
*/
private static final int MINIMUM_TABLET_WIDTH_DP = 600;
private static Boolean sIsTv = null;
private static Boolean sIsTablet = null;
/**
* @param context Android's context
* @return Whether the app is should treat the device as a tablet for layout.
*/
public static boolean isTablet(Context context) {
if (sIsTablet == null) {
if (isTv(context)) {
sIsTablet = true;
return sIsTablet;
}
int minimumScreenWidthDp = context.getResources().getConfiguration().
smallestScreenWidthDp;
sIsTablet = minimumScreenWidthDp >= MINIMUM_TABLET_WIDTH_DP;
}
return sIsTablet;
}
/**
* Checks if the device should be treated as TV. Note that this should be
* invoked before {@link #isTablet(Context)} to get the correct result
* since they are not orthogonal.
*
* @param context Android context
* @return {@code true} if the device should be treated as TV.
*/
public static boolean isTv(Context context) {
if (sIsTv == null) {
PackageManager manager = context.getPackageManager();
if (manager != null) {
sIsTv = manager.hasSystemFeature(PackageManager.FEATURE_TELEVISION);
return sIsTv;
}
sIsTv = false;
}
return sIsTv;
}
/**
* Appends the switch specifying which user agent should be used for this device.
* @param context The context for the caller activity.
*/
public static void addDeviceSpecificUserAgentSwitch(Context context) {
if (isTablet(context)) {
CommandLine.getInstance().appendSwitch(ContentSwitches.TABLET_UI);
} else {
CommandLine.getInstance().appendSwitch(ContentSwitches.USE_MOBILE_UA);
}
}
}