| Index: base/sys_info_android.cc
|
| diff --git a/base/sys_info_android.cc b/base/sys_info_android.cc
|
| index b84b557ec323ad5781fff8443c32f31d18d49046..d2bfbcbbdb93227144480b3240c1620f6b128de8 100644
|
| --- a/base/sys_info_android.cc
|
| +++ b/base/sys_info_android.cc
|
| @@ -12,6 +12,38 @@
|
|
|
| namespace {
|
|
|
| +// Default version of Android to fall back to when actual version numbers
|
| +// cannot be acquired.
|
| +// TODO(dfalcantara): Keep this reasonably up to date with the latest publicly
|
| +// available version of Android.
|
| +static const int kDefaultAndroidMajorVersion = 4;
|
| +static const int kDefaultAndroidMinorVersion = 0;
|
| +static const int kDefaultAndroidBugfixVersion = 3;
|
| +
|
| +// Parse out the OS version numbers from the system properties.
|
| +void ParseOSVersionNumbers(const char* os_version_str,
|
| + int32 *major_version,
|
| + int32 *minor_version,
|
| + int32 *bugfix_version) {
|
| + if (os_version_str[0]) {
|
| + // Try to parse out the version numbers from the string.
|
| + int num_read = sscanf(os_version_str, "%d.%d.%d", major_version,
|
| + minor_version, bugfix_version);
|
| +
|
| + if (num_read > 0) {
|
| + // If we don't have a full set of version numbers, make the extras 0.
|
| + if (num_read < 2) *minor_version = 0;
|
| + if (num_read < 3) *bugfix_version = 0;
|
| + return;
|
| + }
|
| + }
|
| +
|
| + // For some reason, we couldn't parse the version number string.
|
| + *major_version = kDefaultAndroidMajorVersion;
|
| + *minor_version = kDefaultAndroidMinorVersion;
|
| + *bugfix_version = kDefaultAndroidBugfixVersion;
|
| +}
|
| +
|
| int ParseHeapSize(const base::StringPiece& str) {
|
| const int64 KB = 1024;
|
| const int64 MB = 1024 * KB;
|
| @@ -51,6 +83,36 @@ int GetDalvikHeapSizeMB() {
|
|
|
| namespace base {
|
|
|
| +std::string SysInfo::GetAndroidBuildCodename() {
|
| + char os_version_codename_str[PROP_VALUE_MAX];
|
| + __system_property_get("ro.build.version.codename", os_version_codename_str);
|
| + return std::string(os_version_codename_str);
|
| +}
|
| +
|
| +std::string SysInfo::GetAndroidBuildID() {
|
| + char os_build_id_str[PROP_VALUE_MAX];
|
| + __system_property_get("ro.build.id", os_build_id_str);
|
| + return std::string(os_build_id_str);
|
| +}
|
| +
|
| +std::string SysInfo::GetDeviceName() {
|
| + char device_model_str[PROP_VALUE_MAX];
|
| + __system_property_get("ro.product.model", device_model_str);
|
| + return std::string(device_model_str);
|
| +}
|
| +
|
| +void SysInfo::OperatingSystemVersionNumbers(int32* major_version,
|
| + int32* minor_version,
|
| + int32* bugfix_version) {
|
| + // Read the version number string out from the properties.
|
| + char os_version_str[PROP_VALUE_MAX];
|
| + __system_property_get("ro.build.version.release", os_version_str);
|
| +
|
| + // Parse out the numbers.
|
| + ParseOSVersionNumbers(os_version_str, major_version, minor_version,
|
| + bugfix_version);
|
| +}
|
| +
|
| int SysInfo::DalvikHeapSizeMB() {
|
| static int heap_size = GetDalvikHeapSizeMB();
|
| return heap_size;
|
|
|