You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
chromium/chromium-113-constexpr-el7....

278 lines
7.3 KiB

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 <string>
+
#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<std::string> 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 <string>
+#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/<major_version>.<minor_version>.<build>.<patch>.
-const std::string& GetProductNameAndVersionForUserAgent();
-
// Returns the product name and reduced version information for the User-Agent
// header, in the format: Chrome/<major_version>.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/<major_version>.<minor_version>.<build>.<patch>.
+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