xref: /aosp_15_r20/external/libchrome/base/android/build_info.h (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #ifndef BASE_ANDROID_BUILD_INFO_H_
6*635a8641SAndroid Build Coastguard Worker #define BASE_ANDROID_BUILD_INFO_H_
7*635a8641SAndroid Build Coastguard Worker 
8*635a8641SAndroid Build Coastguard Worker #include <jni.h>
9*635a8641SAndroid Build Coastguard Worker 
10*635a8641SAndroid Build Coastguard Worker #include <string>
11*635a8641SAndroid Build Coastguard Worker #include <vector>
12*635a8641SAndroid Build Coastguard Worker 
13*635a8641SAndroid Build Coastguard Worker #include "base/base_export.h"
14*635a8641SAndroid Build Coastguard Worker #include "base/macros.h"
15*635a8641SAndroid Build Coastguard Worker #include "base/memory/singleton.h"
16*635a8641SAndroid Build Coastguard Worker 
17*635a8641SAndroid Build Coastguard Worker namespace base {
18*635a8641SAndroid Build Coastguard Worker namespace android {
19*635a8641SAndroid Build Coastguard Worker 
20*635a8641SAndroid Build Coastguard Worker // This enumeration maps to the values returned by BuildInfo::sdk_int(),
21*635a8641SAndroid Build Coastguard Worker // indicating the Android release associated with a given SDK version.
22*635a8641SAndroid Build Coastguard Worker enum SdkVersion {
23*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_JELLY_BEAN = 16,
24*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_JELLY_BEAN_MR1 = 17,
25*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_JELLY_BEAN_MR2 = 18,
26*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_KITKAT = 19,
27*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_KITKAT_WEAR = 20,
28*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_LOLLIPOP = 21,
29*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_LOLLIPOP_MR1 = 22,
30*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_MARSHMALLOW = 23,
31*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_NOUGAT = 24,
32*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_NOUGAT_MR1 = 25,
33*635a8641SAndroid Build Coastguard Worker   SDK_VERSION_OREO = 26,
34*635a8641SAndroid Build Coastguard Worker };
35*635a8641SAndroid Build Coastguard Worker 
36*635a8641SAndroid Build Coastguard Worker // BuildInfo is a singleton class that stores android build and device
37*635a8641SAndroid Build Coastguard Worker // information. It will be called from Android specific code and gets used
38*635a8641SAndroid Build Coastguard Worker // primarily in crash reporting.
39*635a8641SAndroid Build Coastguard Worker class BASE_EXPORT BuildInfo {
40*635a8641SAndroid Build Coastguard Worker  public:
41*635a8641SAndroid Build Coastguard Worker 
~BuildInfo()42*635a8641SAndroid Build Coastguard Worker   ~BuildInfo() {}
43*635a8641SAndroid Build Coastguard Worker 
44*635a8641SAndroid Build Coastguard Worker   // Static factory method for getting the singleton BuildInfo instance.
45*635a8641SAndroid Build Coastguard Worker   // Note that ownership is not conferred on the caller and the BuildInfo in
46*635a8641SAndroid Build Coastguard Worker   // question isn't actually freed until shutdown. This is ok because there
47*635a8641SAndroid Build Coastguard Worker   // should only be one instance of BuildInfo ever created.
48*635a8641SAndroid Build Coastguard Worker   static BuildInfo* GetInstance();
49*635a8641SAndroid Build Coastguard Worker 
50*635a8641SAndroid Build Coastguard Worker   // Const char* is used instead of std::strings because these values must be
51*635a8641SAndroid Build Coastguard Worker   // available even if the process is in a crash state. Sadly
52*635a8641SAndroid Build Coastguard Worker   // std::string.c_str() doesn't guarantee that memory won't be allocated when
53*635a8641SAndroid Build Coastguard Worker   // it is called.
device()54*635a8641SAndroid Build Coastguard Worker   const char* device() const {
55*635a8641SAndroid Build Coastguard Worker     return device_;
56*635a8641SAndroid Build Coastguard Worker   }
57*635a8641SAndroid Build Coastguard Worker 
manufacturer()58*635a8641SAndroid Build Coastguard Worker   const char* manufacturer() const {
59*635a8641SAndroid Build Coastguard Worker     return manufacturer_;
60*635a8641SAndroid Build Coastguard Worker   }
61*635a8641SAndroid Build Coastguard Worker 
model()62*635a8641SAndroid Build Coastguard Worker   const char* model() const {
63*635a8641SAndroid Build Coastguard Worker     return model_;
64*635a8641SAndroid Build Coastguard Worker   }
65*635a8641SAndroid Build Coastguard Worker 
brand()66*635a8641SAndroid Build Coastguard Worker   const char* brand() const {
67*635a8641SAndroid Build Coastguard Worker     return brand_;
68*635a8641SAndroid Build Coastguard Worker   }
69*635a8641SAndroid Build Coastguard Worker 
android_build_id()70*635a8641SAndroid Build Coastguard Worker   const char* android_build_id() const {
71*635a8641SAndroid Build Coastguard Worker     return android_build_id_;
72*635a8641SAndroid Build Coastguard Worker   }
73*635a8641SAndroid Build Coastguard Worker 
android_build_fp()74*635a8641SAndroid Build Coastguard Worker   const char* android_build_fp() const {
75*635a8641SAndroid Build Coastguard Worker     return android_build_fp_;
76*635a8641SAndroid Build Coastguard Worker   }
77*635a8641SAndroid Build Coastguard Worker 
gms_version_code()78*635a8641SAndroid Build Coastguard Worker   const char* gms_version_code() const {
79*635a8641SAndroid Build Coastguard Worker     return gms_version_code_;
80*635a8641SAndroid Build Coastguard Worker   }
81*635a8641SAndroid Build Coastguard Worker 
host_package_name()82*635a8641SAndroid Build Coastguard Worker   const char* host_package_name() const { return host_package_name_; }
83*635a8641SAndroid Build Coastguard Worker 
host_version_code()84*635a8641SAndroid Build Coastguard Worker   const char* host_version_code() const { return host_version_code_; }
85*635a8641SAndroid Build Coastguard Worker 
host_package_label()86*635a8641SAndroid Build Coastguard Worker   const char* host_package_label() const { return host_package_label_; }
87*635a8641SAndroid Build Coastguard Worker 
package_version_code()88*635a8641SAndroid Build Coastguard Worker   const char* package_version_code() const {
89*635a8641SAndroid Build Coastguard Worker     return package_version_code_;
90*635a8641SAndroid Build Coastguard Worker   }
91*635a8641SAndroid Build Coastguard Worker 
package_version_name()92*635a8641SAndroid Build Coastguard Worker   const char* package_version_name() const {
93*635a8641SAndroid Build Coastguard Worker     return package_version_name_;
94*635a8641SAndroid Build Coastguard Worker   }
95*635a8641SAndroid Build Coastguard Worker 
package_name()96*635a8641SAndroid Build Coastguard Worker   const char* package_name() const {
97*635a8641SAndroid Build Coastguard Worker     return package_name_;
98*635a8641SAndroid Build Coastguard Worker   }
99*635a8641SAndroid Build Coastguard Worker 
100*635a8641SAndroid Build Coastguard Worker   // Will be empty string if no app id is assigned.
firebase_app_id()101*635a8641SAndroid Build Coastguard Worker   const char* firebase_app_id() const { return firebase_app_id_; }
102*635a8641SAndroid Build Coastguard Worker 
custom_themes()103*635a8641SAndroid Build Coastguard Worker   const char* custom_themes() const { return custom_themes_; }
104*635a8641SAndroid Build Coastguard Worker 
resources_version()105*635a8641SAndroid Build Coastguard Worker   const char* resources_version() const { return resources_version_; }
106*635a8641SAndroid Build Coastguard Worker 
build_type()107*635a8641SAndroid Build Coastguard Worker   const char* build_type() const {
108*635a8641SAndroid Build Coastguard Worker     return build_type_;
109*635a8641SAndroid Build Coastguard Worker   }
110*635a8641SAndroid Build Coastguard Worker 
board()111*635a8641SAndroid Build Coastguard Worker   const char* board() const { return board_; }
112*635a8641SAndroid Build Coastguard Worker 
installer_package_name()113*635a8641SAndroid Build Coastguard Worker   const char* installer_package_name() const { return installer_package_name_; }
114*635a8641SAndroid Build Coastguard Worker 
abi_name()115*635a8641SAndroid Build Coastguard Worker   const char* abi_name() const { return abi_name_; }
116*635a8641SAndroid Build Coastguard Worker 
extracted_file_suffix()117*635a8641SAndroid Build Coastguard Worker   std::string extracted_file_suffix() const { return extracted_file_suffix_; }
118*635a8641SAndroid Build Coastguard Worker 
sdk_int()119*635a8641SAndroid Build Coastguard Worker   int sdk_int() const {
120*635a8641SAndroid Build Coastguard Worker     return sdk_int_;
121*635a8641SAndroid Build Coastguard Worker   }
122*635a8641SAndroid Build Coastguard Worker 
is_at_least_p()123*635a8641SAndroid Build Coastguard Worker   bool is_at_least_p() const { return is_at_least_p_; }
124*635a8641SAndroid Build Coastguard Worker 
125*635a8641SAndroid Build Coastguard Worker  private:
126*635a8641SAndroid Build Coastguard Worker   friend struct BuildInfoSingletonTraits;
127*635a8641SAndroid Build Coastguard Worker 
128*635a8641SAndroid Build Coastguard Worker   explicit BuildInfo(const std::vector<std::string>& params);
129*635a8641SAndroid Build Coastguard Worker 
130*635a8641SAndroid Build Coastguard Worker   // Const char* is used instead of std::strings because these values must be
131*635a8641SAndroid Build Coastguard Worker   // available even if the process is in a crash state. Sadly
132*635a8641SAndroid Build Coastguard Worker   // std::string.c_str() doesn't guarantee that memory won't be allocated when
133*635a8641SAndroid Build Coastguard Worker   // it is called.
134*635a8641SAndroid Build Coastguard Worker   const char* const brand_;
135*635a8641SAndroid Build Coastguard Worker   const char* const device_;
136*635a8641SAndroid Build Coastguard Worker   const char* const android_build_id_;
137*635a8641SAndroid Build Coastguard Worker   const char* const manufacturer_;
138*635a8641SAndroid Build Coastguard Worker   const char* const model_;
139*635a8641SAndroid Build Coastguard Worker   const int sdk_int_;
140*635a8641SAndroid Build Coastguard Worker   const char* const build_type_;
141*635a8641SAndroid Build Coastguard Worker   const char* const board_;
142*635a8641SAndroid Build Coastguard Worker   const char* const host_package_name_;
143*635a8641SAndroid Build Coastguard Worker   const char* const host_version_code_;
144*635a8641SAndroid Build Coastguard Worker   const char* const host_package_label_;
145*635a8641SAndroid Build Coastguard Worker   const char* const package_name_;
146*635a8641SAndroid Build Coastguard Worker   const char* const package_version_code_;
147*635a8641SAndroid Build Coastguard Worker   const char* const package_version_name_;
148*635a8641SAndroid Build Coastguard Worker   const char* const android_build_fp_;
149*635a8641SAndroid Build Coastguard Worker   const char* const gms_version_code_;
150*635a8641SAndroid Build Coastguard Worker   const char* const installer_package_name_;
151*635a8641SAndroid Build Coastguard Worker   const char* const abi_name_;
152*635a8641SAndroid Build Coastguard Worker   const char* const firebase_app_id_;
153*635a8641SAndroid Build Coastguard Worker   const char* const custom_themes_;
154*635a8641SAndroid Build Coastguard Worker   const char* const resources_version_;
155*635a8641SAndroid Build Coastguard Worker   // Not needed by breakpad.
156*635a8641SAndroid Build Coastguard Worker   const std::string extracted_file_suffix_;
157*635a8641SAndroid Build Coastguard Worker   const int is_at_least_p_;
158*635a8641SAndroid Build Coastguard Worker 
159*635a8641SAndroid Build Coastguard Worker   DISALLOW_COPY_AND_ASSIGN(BuildInfo);
160*635a8641SAndroid Build Coastguard Worker };
161*635a8641SAndroid Build Coastguard Worker 
162*635a8641SAndroid Build Coastguard Worker }  // namespace android
163*635a8641SAndroid Build Coastguard Worker }  // namespace base
164*635a8641SAndroid Build Coastguard Worker 
165*635a8641SAndroid Build Coastguard Worker #endif  // BASE_ANDROID_BUILD_INFO_H_
166