Skip to content

Commit 34e71f7

Browse files
authored
feat(contexts): Add chipset to device context (#4512)
* feat(contexts): Add chipset to device context * Changelog * Fix tests * Spotless * Revert formatting
1 parent 8b8369f commit 34e71f7

File tree

14 files changed

+54
-10
lines changed

14 files changed

+54
-10
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
### Features
6+
7+
- Add chipset to device context ([#4512](https://github.com/getsentry/sentry-java/pull/4512))
8+
59
### Fixes
610

711
- No longer send out empty log envelopes ([#4497](https://github.com/getsentry/sentry-java/pull/4497))

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
@@ -146,6 +146,8 @@ public final class Device implements JsonUnknown, JsonSerializable {
146146
/** Optional. CPU description. For example, Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz. */
147147
private @Nullable String cpuDescription;
148148

149+
private @Nullable String chipset;
150+
149151
@SuppressWarnings("unused")
150152
private @Nullable Map<String, @NotNull Object> unknown;
151153

@@ -189,6 +191,7 @@ public Device() {}
189191
this.processorCount = device.processorCount;
190192
this.processorFrequency = device.processorFrequency;
191193
this.cpuDescription = device.cpuDescription;
194+
this.chipset = device.chipset;
192195

193196
this.unknown = CollectionUtils.newConcurrentHashMap(device.unknown);
194197
}
@@ -451,6 +454,14 @@ public void setCpuDescription(@Nullable final String cpuDescription) {
451454
this.cpuDescription = cpuDescription;
452455
}
453456

457+
public @Nullable String getChipset() {
458+
return chipset;
459+
}
460+
461+
public void setChipset(final @Nullable String chipset) {
462+
this.chipset = chipset;
463+
}
464+
454465
@Override
455466
public boolean equals(Object o) {
456467
if (this == o) return true;
@@ -487,7 +498,8 @@ public boolean equals(Object o) {
487498
&& Objects.equals(batteryTemperature, device.batteryTemperature)
488499
&& Objects.equals(processorCount, device.processorCount)
489500
&& Objects.equals(processorFrequency, device.processorFrequency)
490-
&& Objects.equals(cpuDescription, device.cpuDescription);
501+
&& Objects.equals(cpuDescription, device.cpuDescription)
502+
&& Objects.equals(chipset, device.chipset);
491503
}
492504

493505
@Override
@@ -525,7 +537,8 @@ public int hashCode() {
525537
batteryTemperature,
526538
processorCount,
527539
processorFrequency,
528-
cpuDescription);
540+
cpuDescription,
541+
chipset);
529542
result = 31 * result + Arrays.hashCode(archs);
530543
return result;
531544
}
@@ -589,6 +602,7 @@ public static final class JsonKeys {
589602
public static final String PROCESSOR_COUNT = "processor_count";
590603
public static final String CPU_DESCRIPTION = "cpu_description";
591604
public static final String PROCESSOR_FREQUENCY = "processor_frequency";
605+
public static final String CHIPSET = "chipset";
592606
}
593607

594608
@Override
@@ -694,6 +708,9 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger
694708
if (cpuDescription != null) {
695709
writer.name(JsonKeys.CPU_DESCRIPTION).value(cpuDescription);
696710
}
711+
if (chipset != null) {
712+
writer.name(JsonKeys.CHIPSET).value(chipset);
713+
}
697714
if (unknown != null) {
698715
for (String key : unknown.keySet()) {
699716
Object value = unknown.get(key);
@@ -839,6 +856,9 @@ public static final class Deserializer implements JsonDeserializer<Device> {
839856
case JsonKeys.CPU_DESCRIPTION:
840857
device.cpuDescription = reader.nextStringOrNull();
841858
break;
859+
case JsonKeys.CHIPSET:
860+
device.chipset = reader.nextStringOrNull();
861+
break;
842862
default:
843863
if (unknown == null) {
844864
unknown = new ConcurrentHashMap<>();

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import org.junit.Test
1414
import org.mockito.kotlin.mock
1515

1616
class DeviceSerializationTest {
17+
1718
class Fixture {
1819
val logger = mock<ILogger>()
1920

@@ -57,6 +58,7 @@ class DeviceSerializationTest {
5758
connectionType = "9ceb3a6c-5292-4ed9-8665-5732495e8ed4"
5859
batteryTemperature = 0.14775127f
5960
cpuDescription = "cpu0"
61+
chipset = "unisoc"
6062
processorCount = 4
6163
processorFrequency = 800.0
6264
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import kotlin.test.assertNotNull
88
import kotlin.test.assertNotSame
99

1010
class DeviceTest {
11+
1112
@Test
1213
fun `copying device wont have the same references`() {
1314
val device = Device()
@@ -61,6 +62,7 @@ class DeviceTest {
6162
device.batteryTemperature = 30f
6263
device.locale = "en-US"
6364
device.cpuDescription = "cpu0"
65+
device.chipset = "unisoc t606"
6466
device.processorCount = 4
6567
device.processorFrequency = 800.0
6668
val unknown = mapOf(Pair("unknown", "unknown"))
@@ -100,6 +102,7 @@ class DeviceTest {
100102
assertEquals("connection type", clone.connectionType)
101103
assertEquals(30f, clone.batteryTemperature)
102104
assertEquals("cpu0", clone.cpuDescription)
105+
assertEquals("unisoc t606", clone.chipset)
103106
assertEquals(4, clone.processorCount)
104107
assertEquals(800.0, clone.processorFrequency)
105108
device.processorFrequency = 800.0

sentry/src/test/resources/json/contexts.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@
6363
"battery_temperature": 0.14775127,
6464
"processor_count": 4,
6565
"processor_frequency": 800.0,
66-
"cpu_description": "cpu0"
66+
"cpu_description": "cpu0",
67+
"chipset": "unisoc"
6768
},
6869
"feedback":
6970
{

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"
4243
}

sentry/src/test/resources/json/sentry_base_event.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@
6666
"battery_temperature": 0.14775127,
6767
"processor_count": 4,
6868
"processor_frequency": 800.0,
69-
"cpu_description": "cpu0"
69+
"cpu_description": "cpu0",
70+
"chipset": "unisoc"
7071
},
7172
"gpu":
7273
{

sentry/src/test/resources/json/sentry_base_event_with_null_extra.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@
6666
"battery_temperature": 0.14775127,
6767
"processor_count": 4,
6868
"processor_frequency": 800.0,
69-
"cpu_description": "cpu0"
69+
"cpu_description": "cpu0",
70+
"chipset": "unisoc"
7071
},
7172
"gpu":
7273
{

sentry/src/test/resources/json/sentry_event.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,8 @@
201201
"battery_temperature": 0.14775127,
202202
"processor_count": 4,
203203
"processor_frequency": 800.0,
204-
"cpu_description": "cpu0"
204+
"cpu_description": "cpu0",
205+
"chipset": "unisoc"
205206
},
206207
"gpu":
207208
{

sentry/src/test/resources/json/sentry_replay_event.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@
8484
"battery_temperature": 0.14775127,
8585
"processor_count": 4,
8686
"processor_frequency": 800.0,
87-
"cpu_description": "cpu0"
87+
"cpu_description": "cpu0",
88+
"chipset": "unisoc"
8889
},
8990
"gpu":
9091
{

sentry/src/test/resources/json/sentry_transaction.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@
123123
"battery_temperature": 0.14775127,
124124
"processor_count": 4,
125125
"processor_frequency": 800.0,
126-
"cpu_description": "cpu0"
126+
"cpu_description": "cpu0",
127+
"chipset": "unisoc"
127128
},
128129
"gpu":
129130
{

sentry/src/test/resources/json/sentry_transaction_legacy_date_format.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@
123123
"battery_temperature": 0.14775127,
124124
"processor_count": 4,
125125
"processor_frequency": 800.0,
126-
"cpu_description": "cpu0"
126+
"cpu_description": "cpu0",
127+
"chipset": "unisoc"
127128
},
128129
"gpu":
129130
{

0 commit comments

Comments
 (0)