| --- a/base/build_time.cc |
| +++ b/base/build_time.cc |
| @@ -4,20 +4,31 @@ |
| |
| #include "base/build_time.h" |
| |
| -// Imports the generated build date, i.e. BUILD_DATE. |
| -#include "base/generated_build_date.h" |
| - |
| #include "base/logging.h" |
| #include "base/time/time.h" |
| |
| +#ifdef __ANDROID__ |
| +#include <cutils/properties.h> |
| +#endif |
| + |
| namespace base { |
| |
| Time GetBuildTime() { |
| Time integral_build_time; |
| - // BUILD_DATE is exactly "Mmm DD YYYY HH:MM:SS". |
| - // See //build/write_build_date_header.py. "HH:MM:SS" is normally expected to |
| - // be "05:00:00" but is not enforced here. |
| - bool result = Time::FromUTCString(BUILD_DATE, &integral_build_time); |
| + // The format of __DATE__ and __TIME__ is specified by the ANSI C Standard, |
| + // section 6.8.8. |
| + // |
| + // __DATE__ is exactly "Mmm DD YYYY". |
| + // __TIME__ is exactly "hh:mm:ss". |
| +#if defined(__ANDROID__) |
| + char kDateTime[PROPERTY_VALUE_MAX]; |
| + property_get("ro.build.date", kDateTime, "Sep 02 2008 08:00:00 PST"); |
| +#elif defined(DONT_EMBED_BUILD_METADATA) && !defined(OFFICIAL_BUILD) |
| + const char kDateTime[] = "Sep 02 2008 08:00:00 PST"; |
| +#else |
| + const char kDateTime[] = __DATE__ " " __TIME__ " PST"; |
| +#endif |
| + bool result = Time::FromString(kDateTime, &integral_build_time); |
| DCHECK(result); |
| return integral_build_time; |
| } |
| --- a/base/build_time_unittest.cc |
| +++ b/base/build_time_unittest.cc |
| @@ -3,13 +3,19 @@ |
| // found in the LICENSE file. |
| |
| #include "base/build_time.h" |
| +#if !defined(DONT_EMBED_BUILD_METADATA) |
| #include "base/generated_build_date.h" |
| +#endif |
| #include "base/time/time.h" |
| |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| TEST(BuildTime, DateLooksValid) { |
| +#if !defined(DONT_EMBED_BUILD_METADATA) |
| char build_date[] = BUILD_DATE; |
| +#else |
| + char build_date[] = "Sep 02 2008 05:00:00"; |
| +#endif |
| |
| EXPECT_EQ(20u, strlen(build_date)); |
| EXPECT_EQ(' ', build_date[3]); |
| @@ -30,8 +36,10 @@ TEST(BuildTime, InThePast) { |
| EXPECT_LT(base::GetBuildTime(), base::Time::NowFromSystemTime()); |
| } |
| |
| +#if !defined(DONT_EMBED_BUILD_METADATA) |
| TEST(BuildTime, NotTooFar) { |
| // BuildTime must be less than 45 days old. |
| base::Time cutoff(base::Time::Now() - base::TimeDelta::FromDays(45)); |
| EXPECT_GT(base::GetBuildTime(), cutoff); |
| } |
| +#endif |