diff --git a/base/base.gypi b/base/base.gypi
index 8621208..9b941a8 100644
--- a/base/base.gypi
+++ b/base/base.gypi
@@ -110,8 +110,6 @@
           'callback_internal.h',
           'callback_list.h',
           'cancelable_callback.h',
-          'chromeos/chromeos_version.cc',
-          'chromeos/chromeos_version.h',
           'command_line.cc',
           'command_line.h',
           'compiler_specific.h',
diff --git a/base/chromeos/chromeos_version.cc b/base/chromeos/chromeos_version.cc
deleted file mode 100644
index 4a70cd5..0000000
--- a/base/chromeos/chromeos_version.cc
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (c) 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.
-
-#include "base/chromeos/chromeos_version.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "base/logging.h"
-
-namespace base {
-namespace chromeos {
-
-bool IsRunningOnChromeOS() {
-  // Check if the user name is chronos. Note that we don't go with
-  // getuid() + getpwuid_r() as it may end up reading /etc/passwd, which
-  // can be expensive.
-  const char* user = getenv("USER");
-  return user && strcmp(user, "chronos") == 0;
-}
-
-}  // namespace chromeos
-}  // namespace base
diff --git a/base/chromeos/chromeos_version.h b/base/chromeos/chromeos_version.h
deleted file mode 100644
index 25acd43..0000000
--- a/base/chromeos/chromeos_version.h
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright (c) 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.
-
-#ifndef BASE_CHROMEOS_CHROMEOS_VERSION_H_
-#define BASE_CHROMEOS_CHROMEOS_VERSION_H_
-
-#include "base/base_export.h"
-
-namespace base {
-namespace chromeos {
-
-// Returns true if the browser is running on Chrome OS.
-// Useful for implementing stubs for Linux desktop.
-BASE_EXPORT bool IsRunningOnChromeOS();
-
-}  // namespace chromeos
-}  // namespace base
-
-#endif  // BASE_CHROMEOS_CHROMEOS_VERSION_H_
diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc
index 762700a..296950b 100644
--- a/base/file_util_posix.cc
+++ b/base/file_util_posix.cc
@@ -43,6 +43,7 @@
 #include "base/strings/stringprintf.h"
 #include "base/strings/sys_string_conversions.h"
 #include "base/strings/utf_string_conversions.h"
+#include "base/sys_info.h"
 #include "base/threading/thread_restrictions.h"
 #include "base/time/time.h"
 
@@ -54,10 +55,6 @@
 #include <grp.h>
 #endif
 
-#if defined(OS_CHROMEOS)
-#include "base/chromeos/chromeos_version.h"
-#endif
-
 namespace base {
 
 namespace {
@@ -771,7 +768,7 @@
 
 FilePath GetHomeDir() {
 #if defined(OS_CHROMEOS)
-  if (base::chromeos::IsRunningOnChromeOS())
+  if (base::SysInfo::IsRunningOnChromeOS())
     return FilePath("/home/chronos/user");
 #endif
 
diff --git a/base/sys_info.h b/base/sys_info.h
index 564832d..ba45bfc 100644
--- a/base/sys_info.h
+++ b/base/sys_info.h
@@ -96,6 +96,9 @@
   // time of the Chrome OS build).
   static Time GetLsbReleaseTime();
 
+  // Returns true when actually running in a Chrome OS environment.
+  static bool IsRunningOnChromeOS();
+
   // Test method to force re-parsing of lsb-release.
   static void SetChromeOSVersionInfoForTest(const std::string& lsb_release,
                                             const Time& lsb_release_time);
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 @@
   "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 @@
     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 @@
   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 @@
     }
     // 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 @@
       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 @@
   int32 major_version_;
   int32 minor_version_;
   int32 bugfix_version_;
+  bool is_running_on_chromeos_;
 };
 
 static LazyInstance<ChromeOSVersionInfo>
@@ -182,6 +201,11 @@
 }
 
 // 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());
diff --git a/base/sys_info_unittest.cc b/base/sys_info_unittest.cc
index 6dc325f..eacf76c 100644
--- a/base/sys_info_unittest.cc
+++ b/base/sys_info_unittest.cc
@@ -121,4 +121,26 @@
                    parsed_lsb_release_time.ToDoubleT());
 }
 
+TEST_F(SysInfoTest, IsRunningOnChromeOS) {
+  base::SysInfo::SetChromeOSVersionInfoForTest("", base::Time());
+  EXPECT_FALSE(base::SysInfo::IsRunningOnChromeOS());
+
+  const char* kLsbRelease1 =
+      "CHROMEOS_RELEASE_NAME=Non Chrome OS\n"
+      "CHROMEOS_RELEASE_VERSION=1.2.3.4\n";
+  base::SysInfo::SetChromeOSVersionInfoForTest(kLsbRelease1, base::Time());
+  EXPECT_FALSE(base::SysInfo::IsRunningOnChromeOS());
+
+  const char* kLsbRelease2 =
+      "CHROMEOS_RELEASE_NAME=Chrome OS\n"
+      "CHROMEOS_RELEASE_VERSION=1.2.3.4\n";
+  base::SysInfo::SetChromeOSVersionInfoForTest(kLsbRelease2, base::Time());
+  EXPECT_TRUE(base::SysInfo::IsRunningOnChromeOS());
+
+  const char* kLsbRelease3 =
+      "CHROMEOS_RELEASE_NAME=Chromium OS\n";
+  base::SysInfo::SetChromeOSVersionInfoForTest(kLsbRelease3, base::Time());
+  EXPECT_TRUE(base::SysInfo::IsRunningOnChromeOS());
+}
+
 #endif  // OS_CHROMEOS
