xref: /aosp_15_r20/external/libchrome/libchrome_tools/patch/build_time.patch (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker--- a/base/build_time.cc
2*635a8641SAndroid Build Coastguard Worker+++ b/base/build_time.cc
3*635a8641SAndroid Build Coastguard Worker@@ -4,20 +4,31 @@
4*635a8641SAndroid Build Coastguard Worker
5*635a8641SAndroid Build Coastguard Worker #include "base/build_time.h"
6*635a8641SAndroid Build Coastguard Worker
7*635a8641SAndroid Build Coastguard Worker-// Imports the generated build date, i.e. BUILD_DATE.
8*635a8641SAndroid Build Coastguard Worker-#include "base/generated_build_date.h"
9*635a8641SAndroid Build Coastguard Worker-
10*635a8641SAndroid Build Coastguard Worker #include "base/logging.h"
11*635a8641SAndroid Build Coastguard Worker #include "base/time/time.h"
12*635a8641SAndroid Build Coastguard Worker
13*635a8641SAndroid Build Coastguard Worker+#ifdef __ANDROID__
14*635a8641SAndroid Build Coastguard Worker+#include <cutils/properties.h>
15*635a8641SAndroid Build Coastguard Worker+#endif
16*635a8641SAndroid Build Coastguard Worker+
17*635a8641SAndroid Build Coastguard Worker namespace base {
18*635a8641SAndroid Build Coastguard Worker
19*635a8641SAndroid Build Coastguard Worker Time GetBuildTime() {
20*635a8641SAndroid Build Coastguard Worker   Time integral_build_time;
21*635a8641SAndroid Build Coastguard Worker-  // BUILD_DATE is exactly "Mmm DD YYYY HH:MM:SS".
22*635a8641SAndroid Build Coastguard Worker-  // See //build/write_build_date_header.py. "HH:MM:SS" is normally expected to
23*635a8641SAndroid Build Coastguard Worker-  // be "05:00:00" but is not enforced here.
24*635a8641SAndroid Build Coastguard Worker-  bool result = Time::FromUTCString(BUILD_DATE, &integral_build_time);
25*635a8641SAndroid Build Coastguard Worker+  // The format of __DATE__ and __TIME__ is specified by the ANSI C Standard,
26*635a8641SAndroid Build Coastguard Worker+  // section 6.8.8.
27*635a8641SAndroid Build Coastguard Worker+  //
28*635a8641SAndroid Build Coastguard Worker+  // __DATE__ is exactly "Mmm DD YYYY".
29*635a8641SAndroid Build Coastguard Worker+  // __TIME__ is exactly "hh:mm:ss".
30*635a8641SAndroid Build Coastguard Worker+#if defined(__ANDROID__)
31*635a8641SAndroid Build Coastguard Worker+  char kDateTime[PROPERTY_VALUE_MAX];
32*635a8641SAndroid Build Coastguard Worker+  property_get("ro.build.date", kDateTime, "Sep 02 2008 08:00:00 PST");
33*635a8641SAndroid Build Coastguard Worker+#elif defined(DONT_EMBED_BUILD_METADATA) && !defined(OFFICIAL_BUILD)
34*635a8641SAndroid Build Coastguard Worker+  const char kDateTime[] = "Sep 02 2008 08:00:00 PST";
35*635a8641SAndroid Build Coastguard Worker+#else
36*635a8641SAndroid Build Coastguard Worker+  const char kDateTime[] = __DATE__ " " __TIME__ " PST";
37*635a8641SAndroid Build Coastguard Worker+#endif
38*635a8641SAndroid Build Coastguard Worker+  bool result = Time::FromString(kDateTime, &integral_build_time);
39*635a8641SAndroid Build Coastguard Worker   DCHECK(result);
40*635a8641SAndroid Build Coastguard Worker   return integral_build_time;
41*635a8641SAndroid Build Coastguard Worker }
42*635a8641SAndroid Build Coastguard Worker--- a/base/build_time_unittest.cc
43*635a8641SAndroid Build Coastguard Worker+++ b/base/build_time_unittest.cc
44*635a8641SAndroid Build Coastguard Worker@@ -3,13 +3,19 @@
45*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
46*635a8641SAndroid Build Coastguard Worker
47*635a8641SAndroid Build Coastguard Worker #include "base/build_time.h"
48*635a8641SAndroid Build Coastguard Worker+#if !defined(DONT_EMBED_BUILD_METADATA)
49*635a8641SAndroid Build Coastguard Worker #include "base/generated_build_date.h"
50*635a8641SAndroid Build Coastguard Worker+#endif
51*635a8641SAndroid Build Coastguard Worker #include "base/time/time.h"
52*635a8641SAndroid Build Coastguard Worker
53*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
54*635a8641SAndroid Build Coastguard Worker
55*635a8641SAndroid Build Coastguard Worker TEST(BuildTime, DateLooksValid) {
56*635a8641SAndroid Build Coastguard Worker+#if !defined(DONT_EMBED_BUILD_METADATA)
57*635a8641SAndroid Build Coastguard Worker   char build_date[] = BUILD_DATE;
58*635a8641SAndroid Build Coastguard Worker+#else
59*635a8641SAndroid Build Coastguard Worker+  char build_date[] = "Sep 02 2008 05:00:00";
60*635a8641SAndroid Build Coastguard Worker+#endif
61*635a8641SAndroid Build Coastguard Worker
62*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(20u, strlen(build_date));
63*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(' ', build_date[3]);
64*635a8641SAndroid Build Coastguard Worker@@ -30,8 +36,10 @@ TEST(BuildTime, InThePast) {
65*635a8641SAndroid Build Coastguard Worker   EXPECT_LT(base::GetBuildTime(), base::Time::NowFromSystemTime());
66*635a8641SAndroid Build Coastguard Worker }
67*635a8641SAndroid Build Coastguard Worker
68*635a8641SAndroid Build Coastguard Worker+#if !defined(DONT_EMBED_BUILD_METADATA)
69*635a8641SAndroid Build Coastguard Worker TEST(BuildTime, NotTooFar) {
70*635a8641SAndroid Build Coastguard Worker   // BuildTime must be less than 45 days old.
71*635a8641SAndroid Build Coastguard Worker   base::Time cutoff(base::Time::Now() - base::TimeDelta::FromDays(45));
72*635a8641SAndroid Build Coastguard Worker   EXPECT_GT(base::GetBuildTime(), cutoff);
73*635a8641SAndroid Build Coastguard Worker }
74*635a8641SAndroid Build Coastguard Worker+#endif
75