diff options
author | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-27 19:28:24 +0000 |
---|---|---|
committer | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-27 19:28:24 +0000 |
commit | 49c4cf85a2b9ae985227799db540dd771f39ab26 (patch) | |
tree | c0da67aeb51650e33a9482d5d738042a50306bbb /base/sys_info_chromeos.cc | |
parent | 28dd8d9866e692882dc4797bc288b4763e03c25f (diff) | |
download | chromium_src-49c4cf85a2b9ae985227799db540dd771f39ab26.zip chromium_src-49c4cf85a2b9ae985227799db540dd771f39ab26.tar.gz chromium_src-49c4cf85a2b9ae985227799db540dd771f39ab26.tar.bz2 |
Move IsRunningOnChromeOS to SysInfo
Also, use lsb-release/CHROMEOS_RELEASE_NAME instead of the
USER env variable.
This CL depends on https://codereview.chromium.org/23588009/
BUG=270135
For trivial base/ changes:
R=derat@chromium.org, satorux@chromium.org, sky@chromium.org
TBR=brettw@chromium.org
Review URL: https://codereview.chromium.org/23904025
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225761 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/sys_info_chromeos.cc')
-rw-r--r-- | base/sys_info_chromeos.cc | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/base/sys_info_chromeos.cc b/base/sys_info_chromeos.cc index 9d7505e..e0f8b4f 100644 --- a/base/sys_info_chromeos.cc +++ b/base/sys_info_chromeos.cc @@ -25,8 +25,13 @@ const char* kLinuxStandardBaseVersionKeys[] = { "GOOGLE_RELEASE", "DISTRIB_RELEASE", }; -const size_t kLinuxStandardBaseVersionKeysLength = - arraysize(kLinuxStandardBaseVersionKeys); + +const char kChromeOsReleaseNameKey[] = "CHROMEOS_RELEASE_NAME"; + +const char* const kChromeOsReleaseNames[] = { + "Chrome OS", + "Chromium OS", +}; const char kLinuxStandardBaseReleaseFile[] = "/etc/lsb-release"; @@ -48,6 +53,7 @@ class ChromeOSVersionInfo { major_version_ = 0; minor_version_ = 0; bugfix_version_ = 0; + is_running_on_chromeos_ = false; std::string lsb_release, lsb_release_time_str; scoped_ptr<base::Environment> env(base::Environment::Create()); @@ -95,6 +101,7 @@ class ChromeOSVersionInfo { const SysInfo::LsbReleaseMap& lsb_release_map() const { return lsb_release_map_; } + bool is_running_on_chromeos() const { return is_running_on_chromeos_; } private: void ParseLsbRelease(const std::string& lsb_release) { @@ -113,7 +120,7 @@ class ChromeOSVersionInfo { } // Parse the version from the first matching recognized version key. std::string version; - for (size_t i = 0; i < kLinuxStandardBaseVersionKeysLength; ++i) { + for (size_t i = 0; i < arraysize(kLinuxStandardBaseVersionKeys); ++i) { std::string key = kLinuxStandardBaseVersionKeys[i]; if (GetLsbReleaseValue(key, &version) && !version.empty()) break; @@ -131,6 +138,17 @@ class ChromeOSVersionInfo { StringToInt(StringPiece(tokenizer.token_begin(), tokenizer.token_end()), &bugfix_version_); } + + // Check release name for Chrome OS. + std::string release_name; + if (GetLsbReleaseValue(kChromeOsReleaseNameKey, &release_name)) { + for (size_t i = 0; i < arraysize(kChromeOsReleaseNames); ++i) { + if (release_name == kChromeOsReleaseNames[i]) { + is_running_on_chromeos_ = true; + break; + } + } + } } base::Time lsb_release_time_; @@ -138,6 +156,7 @@ class ChromeOSVersionInfo { int32 major_version_; int32 minor_version_; int32 bugfix_version_; + bool is_running_on_chromeos_; }; static LazyInstance<ChromeOSVersionInfo> @@ -182,6 +201,11 @@ base::Time SysInfo::GetLsbReleaseTime() { } // static +bool SysInfo::IsRunningOnChromeOS() { + return GetChromeOSVersionInfo().is_running_on_chromeos(); +} + +// static void SysInfo::SetChromeOSVersionInfoForTest(const std::string& lsb_release, const Time& lsb_release_time) { scoped_ptr<base::Environment> env(base::Environment::Create()); |