// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // @dart = 2.9 part of base; // TODO(jacobr): cache these results. // TODO(jacobr): figure out how to test this. /** * Utils for device detection. */ class Device { /** * The regular expression for detecting an iPhone or iPod. */ static final _IPHONE_REGEX = new RegExp('iPhone|iPod'); /** * The regular expression for detecting an iPhone or iPod or iPad. */ static final _MOBILE_SAFARI_REGEX = new RegExp('iPhone|iPod|iPad'); /** * The regular expression for detecting an iPhone or iPod or iPad simulator. */ static final _APPLE_SIM_REGEX = new RegExp('iP.*Simulator'); /** * Gets the browser's user agent. Using this function allows tests to inject * the user agent. * Returns the user agent. */ static String get userAgent => window.navigator.userAgent; /** * Determines if the current device is an iPhone or iPod. * Returns true if the current device is an iPhone or iPod. */ static bool get isIPhone => _IPHONE_REGEX.hasMatch(userAgent); /** * Determines if the current device is an iPad. * Returns true if the current device is an iPad. */ static bool get isIPad => userAgent.contains("iPad", 0); /** * Determines if the current device is running Firefox. */ static bool get isFirefox => userAgent.contains("Firefox", 0); /** * Determines if the current device is an iPhone or iPod or iPad. * Returns true if the current device is an iPhone or iPod or iPad. */ static bool get isMobileSafari => _MOBILE_SAFARI_REGEX.hasMatch(userAgent); /** * Determines if the current device is the iP* Simulator. * Returns true if the current device is an iP* Simulator. */ static bool get isAppleSimulator => _APPLE_SIM_REGEX.hasMatch(userAgent); /** * Determines if the current device is an Android. * Returns true if the current device is an Android. */ static bool get isAndroid => userAgent.contains("Android", 0); /** * Determines if the current device is WebOS WebKit. * Returns true if the current device is WebOS WebKit. */ static bool get isWebOs => userAgent.contains("webOS", 0); static bool _supportsTouch; static bool get supportsTouch { if (_supportsTouch == null) { _supportsTouch = isMobileSafari || isAndroid; } return _supportsTouch; } }