blob: 327559ffaee260eb7e7aa300bd9383e9ded7c3bc [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:061// Copyright 2012 The Chromium Authors
[email protected]6653c192012-04-10 22:52:442// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/android/build_info.h"
6
7#include <string>
8
Mohannad Farrag63510692025-02-10 17:12:579#include "base/android/android_info.h"
10#include "base/android/apk_info.h"
11#include "base/android/device_info.h"
[email protected]6653c192012-04-10 22:52:4412#include "base/android/jni_android.h"
agrieve8e74adc2017-06-16 15:57:2413#include "base/android/jni_array.h"
Rupert Ben Wiserdfea69252024-07-26 15:50:1014#include "base/android/jni_string.h"
[email protected]6653c192012-04-10 22:52:4415#include "base/android/scoped_java_ref.h"
Hans Wennborgc3cffa62020-04-27 10:09:1216#include "base/check_op.h"
[email protected]6653c192012-04-10 22:52:4417#include "base/memory/singleton.h"
Hans Wennborgc3cffa62020-04-27 10:09:1218#include "base/notreached.h"
agrieve8e74adc2017-06-16 15:57:2419#include "base/strings/string_number_conversions.h"
[email protected]6653c192012-04-10 22:52:4420
Andrew Grieveecb885bb2024-05-29 18:14:1921// Must come after all headers that specialize FromJniType() / ToJniType().
Mohannad Farrag63510692025-02-10 17:12:5722#include "base/build_info_jni/BuildInfo_jni.h"
Andrew Grieveecb885bb2024-05-29 18:14:1923
agrieve91522d02017-04-24 15:44:2924namespace base {
25namespace android {
26
[email protected]57bf1832012-06-20 16:42:3927struct BuildInfoSingletonTraits {
Mohannad Farrag63510692025-02-10 17:12:5728 static BuildInfo* New() { return new BuildInfo(); }
[email protected]6653c192012-04-10 22:52:4429
[email protected]57bf1832012-06-20 16:42:3930 static void Delete(BuildInfo* x) {
31 // We're leaking this type, see kRegisterAtExit.
Peter Boströmde573332024-08-26 20:42:4532 NOTREACHED();
[email protected]57bf1832012-06-20 16:42:3933 }
[email protected]6653c192012-04-10 22:52:4434
[email protected]57bf1832012-06-20 16:42:3935 static const bool kRegisterAtExit = false;
gab190f7542016-08-01 20:03:4136#if DCHECK_IS_ON()
[email protected]57bf1832012-06-20 16:42:3937 static const bool kAllowedToAccessOnNonjoinableThread = true;
[email protected]5a8a8062014-03-06 01:11:5438#endif
[email protected]57bf1832012-06-20 16:42:3939};
[email protected]6653c192012-04-10 22:52:4440
Mohannad Farrag63510692025-02-10 17:12:5741BuildInfo::BuildInfo()
42 : brand_(android_info::brand()),
43 device_(android_info::device()),
44 android_build_id_(android_info::android_build_id()),
45 manufacturer_(android_info::manufacturer()),
46 model_(android_info::model()),
47 sdk_int_(android_info::sdk_int()),
48 build_type_(android_info::build_type()),
49 board_(android_info::board()),
50 host_package_name_(apk_info::host_package_name()),
51 host_version_code_(apk_info::host_version_code()),
52 host_package_label_(apk_info::host_package_label()),
53 package_name_(apk_info::package_name()),
54 package_version_code_(apk_info::package_version_code()),
55 package_version_name_(apk_info::package_version_name()),
56 android_build_fp_(android_info::android_build_fp()),
57 installer_package_name_(apk_info::installer_package_name()),
58 abi_name_(android_info::abi_name()),
Mohannad Farrag63510692025-02-10 17:12:5759 resources_version_(apk_info::resources_version()),
60 target_sdk_version_(apk_info::target_sdk_version()),
61 is_debug_android_(android_info::is_debug_android()),
62 is_tv_(device_info::is_tv()),
63 version_incremental_(android_info::version_incremental()),
64 hardware_(android_info::hardware()),
Mohannad Farrag63510692025-02-10 17:12:5765 is_automotive_(device_info::is_automotive()),
Mohannad Farrag63510692025-02-10 17:12:5766 codename_(android_info::codename()),
67 vulkan_deqp_level_(device_info::vulkan_deqp_level()),
68 is_foldable_(device_info::is_foldable()),
69 soc_manufacturer_(android_info::soc_manufacturer()),
70 is_debug_app_(apk_info::is_debug_app()),
71 is_desktop_(device_info::is_desktop()) {}
[email protected]6653c192012-04-10 22:52:4472
Rupert Ben Wiserdfea69252024-07-26 15:50:1073BuildInfo::~BuildInfo() = default;
74
Sam Maier05ccd44f2025-05-13 18:51:3875const std::string& BuildInfo::gms_version_code() const {
Mohannad Farrag63510692025-02-10 17:12:5776 return device_info::gms_version_code();
77}
78
Victor Hugo Vianna Silva3daaf8e2024-07-31 22:34:3179void BuildInfo::set_gms_version_code_for_test(
80 const std::string& gms_version_code) {
Mohannad Farrag63510692025-02-10 17:12:5781 device_info::set_gms_version_code_for_test(gms_version_code);
Victor Hugo Vianna Silva3daaf8e2024-07-31 22:34:3182}
83
Sam Maier05ccd44f2025-05-13 18:51:3884const std::string BuildInfo::host_signing_cert_sha256() {
Rupert Ben Wiserdfea69252024-07-26 15:50:1085 JNIEnv* env = AttachCurrentThread();
Glenn Hartmanndf502162024-12-17 20:13:2286 return Java_BuildInfo_lazyGetHostSigningCertSha256(env);
Rupert Ben Wiserdfea69252024-07-26 15:50:1087}
88
[email protected]6653c192012-04-10 22:52:4489// static
90BuildInfo* BuildInfo::GetInstance() {
Peter Kasting134ef9af2024-12-28 02:30:0991 return Singleton<BuildInfo, BuildInfoSingletonTraits>::get();
[email protected]6653c192012-04-10 22:52:4492}
93
[email protected]6653c192012-04-10 22:52:4494} // namespace android
95} // namespace base