xref: /aosp_15_r20/external/cronet/base/version_info/version_info.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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 Worker constexpr 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 Worker constexpr 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 Worker constexpr 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 Worker constexpr 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 Worker constexpr 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 Worker constexpr 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