1 // Copyright (c) 2011 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/base_paths.h" 8 #include "base/debug/profiler.h" 9 #include "base/files/file_path.h" 10 #include "base/path_service.h" 11 #include "base/strings/string_util.h" 12 #include "base/strings/utf_string_conversions.h" 13 #include "chrome/installer/util/google_update_settings.h" 14 #include "chrome/installer/util/install_util.h" 15 16 namespace chrome { 17 18 // static 19 std::string VersionInfo::GetVersionStringModifier() { 20 #if defined(GOOGLE_CHROME_BUILD) 21 base::FilePath module; 22 base::string16 channel; 23 if (PathService::Get(base::FILE_MODULE, &module)) { 24 bool is_system_install = 25 !InstallUtil::IsPerUserInstall(module.value().c_str()); 26 27 GoogleUpdateSettings::GetChromeChannelAndModifiers(is_system_install, 28 &channel); 29 } 30 #if defined(SYZYASAN) 31 if (base::debug::IsBinaryInstrumented()) 32 channel += L" SyzyASan"; 33 #endif 34 return base::UTF16ToASCII(channel); 35 #else 36 return std::string(); 37 #endif 38 } 39 40 // static 41 VersionInfo::Channel VersionInfo::GetChannel() { 42 #if defined(GOOGLE_CHROME_BUILD) 43 std::wstring channel(L"unknown"); 44 45 base::FilePath module; 46 if (PathService::Get(base::FILE_MODULE, &module)) { 47 bool is_system_install = 48 !InstallUtil::IsPerUserInstall(module.value().c_str()); 49 channel = GoogleUpdateSettings::GetChromeChannel(is_system_install); 50 } 51 52 if (channel.empty()) { 53 return CHANNEL_STABLE; 54 } else if (channel == L"beta") { 55 return CHANNEL_BETA; 56 } else if (channel == L"dev") { 57 return CHANNEL_DEV; 58 } else if (channel == L"canary") { 59 return CHANNEL_CANARY; 60 } 61 #endif 62 63 return CHANNEL_UNKNOWN; 64 } 65 66 } // namespace chrome 67