xref: /aosp_15_r20/external/cronet/base/android/build_info.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/android/build_info.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include <string>
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker #include "base/android/jni_android.h"
10*6777b538SAndroid Build Coastguard Worker #include "base/android/jni_array.h"
11*6777b538SAndroid Build Coastguard Worker #include "base/android/scoped_java_ref.h"
12*6777b538SAndroid Build Coastguard Worker #include "base/base_jni/BuildInfo_jni.h"
13*6777b538SAndroid Build Coastguard Worker #include "base/check_op.h"
14*6777b538SAndroid Build Coastguard Worker #include "base/memory/singleton.h"
15*6777b538SAndroid Build Coastguard Worker #include "base/notreached.h"
16*6777b538SAndroid Build Coastguard Worker #include "base/strings/string_number_conversions.h"
17*6777b538SAndroid Build Coastguard Worker 
18*6777b538SAndroid Build Coastguard Worker namespace base {
19*6777b538SAndroid Build Coastguard Worker namespace android {
20*6777b538SAndroid Build Coastguard Worker 
21*6777b538SAndroid Build Coastguard Worker namespace {
22*6777b538SAndroid Build Coastguard Worker 
23*6777b538SAndroid Build Coastguard Worker // We are leaking these strings.
StrDupParam(const std::vector<std::string> & params,size_t index)24*6777b538SAndroid Build Coastguard Worker const char* StrDupParam(const std::vector<std::string>& params, size_t index) {
25*6777b538SAndroid Build Coastguard Worker   return strdup(params[index].c_str());
26*6777b538SAndroid Build Coastguard Worker }
27*6777b538SAndroid Build Coastguard Worker 
GetIntParam(const std::vector<std::string> & params,size_t index)28*6777b538SAndroid Build Coastguard Worker int GetIntParam(const std::vector<std::string>& params, size_t index) {
29*6777b538SAndroid Build Coastguard Worker   int ret = 0;
30*6777b538SAndroid Build Coastguard Worker   bool success = StringToInt(params[index], &ret);
31*6777b538SAndroid Build Coastguard Worker   DCHECK(success);
32*6777b538SAndroid Build Coastguard Worker   return ret;
33*6777b538SAndroid Build Coastguard Worker }
34*6777b538SAndroid Build Coastguard Worker 
35*6777b538SAndroid Build Coastguard Worker }  // namespace
36*6777b538SAndroid Build Coastguard Worker 
37*6777b538SAndroid Build Coastguard Worker struct BuildInfoSingletonTraits {
Newbase::android::BuildInfoSingletonTraits38*6777b538SAndroid Build Coastguard Worker   static BuildInfo* New() {
39*6777b538SAndroid Build Coastguard Worker     JNIEnv* env = AttachCurrentThread();
40*6777b538SAndroid Build Coastguard Worker     ScopedJavaLocalRef<jobjectArray> params_objs = Java_BuildInfo_getAll(env);
41*6777b538SAndroid Build Coastguard Worker     std::vector<std::string> params;
42*6777b538SAndroid Build Coastguard Worker     AppendJavaStringArrayToStringVector(env, params_objs, &params);
43*6777b538SAndroid Build Coastguard Worker     return new BuildInfo(params);
44*6777b538SAndroid Build Coastguard Worker   }
45*6777b538SAndroid Build Coastguard Worker 
Deletebase::android::BuildInfoSingletonTraits46*6777b538SAndroid Build Coastguard Worker   static void Delete(BuildInfo* x) {
47*6777b538SAndroid Build Coastguard Worker     // We're leaking this type, see kRegisterAtExit.
48*6777b538SAndroid Build Coastguard Worker     NOTREACHED();
49*6777b538SAndroid Build Coastguard Worker   }
50*6777b538SAndroid Build Coastguard Worker 
51*6777b538SAndroid Build Coastguard Worker   static const bool kRegisterAtExit = false;
52*6777b538SAndroid Build Coastguard Worker #if DCHECK_IS_ON()
53*6777b538SAndroid Build Coastguard Worker   static const bool kAllowedToAccessOnNonjoinableThread = true;
54*6777b538SAndroid Build Coastguard Worker #endif
55*6777b538SAndroid Build Coastguard Worker };
56*6777b538SAndroid Build Coastguard Worker 
BuildInfo(const std::vector<std::string> & params)57*6777b538SAndroid Build Coastguard Worker BuildInfo::BuildInfo(const std::vector<std::string>& params)
58*6777b538SAndroid Build Coastguard Worker     : brand_(StrDupParam(params, 0)),
59*6777b538SAndroid Build Coastguard Worker       device_(StrDupParam(params, 1)),
60*6777b538SAndroid Build Coastguard Worker       android_build_id_(StrDupParam(params, 2)),
61*6777b538SAndroid Build Coastguard Worker       manufacturer_(StrDupParam(params, 3)),
62*6777b538SAndroid Build Coastguard Worker       model_(StrDupParam(params, 4)),
63*6777b538SAndroid Build Coastguard Worker       sdk_int_(GetIntParam(params, 5)),
64*6777b538SAndroid Build Coastguard Worker       build_type_(StrDupParam(params, 6)),
65*6777b538SAndroid Build Coastguard Worker       board_(StrDupParam(params, 7)),
66*6777b538SAndroid Build Coastguard Worker       host_package_name_(StrDupParam(params, 8)),
67*6777b538SAndroid Build Coastguard Worker       host_version_code_(StrDupParam(params, 9)),
68*6777b538SAndroid Build Coastguard Worker       host_package_label_(StrDupParam(params, 10)),
69*6777b538SAndroid Build Coastguard Worker       package_name_(StrDupParam(params, 11)),
70*6777b538SAndroid Build Coastguard Worker       package_version_code_(StrDupParam(params, 12)),
71*6777b538SAndroid Build Coastguard Worker       package_version_name_(StrDupParam(params, 13)),
72*6777b538SAndroid Build Coastguard Worker       android_build_fp_(StrDupParam(params, 14)),
73*6777b538SAndroid Build Coastguard Worker       gms_version_code_(StrDupParam(params, 15)),
74*6777b538SAndroid Build Coastguard Worker       installer_package_name_(StrDupParam(params, 16)),
75*6777b538SAndroid Build Coastguard Worker       abi_name_(StrDupParam(params, 17)),
76*6777b538SAndroid Build Coastguard Worker       custom_themes_(StrDupParam(params, 18)),
77*6777b538SAndroid Build Coastguard Worker       resources_version_(StrDupParam(params, 19)),
78*6777b538SAndroid Build Coastguard Worker       target_sdk_version_(GetIntParam(params, 20)),
79*6777b538SAndroid Build Coastguard Worker       is_debug_android_(GetIntParam(params, 21)),
80*6777b538SAndroid Build Coastguard Worker       is_tv_(GetIntParam(params, 22)),
81*6777b538SAndroid Build Coastguard Worker       version_incremental_(StrDupParam(params, 23)),
82*6777b538SAndroid Build Coastguard Worker       hardware_(StrDupParam(params, 24)),
83*6777b538SAndroid Build Coastguard Worker       is_at_least_t_(GetIntParam(params, 25)),
84*6777b538SAndroid Build Coastguard Worker       is_automotive_(GetIntParam(params, 26)),
85*6777b538SAndroid Build Coastguard Worker       is_at_least_u_(GetIntParam(params, 27)),
86*6777b538SAndroid Build Coastguard Worker       targets_at_least_u_(GetIntParam(params, 28)),
87*6777b538SAndroid Build Coastguard Worker       codename_(StrDupParam(params, 29)),
88*6777b538SAndroid Build Coastguard Worker       vulkan_deqp_level_(GetIntParam(params, 30)),
89*6777b538SAndroid Build Coastguard Worker       is_foldable_(GetIntParam(params, 31)) {}
90*6777b538SAndroid Build Coastguard Worker 
91*6777b538SAndroid Build Coastguard Worker // static
GetInstance()92*6777b538SAndroid Build Coastguard Worker BuildInfo* BuildInfo::GetInstance() {
93*6777b538SAndroid Build Coastguard Worker   return Singleton<BuildInfo, BuildInfoSingletonTraits >::get();
94*6777b538SAndroid Build Coastguard Worker }
95*6777b538SAndroid Build Coastguard Worker 
96*6777b538SAndroid Build Coastguard Worker }  // namespace android
97*6777b538SAndroid Build Coastguard Worker }  // namespace base
98