Skip to content

Commit 4213430

Browse files
committed
feat(contexts): Add chipset to device context
1 parent 6cea621 commit 4213430

File tree

6 files changed

+34
-3
lines changed

6 files changed

+34
-3
lines changed

sentry-android-core/src/main/java/io/sentry/android/core/DeviceInfoUtil.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public static void resetInstance() {
9696

9797
// we can get some inspiration here
9898
// https://github.com/flutter/plugins/blob/master/packages/device_info/android/src/main/java/io/flutter/plugins/deviceinfo/DeviceInfoPlugin.java
99+
@SuppressLint("NewApi")
99100
@NotNull
100101
public Device collectDeviceInformation(
101102
final boolean collectDeviceIO, final boolean collectDynamicData) {
@@ -107,6 +108,9 @@ public Device collectDeviceInformation(
107108
device.setModel(Build.MODEL);
108109
device.setModelId(Build.ID);
109110
device.setArchs(ContextUtils.getArchitectures());
111+
if (buildInfoProvider.getSdkInfoVersion() >= Build.VERSION_CODES.S) {
112+
device.setChipset(Build.SOC_MANUFACTURER + " " + Build.SOC_MODEL);
113+
}
110114

111115
device.setOrientation(getOrientation());
112116
if (isEmulator != null) {

sentry/api/sentry.api

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5155,6 +5155,7 @@ public final class io/sentry/protocol/Device : io/sentry/JsonSerializable, io/se
51555155
public fun getBatteryTemperature ()Ljava/lang/Float;
51565156
public fun getBootTime ()Ljava/util/Date;
51575157
public fun getBrand ()Ljava/lang/String;
5158+
public fun getChipset ()Ljava/lang/String;
51585159
public fun getConnectionType ()Ljava/lang/String;
51595160
public fun getCpuDescription ()Ljava/lang/String;
51605161
public fun getExternalFreeStorage ()Ljava/lang/Long;
@@ -5192,6 +5193,7 @@ public final class io/sentry/protocol/Device : io/sentry/JsonSerializable, io/se
51925193
public fun setBootTime (Ljava/util/Date;)V
51935194
public fun setBrand (Ljava/lang/String;)V
51945195
public fun setCharging (Ljava/lang/Boolean;)V
5196+
public fun setChipset (Ljava/lang/String;)V
51955197
public fun setConnectionType (Ljava/lang/String;)V
51965198
public fun setCpuDescription (Ljava/lang/String;)V
51975199
public fun setExternalFreeStorage (Ljava/lang/Long;)V
@@ -5249,6 +5251,7 @@ public final class io/sentry/protocol/Device$JsonKeys {
52495251
public static final field BOOT_TIME Ljava/lang/String;
52505252
public static final field BRAND Ljava/lang/String;
52515253
public static final field CHARGING Ljava/lang/String;
5254+
public static final field CHIPSET Ljava/lang/String;
52525255
public static final field CONNECTION_TYPE Ljava/lang/String;
52535256
public static final field CPU_DESCRIPTION Ljava/lang/String;
52545257
public static final field EXTERNAL_FREE_STORAGE Ljava/lang/String;

sentry/src/main/java/io/sentry/protocol/Device.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ public final class Device implements JsonUnknown, JsonSerializable {
124124
/** Optional. CPU description. For example, Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz. */
125125
private @Nullable String cpuDescription;
126126

127+
private @Nullable String chipset;
128+
127129
@SuppressWarnings("unused")
128130
private @Nullable Map<String, @NotNull Object> unknown;
129131

@@ -167,6 +169,7 @@ public Device() {}
167169
this.processorCount = device.processorCount;
168170
this.processorFrequency = device.processorFrequency;
169171
this.cpuDescription = device.cpuDescription;
172+
this.chipset = device.chipset;
170173

171174
this.unknown = CollectionUtils.newConcurrentHashMap(device.unknown);
172175
}
@@ -429,6 +432,14 @@ public void setCpuDescription(@Nullable final String cpuDescription) {
429432
this.cpuDescription = cpuDescription;
430433
}
431434

435+
public @Nullable String getChipset() {
436+
return chipset;
437+
}
438+
439+
public void setChipset(final @Nullable String chipset) {
440+
this.chipset = chipset;
441+
}
442+
432443
@Override
433444
public boolean equals(Object o) {
434445
if (this == o) return true;
@@ -465,7 +476,8 @@ public boolean equals(Object o) {
465476
&& Objects.equals(batteryTemperature, device.batteryTemperature)
466477
&& Objects.equals(processorCount, device.processorCount)
467478
&& Objects.equals(processorFrequency, device.processorFrequency)
468-
&& Objects.equals(cpuDescription, device.cpuDescription);
479+
&& Objects.equals(cpuDescription, device.cpuDescription)
480+
&& Objects.equals(chipset, device.chipset);
469481
}
470482

471483
@Override
@@ -503,7 +515,8 @@ public int hashCode() {
503515
batteryTemperature,
504516
processorCount,
505517
processorFrequency,
506-
cpuDescription);
518+
cpuDescription,
519+
chipset);
507520
result = 31 * result + Arrays.hashCode(archs);
508521
return result;
509522
}
@@ -567,6 +580,7 @@ public static final class JsonKeys {
567580
public static final String PROCESSOR_COUNT = "processor_count";
568581
public static final String CPU_DESCRIPTION = "cpu_description";
569582
public static final String PROCESSOR_FREQUENCY = "processor_frequency";
583+
public static final String CHIPSET = "chipset";
570584
}
571585

572586
@Override
@@ -672,6 +686,9 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger
672686
if (cpuDescription != null) {
673687
writer.name(JsonKeys.CPU_DESCRIPTION).value(cpuDescription);
674688
}
689+
if (chipset != null) {
690+
writer.name(JsonKeys.CHIPSET).value(chipset);
691+
}
675692
if (unknown != null) {
676693
for (String key : unknown.keySet()) {
677694
Object value = unknown.get(key);
@@ -817,6 +834,9 @@ public static final class Deserializer implements JsonDeserializer<Device> {
817834
case JsonKeys.CPU_DESCRIPTION:
818835
device.cpuDescription = reader.nextStringOrNull();
819836
break;
837+
case JsonKeys.CHIPSET:
838+
device.chipset = reader.nextStringOrNull();
839+
break;
820840
default:
821841
if (unknown == null) {
822842
unknown = new ConcurrentHashMap<>();

sentry/src/test/java/io/sentry/protocol/DeviceSerializationTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class DeviceSerializationTest {
5656
connectionType = "9ceb3a6c-5292-4ed9-8665-5732495e8ed4"
5757
batteryTemperature = 0.14775127f
5858
cpuDescription = "cpu0"
59+
chipset = "unisoc t606"
5960
processorCount = 4
6061
processorFrequency = 800.0
6162
}

sentry/src/test/java/io/sentry/protocol/DeviceTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class DeviceTest {
6262
device.batteryTemperature = 30f
6363
device.locale = "en-US"
6464
device.cpuDescription = "cpu0"
65+
device.chipset = "unisoc t606"
6566
device.processorCount = 4
6667
device.processorFrequency = 800.0
6768
val unknown = mapOf(Pair("unknown", "unknown"))
@@ -101,6 +102,7 @@ class DeviceTest {
101102
assertEquals("connection type", clone.connectionType)
102103
assertEquals(30f, clone.batteryTemperature)
103104
assertEquals("cpu0", clone.cpuDescription)
105+
assertEquals("unisoc t606", clone.chipset)
104106
assertEquals(4, clone.processorCount)
105107
assertEquals(800.0, clone.processorFrequency)
106108
device.processorFrequency = 800.0

sentry/src/test/resources/json/device.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@
3838
"battery_temperature": 0.14775127,
3939
"processor_count": 4,
4040
"processor_frequency": 800.0,
41-
"cpu_description": "cpu0"
41+
"cpu_description": "cpu0",
42+
"chipset": "unisoc t606"
4243
}

0 commit comments

Comments
 (0)