diff --git a/CHANGELOG.md b/CHANGELOG.md index ea2ede37f4..c6b95e670c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Features + +- Add chipset to device context ([#4512](https://github.com/getsentry/sentry-java/pull/4512)) + ### Fixes - No longer send out empty log envelopes ([#4497](https://github.com/getsentry/sentry-java/pull/4497)) diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/DeviceInfoUtil.java b/sentry-android-core/src/main/java/io/sentry/android/core/DeviceInfoUtil.java index b2b4c2cdc8..5baf6e2a8d 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/DeviceInfoUtil.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/DeviceInfoUtil.java @@ -96,6 +96,7 @@ public static void resetInstance() { // we can get some inspiration here // https://github.com/flutter/plugins/blob/master/packages/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java + @SuppressLint("NewApi") @NotNull public Device collectDeviceInformation( final boolean collectDeviceIO, final boolean collectDynamicData) { @@ -107,6 +108,9 @@ public Device collectDeviceInformation( device.setModel(Build.MODEL); device.setModelId(Build.ID); device.setArchs(ContextUtils.getArchitectures()); + if (buildInfoProvider.getSdkInfoVersion() >= Build.VERSION_CODES.S) { + device.setChipset(Build.SOC_MANUFACTURER + " " + Build.SOC_MODEL); + } device.setOrientation(getOrientation()); if (isEmulator != null) { diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index c68bcbab7f..864d23840c 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -5155,6 +5155,7 @@ public final class io/sentry/protocol/Device : io/sentry/JsonSerializable, io/se public fun getBatteryTemperature ()Ljava/lang/Float; public fun getBootTime ()Ljava/util/Date; public fun getBrand ()Ljava/lang/String; + public fun getChipset ()Ljava/lang/String; public fun getConnectionType ()Ljava/lang/String; public fun getCpuDescription ()Ljava/lang/String; public fun getExternalFreeStorage ()Ljava/lang/Long; @@ -5192,6 +5193,7 @@ public final class io/sentry/protocol/Device : io/sentry/JsonSerializable, io/se public fun setBootTime (Ljava/util/Date;)V public fun setBrand (Ljava/lang/String;)V public fun setCharging (Ljava/lang/Boolean;)V + public fun setChipset (Ljava/lang/String;)V public fun setConnectionType (Ljava/lang/String;)V public fun setCpuDescription (Ljava/lang/String;)V public fun setExternalFreeStorage (Ljava/lang/Long;)V @@ -5249,6 +5251,7 @@ public final class io/sentry/protocol/Device$JsonKeys { public static final field BOOT_TIME Ljava/lang/String; public static final field BRAND Ljava/lang/String; public static final field CHARGING Ljava/lang/String; + public static final field CHIPSET Ljava/lang/String; public static final field CONNECTION_TYPE Ljava/lang/String; public static final field CPU_DESCRIPTION Ljava/lang/String; public static final field EXTERNAL_FREE_STORAGE Ljava/lang/String; diff --git a/sentry/src/main/java/io/sentry/protocol/Device.java b/sentry/src/main/java/io/sentry/protocol/Device.java index f89bb89ad4..e6113efbcb 100644 --- a/sentry/src/main/java/io/sentry/protocol/Device.java +++ b/sentry/src/main/java/io/sentry/protocol/Device.java @@ -146,6 +146,8 @@ public final class Device implements JsonUnknown, JsonSerializable { /** Optional. CPU description. For example, Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz. */ private @Nullable String cpuDescription; + private @Nullable String chipset; + @SuppressWarnings("unused") private @Nullable Map unknown; @@ -189,6 +191,7 @@ public Device() {} this.processorCount = device.processorCount; this.processorFrequency = device.processorFrequency; this.cpuDescription = device.cpuDescription; + this.chipset = device.chipset; this.unknown = CollectionUtils.newConcurrentHashMap(device.unknown); } @@ -451,6 +454,14 @@ public void setCpuDescription(@Nullable final String cpuDescription) { this.cpuDescription = cpuDescription; } + public @Nullable String getChipset() { + return chipset; + } + + public void setChipset(final @Nullable String chipset) { + this.chipset = chipset; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -487,7 +498,8 @@ public boolean equals(Object o) { && Objects.equals(batteryTemperature, device.batteryTemperature) && Objects.equals(processorCount, device.processorCount) && Objects.equals(processorFrequency, device.processorFrequency) - && Objects.equals(cpuDescription, device.cpuDescription); + && Objects.equals(cpuDescription, device.cpuDescription) + && Objects.equals(chipset, device.chipset); } @Override @@ -525,7 +537,8 @@ public int hashCode() { batteryTemperature, processorCount, processorFrequency, - cpuDescription); + cpuDescription, + chipset); result = 31 * result + Arrays.hashCode(archs); return result; } @@ -589,6 +602,7 @@ public static final class JsonKeys { public static final String PROCESSOR_COUNT = "processor_count"; public static final String CPU_DESCRIPTION = "cpu_description"; public static final String PROCESSOR_FREQUENCY = "processor_frequency"; + public static final String CHIPSET = "chipset"; } @Override @@ -694,6 +708,9 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger if (cpuDescription != null) { writer.name(JsonKeys.CPU_DESCRIPTION).value(cpuDescription); } + if (chipset != null) { + writer.name(JsonKeys.CHIPSET).value(chipset); + } if (unknown != null) { for (String key : unknown.keySet()) { Object value = unknown.get(key); @@ -839,6 +856,9 @@ public static final class Deserializer implements JsonDeserializer { case JsonKeys.CPU_DESCRIPTION: device.cpuDescription = reader.nextStringOrNull(); break; + case JsonKeys.CHIPSET: + device.chipset = reader.nextStringOrNull(); + break; default: if (unknown == null) { unknown = new ConcurrentHashMap<>(); diff --git a/sentry/src/test/java/io/sentry/protocol/DeviceSerializationTest.kt b/sentry/src/test/java/io/sentry/protocol/DeviceSerializationTest.kt index c2691bb0a9..aa0f64d395 100644 --- a/sentry/src/test/java/io/sentry/protocol/DeviceSerializationTest.kt +++ b/sentry/src/test/java/io/sentry/protocol/DeviceSerializationTest.kt @@ -14,6 +14,7 @@ import org.junit.Test import org.mockito.kotlin.mock class DeviceSerializationTest { + class Fixture { val logger = mock() @@ -57,6 +58,7 @@ class DeviceSerializationTest { connectionType = "9ceb3a6c-5292-4ed9-8665-5732495e8ed4" batteryTemperature = 0.14775127f cpuDescription = "cpu0" + chipset = "unisoc" processorCount = 4 processorFrequency = 800.0 } diff --git a/sentry/src/test/java/io/sentry/protocol/DeviceTest.kt b/sentry/src/test/java/io/sentry/protocol/DeviceTest.kt index 08c4ed93bb..121cbe6537 100644 --- a/sentry/src/test/java/io/sentry/protocol/DeviceTest.kt +++ b/sentry/src/test/java/io/sentry/protocol/DeviceTest.kt @@ -8,6 +8,7 @@ import kotlin.test.assertNotNull import kotlin.test.assertNotSame class DeviceTest { + @Test fun `copying device wont have the same references`() { val device = Device() @@ -61,6 +62,7 @@ class DeviceTest { device.batteryTemperature = 30f device.locale = "en-US" device.cpuDescription = "cpu0" + device.chipset = "unisoc t606" device.processorCount = 4 device.processorFrequency = 800.0 val unknown = mapOf(Pair("unknown", "unknown")) @@ -100,6 +102,7 @@ class DeviceTest { assertEquals("connection type", clone.connectionType) assertEquals(30f, clone.batteryTemperature) assertEquals("cpu0", clone.cpuDescription) + assertEquals("unisoc t606", clone.chipset) assertEquals(4, clone.processorCount) assertEquals(800.0, clone.processorFrequency) device.processorFrequency = 800.0 diff --git a/sentry/src/test/resources/json/contexts.json b/sentry/src/test/resources/json/contexts.json index 6f58243127..894d73e2dc 100644 --- a/sentry/src/test/resources/json/contexts.json +++ b/sentry/src/test/resources/json/contexts.json @@ -63,7 +63,8 @@ "battery_temperature": 0.14775127, "processor_count": 4, "processor_frequency": 800.0, - "cpu_description": "cpu0" + "cpu_description": "cpu0", + "chipset": "unisoc" }, "feedback": { diff --git a/sentry/src/test/resources/json/device.json b/sentry/src/test/resources/json/device.json index a82f864ee2..4f3c821226 100644 --- a/sentry/src/test/resources/json/device.json +++ b/sentry/src/test/resources/json/device.json @@ -38,5 +38,6 @@ "battery_temperature": 0.14775127, "processor_count": 4, "processor_frequency": 800.0, - "cpu_description": "cpu0" + "cpu_description": "cpu0", + "chipset": "unisoc" } diff --git a/sentry/src/test/resources/json/sentry_base_event.json b/sentry/src/test/resources/json/sentry_base_event.json index 63ae8f03cf..b0ab75faae 100644 --- a/sentry/src/test/resources/json/sentry_base_event.json +++ b/sentry/src/test/resources/json/sentry_base_event.json @@ -66,7 +66,8 @@ "battery_temperature": 0.14775127, "processor_count": 4, "processor_frequency": 800.0, - "cpu_description": "cpu0" + "cpu_description": "cpu0", + "chipset": "unisoc" }, "gpu": { diff --git a/sentry/src/test/resources/json/sentry_base_event_with_null_extra.json b/sentry/src/test/resources/json/sentry_base_event_with_null_extra.json index 2079b424cb..b7763a49c8 100644 --- a/sentry/src/test/resources/json/sentry_base_event_with_null_extra.json +++ b/sentry/src/test/resources/json/sentry_base_event_with_null_extra.json @@ -66,7 +66,8 @@ "battery_temperature": 0.14775127, "processor_count": 4, "processor_frequency": 800.0, - "cpu_description": "cpu0" + "cpu_description": "cpu0", + "chipset": "unisoc" }, "gpu": { diff --git a/sentry/src/test/resources/json/sentry_event.json b/sentry/src/test/resources/json/sentry_event.json index 1a79632582..c96d3bed45 100644 --- a/sentry/src/test/resources/json/sentry_event.json +++ b/sentry/src/test/resources/json/sentry_event.json @@ -201,7 +201,8 @@ "battery_temperature": 0.14775127, "processor_count": 4, "processor_frequency": 800.0, - "cpu_description": "cpu0" + "cpu_description": "cpu0", + "chipset": "unisoc" }, "gpu": { diff --git a/sentry/src/test/resources/json/sentry_replay_event.json b/sentry/src/test/resources/json/sentry_replay_event.json index 7bd64037d7..eb2503edc8 100644 --- a/sentry/src/test/resources/json/sentry_replay_event.json +++ b/sentry/src/test/resources/json/sentry_replay_event.json @@ -84,7 +84,8 @@ "battery_temperature": 0.14775127, "processor_count": 4, "processor_frequency": 800.0, - "cpu_description": "cpu0" + "cpu_description": "cpu0", + "chipset": "unisoc" }, "gpu": { diff --git a/sentry/src/test/resources/json/sentry_transaction.json b/sentry/src/test/resources/json/sentry_transaction.json index daa6d025e9..dba9094315 100644 --- a/sentry/src/test/resources/json/sentry_transaction.json +++ b/sentry/src/test/resources/json/sentry_transaction.json @@ -123,7 +123,8 @@ "battery_temperature": 0.14775127, "processor_count": 4, "processor_frequency": 800.0, - "cpu_description": "cpu0" + "cpu_description": "cpu0", + "chipset": "unisoc" }, "gpu": { diff --git a/sentry/src/test/resources/json/sentry_transaction_legacy_date_format.json b/sentry/src/test/resources/json/sentry_transaction_legacy_date_format.json index 316b44bbaa..a4ef1aed07 100644 --- a/sentry/src/test/resources/json/sentry_transaction_legacy_date_format.json +++ b/sentry/src/test/resources/json/sentry_transaction_legacy_date_format.json @@ -123,7 +123,8 @@ "battery_temperature": 0.14775127, "processor_count": 4, "processor_frequency": 800.0, - "cpu_description": "cpu0" + "cpu_description": "cpu0", + "chipset": "unisoc" }, "gpu": { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy