1*6777b538SAndroid Build Coastguard Worker // Copyright 2015 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef BASE_VERSION_INFO_VERSION_INFO_H_ 6*6777b538SAndroid Build Coastguard Worker #define BASE_VERSION_INFO_VERSION_INFO_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <string> 9*6777b538SAndroid Build Coastguard Worker #include <string_view> 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker #include "base/sanitizer_buildflags.h" 12*6777b538SAndroid Build Coastguard Worker #include "base/version_info/channel.h" 13*6777b538SAndroid Build Coastguard Worker #include "base/version_info/version_info_values.h" 14*6777b538SAndroid Build Coastguard Worker #include "build/branding_buildflags.h" 15*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 16*6777b538SAndroid Build Coastguard Worker 17*6777b538SAndroid Build Coastguard Worker namespace base { 18*6777b538SAndroid Build Coastguard Worker class Version; 19*6777b538SAndroid Build Coastguard Worker } 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker namespace version_info { 22*6777b538SAndroid Build Coastguard Worker 23*6777b538SAndroid Build Coastguard Worker // Returns the product name, e.g. "Chromium" or "Google Chrome". GetProductName()24*6777b538SAndroid Build Coastguard Workerconstexpr std::string_view GetProductName() { 25*6777b538SAndroid Build Coastguard Worker return PRODUCT_NAME; 26*6777b538SAndroid Build Coastguard Worker } 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker // Returns the version number, e.g. "6.0.490.1". GetVersionNumber()29*6777b538SAndroid Build Coastguard Workerconstexpr std::string_view GetVersionNumber() { 30*6777b538SAndroid Build Coastguard Worker return PRODUCT_VERSION; 31*6777b538SAndroid Build Coastguard Worker } 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker // Returns the major component (aka the milestone) of the version as an int, 34*6777b538SAndroid Build Coastguard Worker // e.g. 6 when the version is "6.0.490.1". 35*6777b538SAndroid Build Coastguard Worker int GetMajorVersionNumberAsInt(); 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard Worker // Like GetMajorVersionNumberAsInt(), but returns a string. 38*6777b538SAndroid Build Coastguard Worker std::string GetMajorVersionNumber(); 39*6777b538SAndroid Build Coastguard Worker 40*6777b538SAndroid Build Coastguard Worker // Returns the result of GetVersionNumber() as a base::Version. 41*6777b538SAndroid Build Coastguard Worker const base::Version& GetVersion(); 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker // Returns a version control specific identifier of this release. GetLastChange()44*6777b538SAndroid Build Coastguard Workerconstexpr std::string_view GetLastChange() { 45*6777b538SAndroid Build Coastguard Worker return LAST_CHANGE; 46*6777b538SAndroid Build Coastguard Worker } 47*6777b538SAndroid Build Coastguard Worker 48*6777b538SAndroid Build Coastguard Worker // Returns whether this is an "official" release of the current version, i.e. 49*6777b538SAndroid Build Coastguard Worker // whether knowing GetVersionNumber() is enough to completely determine what 50*6777b538SAndroid Build Coastguard Worker // GetLastChange() is. IsOfficialBuild()51*6777b538SAndroid Build Coastguard Workerconstexpr bool IsOfficialBuild() { 52*6777b538SAndroid Build Coastguard Worker return IS_OFFICIAL_BUILD; 53*6777b538SAndroid Build Coastguard Worker } 54*6777b538SAndroid Build Coastguard Worker 55*6777b538SAndroid Build Coastguard Worker // Returns the OS type, e.g. "Windows", "Linux", "FreeBSD", ... GetOSType()56*6777b538SAndroid Build Coastguard Workerconstexpr std::string_view GetOSType() { 57*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_WIN) 58*6777b538SAndroid Build Coastguard Worker return "Windows"; 59*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_IOS) 60*6777b538SAndroid Build Coastguard Worker return "iOS"; 61*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_MAC) 62*6777b538SAndroid Build Coastguard Worker return "Mac OS X"; 63*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_CHROMEOS) 64*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(GOOGLE_CHROME_BRANDING) 65*6777b538SAndroid Build Coastguard Worker return "ChromeOS"; 66*6777b538SAndroid Build Coastguard Worker #else 67*6777b538SAndroid Build Coastguard Worker return "ChromiumOS"; 68*6777b538SAndroid Build Coastguard Worker #endif 69*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_ANDROID) 70*6777b538SAndroid Build Coastguard Worker return "Android"; 71*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_LINUX) 72*6777b538SAndroid Build Coastguard Worker return "Linux"; 73*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_FREEBSD) 74*6777b538SAndroid Build Coastguard Worker return "FreeBSD"; 75*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_OPENBSD) 76*6777b538SAndroid Build Coastguard Worker return "OpenBSD"; 77*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_SOLARIS) 78*6777b538SAndroid Build Coastguard Worker return "Solaris"; 79*6777b538SAndroid Build Coastguard Worker #elif BUILDFLAG(IS_FUCHSIA) 80*6777b538SAndroid Build Coastguard Worker return "Fuchsia"; 81*6777b538SAndroid Build Coastguard Worker #else 82*6777b538SAndroid Build Coastguard Worker return "Unknown"; 83*6777b538SAndroid Build Coastguard Worker #endif 84*6777b538SAndroid Build Coastguard Worker } 85*6777b538SAndroid Build Coastguard Worker 86*6777b538SAndroid Build Coastguard Worker // Returns a list of sanitizers enabled in this build. GetSanitizerList()87*6777b538SAndroid Build Coastguard Workerconstexpr std::string_view GetSanitizerList() { 88*6777b538SAndroid Build Coastguard Worker return "" 89*6777b538SAndroid Build Coastguard Worker #if defined(ADDRESS_SANITIZER) 90*6777b538SAndroid Build Coastguard Worker "address " 91*6777b538SAndroid Build Coastguard Worker #endif 92*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_HWASAN) 93*6777b538SAndroid Build Coastguard Worker "hwaddress " 94*6777b538SAndroid Build Coastguard Worker #endif 95*6777b538SAndroid Build Coastguard Worker #if defined(LEAK_SANITIZER) 96*6777b538SAndroid Build Coastguard Worker "leak " 97*6777b538SAndroid Build Coastguard Worker #endif 98*6777b538SAndroid Build Coastguard Worker #if defined(MEMORY_SANITIZER) 99*6777b538SAndroid Build Coastguard Worker "memory " 100*6777b538SAndroid Build Coastguard Worker #endif 101*6777b538SAndroid Build Coastguard Worker #if defined(THREAD_SANITIZER) 102*6777b538SAndroid Build Coastguard Worker "thread " 103*6777b538SAndroid Build Coastguard Worker #endif 104*6777b538SAndroid Build Coastguard Worker #if defined(UNDEFINED_SANITIZER) 105*6777b538SAndroid Build Coastguard Worker "undefined " 106*6777b538SAndroid Build Coastguard Worker #endif 107*6777b538SAndroid Build Coastguard Worker ; 108*6777b538SAndroid Build Coastguard Worker } 109*6777b538SAndroid Build Coastguard Worker 110*6777b538SAndroid Build Coastguard Worker } // namespace version_info 111*6777b538SAndroid Build Coastguard Worker 112*6777b538SAndroid Build Coastguard Worker #endif // BASE_VERSION_INFO_VERSION_INFO_H_ 113