chrome_version_info.cc revision 3f50c38dc070f4bb515c1b64450dae14f316474e
1// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "chrome/common/chrome_version_info.h" 6 7#include "base/basictypes.h" 8#include "base/file_version_info.h" 9#include "base/string_util.h" 10#include "base/threading/thread_restrictions.h" 11#include "build/build_config.h" 12 13namespace chrome { 14 15#if defined(OS_WIN) || defined(OS_MACOSX) 16// On Windows and Mac, we get the Chrome version info by querying 17// FileVersionInfo for the current module. 18 19VersionInfo::VersionInfo() { 20 // The current module is already loaded in memory, so this will be cheap. 21 base::ThreadRestrictions::ScopedAllowIO allow_io; 22 version_info_.reset(FileVersionInfo::CreateFileVersionInfoForCurrentModule()); 23} 24 25VersionInfo::~VersionInfo() { 26} 27 28bool VersionInfo::is_valid() const { 29 return version_info_.get() != NULL; 30} 31 32std::string VersionInfo::Name() const { 33 if (!is_valid()) 34 return std::string(); 35 return UTF16ToASCII(version_info_->product_name()); 36} 37 38std::string VersionInfo::Version() const { 39 if (!is_valid()) 40 return std::string(); 41 return UTF16ToASCII(version_info_->product_version()); 42} 43 44std::string VersionInfo::LastChange() const { 45 if (!is_valid()) 46 return std::string(); 47 return UTF16ToASCII(version_info_->last_change()); 48} 49 50bool VersionInfo::IsOfficialBuild() const { 51 if (!is_valid()) 52 return false; 53 return version_info_->is_official_build(); 54} 55 56#elif defined(OS_POSIX) 57// We get chrome version information from chrome_version_info_posix.h, 58// a generated header. 59 60#include "chrome/common/chrome_version_info_posix.h" 61 62VersionInfo::VersionInfo() { 63} 64 65VersionInfo::~VersionInfo() { 66} 67 68bool VersionInfo::is_valid() const { 69 return true; 70} 71 72std::string VersionInfo::Name() const { 73 return PRODUCT_NAME; 74} 75 76std::string VersionInfo::Version() const { 77 return PRODUCT_VERSION; 78} 79 80std::string VersionInfo::LastChange() const { 81 return LAST_CHANGE; 82} 83 84bool VersionInfo::IsOfficialBuild() const { 85 return OFFICIAL_BUILD; 86} 87 88#endif 89 90} // namespace chrome 91