diff --git a/components/version_info/version_info.cc b/components/version_info/version_info.cc index c5b6a9ea17be1..9b1f5e4478f53 100644 --- a/components/version_info/version_info.cc +++ b/components/version_info/version_info.cc @@ -4,26 +4,15 @@ #include "components/version_info/version_info.h" -#include "base/check.h" +#include + #include "base/no_destructor.h" -#include "base/notreached.h" -#include "base/sanitizer_buildflags.h" #include "base/strings/strcat.h" #include "base/strings/string_number_conversions.h" #include "base/version.h" -#include "build/branding_buildflags.h" -#include "build/build_config.h" -#include "build/chromeos_buildflags.h" -#include "components/version_info/version_info_values.h" namespace version_info { -const std::string& GetProductNameAndVersionForUserAgent() { - static const base::NoDestructor product_and_version( - "Chrome/" + GetVersionNumber()); - return *product_and_version; -} - const std::string GetProductNameAndVersionForReducedUserAgent( const std::string& build_version) { std::string product_and_version; @@ -32,14 +21,6 @@ const std::string GetProductNameAndVersionForReducedUserAgent( return product_and_version; } -std::string GetProductName() { - return PRODUCT_NAME; -} - -std::string GetVersionNumber() { - return PRODUCT_VERSION; -} - int GetMajorVersionNumberAsInt() { DCHECK(GetVersion().IsValid()); return GetVersion().components()[0]; @@ -54,82 +35,4 @@ const base::Version& GetVersion() { return *version; } -std::string GetLastChange() { - return LAST_CHANGE; -} - -bool IsOfficialBuild() { - return IS_OFFICIAL_BUILD; -} - -std::string GetOSType() { -#if BUILDFLAG(IS_WIN) - return "Windows"; -#elif BUILDFLAG(IS_IOS) - return "iOS"; -#elif BUILDFLAG(IS_MAC) - return "Mac OS X"; -#elif BUILDFLAG(IS_CHROMEOS) -# if BUILDFLAG(GOOGLE_CHROME_BRANDING) - return "ChromeOS"; -# else - return "ChromiumOS"; -# endif -#elif BUILDFLAG(IS_ANDROID) - return "Android"; -#elif BUILDFLAG(IS_LINUX) - return "Linux"; -#elif BUILDFLAG(IS_FREEBSD) - return "FreeBSD"; -#elif BUILDFLAG(IS_OPENBSD) - return "OpenBSD"; -#elif BUILDFLAG(IS_SOLARIS) - return "Solaris"; -#elif BUILDFLAG(IS_FUCHSIA) - return "Fuchsia"; -#else - return "Unknown"; -#endif -} - -std::string GetChannelString(Channel channel) { - switch (channel) { - case Channel::STABLE: - return "stable"; - case Channel::BETA: - return "beta"; - case Channel::DEV: - return "dev"; - case Channel::CANARY: - return "canary"; - case Channel::UNKNOWN: - return "unknown"; - } - NOTREACHED(); - return std::string(); -} - -std::string GetSanitizerList() { - std::string sanitizers; -#if defined(ADDRESS_SANITIZER) - sanitizers += "address "; -#endif -#if BUILDFLAG(IS_HWASAN) - sanitizers += "hwaddress "; -#endif -#if defined(LEAK_SANITIZER) - sanitizers += "leak "; -#endif -#if defined(MEMORY_SANITIZER) - sanitizers += "memory "; -#endif -#if defined(THREAD_SANITIZER) - sanitizers += "thread "; -#endif -#if defined(UNDEFINED_SANITIZER) - sanitizers += "undefined "; -#endif - return sanitizers; -} - } // namespace version_info diff --git a/components/version_info/version_info.h b/components/version_info/version_info.h index cab516659a9e4..ffa554eed7598 100644 --- a/components/version_info/version_info.h +++ b/components/version_info/version_info.h @@ -7,7 +7,12 @@ #include +#include "base/notreached.h" +#include "base/sanitizer_buildflags.h" +#include "build/branding_buildflags.h" +#include "build/build_config.h" #include "components/version_info/channel.h" +#include "components/version_info/version_info_values.h" namespace base { class Version; @@ -15,10 +20,6 @@ class Version; namespace version_info { -// Returns the product name and version information for the User-Agent header, -// in the format: Chrome/.... -const std::string& GetProductNameAndVersionForUserAgent(); - // Returns the product name and reduced version information for the User-Agent // header, in the format: Chrome/.0.build_version.0, where // `build_version` is a frozen BUILD number. @@ -26,10 +27,20 @@ const std::string GetProductNameAndVersionForReducedUserAgent( const std::string& build_version); // Returns the product name, e.g. "Chromium" or "Google Chrome". -std::string GetProductName(); +constexpr std::string GetProductName() { + return PRODUCT_NAME; +} // Returns the version number, e.g. "6.0.490.1". -std::string GetVersionNumber(); +constexpr std::string GetVersionNumber() { + return PRODUCT_VERSION; +} + +// Returns the product name and version information for the User-Agent header, +// in the format: Chrome/.... +constexpr std::string GetProductNameAndVersionForUserAgent() { + return "Chrome/" + GetVersionNumber(); +} // Returns the major component (aka the milestone) of the version as an int, // e.g. 6 when the version is "6.0.490.1". @@ -42,22 +53,89 @@ std::string GetMajorVersionNumber(); const base::Version& GetVersion(); // Returns a version control specific identifier of this release. -std::string GetLastChange(); +constexpr std::string GetLastChange() { + return LAST_CHANGE; +} // Returns whether this is an "official" release of the current version, i.e. // whether knowing GetVersionNumber() is enough to completely determine what // GetLastChange() is. -bool IsOfficialBuild(); +constexpr bool IsOfficialBuild() { + return IS_OFFICIAL_BUILD; +} // Returns the OS type, e.g. "Windows", "Linux", "FreeBSD", ... -std::string GetOSType(); +constexpr std::string GetOSType() { +#if BUILDFLAG(IS_WIN) + return "Windows"; +#elif BUILDFLAG(IS_IOS) + return "iOS"; +#elif BUILDFLAG(IS_MAC) + return "Mac OS X"; +#elif BUILDFLAG(IS_CHROMEOS) +#if BUILDFLAG(GOOGLE_CHROME_BRANDING) + return "ChromeOS"; +#else + return "ChromiumOS"; +#endif +#elif BUILDFLAG(IS_ANDROID) + return "Android"; +#elif BUILDFLAG(IS_LINUX) + return "Linux"; +#elif BUILDFLAG(IS_FREEBSD) + return "FreeBSD"; +#elif BUILDFLAG(IS_OPENBSD) + return "OpenBSD"; +#elif BUILDFLAG(IS_SOLARIS) + return "Solaris"; +#elif BUILDFLAG(IS_FUCHSIA) + return "Fuchsia"; +#else + return "Unknown"; +#endif +} // Returns a string equivalent of |channel|, independent of whether the build // is branded or not and without any additional modifiers. -std::string GetChannelString(Channel channel); +constexpr std::string GetChannelString(Channel channel) { + switch (channel) { + case Channel::STABLE: + return "stable"; + case Channel::BETA: + return "beta"; + case Channel::DEV: + return "dev"; + case Channel::CANARY: + return "canary"; + case Channel::UNKNOWN: + return "unknown"; + } + NOTREACHED_NORETURN(); +} // Returns a list of sanitizers enabled in this build. -std::string GetSanitizerList(); +constexpr std::string GetSanitizerList() { + return "" +#if defined(ADDRESS_SANITIZER) + "address " +#endif +#if BUILDFLAG(IS_HWASAN) + "hwaddress " +#endif +#if defined(LEAK_SANITIZER) + "leak " +#endif +#if defined(MEMORY_SANITIZER) + "memory " +#endif +#if defined(THREAD_SANITIZER) + "thread " +#endif +#if defined(UNDEFINED_SANITIZER) + "undefined " +#endif + ; +} } // namespace version_info