Skip to content

Commit f503785

Browse files
committed
Merge remote-tracking branch 'origin/develop' into feature/v3
# Conflicts: # dd-sdk-android-core/src/main/kotlin/com/datadog/android/core/internal/DatadogContextProvider.kt # dd-sdk-android-core/src/main/kotlin/com/datadog/android/core/internal/NoOpContextProvider.kt
2 parents 5957478 + bed3c33 commit f503785

File tree

39 files changed

+1970
-355
lines changed

39 files changed

+1970
-355
lines changed

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
# 2.25.0 / 2025-07-28
2+
3+
* [BUGFIX] Fix `WindowCallbackWrapper` NPE. See [#2800](https://github.com/DataDog/dd-sdk-android/pull/2800)
4+
* [MAINTENANCE] Fix release checking script. See [#2799](https://github.com/DataDog/dd-sdk-android/pull/2799)
5+
* [MAINTENANCE] Next dev iteration. See [#2789](https://github.com/DataDog/dd-sdk-android/pull/2789)
6+
* [MAINTENANCE] Merge `release/2.24.0` branch into `develop` branch. See [#2792](https://github.com/DataDog/dd-sdk-android/pull/2792)
7+
* [MAINTENANCE] Update RUM schema. See [#2795](https://github.com/DataDog/dd-sdk-android/pull/2795)
8+
* [MAINTENANCE] Collect `Locale` attributes. See [#2797](https://github.com/DataDog/dd-sdk-android/pull/2797)
9+
110
# 2.24.0 / 2025-07-16
211

312
* [FEATURE] Add Clear User Info API. See [#2768](https://github.com/DataDog/dd-sdk-android/pull/2768)

buildSrc/src/main/kotlin/com/datadog/gradle/config/AndroidConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ object AndroidConfig {
2121
const val MIN_SDK_FOR_AUTO = 29
2222
const val BUILD_TOOLS_VERSION = "36.0.0"
2323

24-
val VERSION = Version(2, 25, 0, Version.Type.Snapshot)
24+
val VERSION = Version(2, 26, 0, Version.Type.Snapshot)
2525
}
2626

2727
// TODO RUM-628 Switch to Java 17 bytecode

ci/scripts/check_latest_release_is_published.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ for artifactId in $(./gradlew -q listAllPublishedArtifactIds); do
1818
echo "Release $tag_name exists for $artifactId"
1919
else
2020
echo "Release $tag_name doesn't exist for $artifactId"
21+
exit 1
2122
fi
2223
done

dd-sdk-android-core/api/apiSurface

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ data class com.datadog.android.api.context.AccountInfo
7070
data class com.datadog.android.api.context.DatadogContext
7171
constructor(com.datadog.android.DatadogSite, String, String, String, String, String, String, String, TimeInfo, ProcessInfo, NetworkInfo, DeviceInfo, UserInfo, AccountInfo?, com.datadog.android.privacy.TrackingConsent, String?, Map<String, Map<String, Any?>>)
7272
data class com.datadog.android.api.context.DeviceInfo
73-
constructor(String, String, String, DeviceType, String, String, String, String, String, Int?)
73+
constructor(String, String, String, DeviceType, String, String, String, String, String, Int?, LocaleInfo)
7474
enum com.datadog.android.api.context.DeviceType
7575
- MOBILE
7676
- TABLET
@@ -79,6 +79,8 @@ enum com.datadog.android.api.context.DeviceType
7979
- GAMING_CONSOLE
8080
- BOT
8181
- OTHER
82+
data class com.datadog.android.api.context.LocaleInfo
83+
constructor(List<String>, String, String)
8284
data class com.datadog.android.api.context.NetworkInfo
8385
constructor(Connectivity = Connectivity.NETWORK_NOT_CONNECTED, kotlin.String? = null, kotlin.Long? = null, kotlin.Long? = null, kotlin.Long? = null, kotlin.Long? = null, kotlin.String? = null)
8486
enum Connectivity

dd-sdk-android-core/api/dd-sdk-android-core.api

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,9 +205,10 @@ public final class com/datadog/android/api/context/DatadogContext {
205205
}
206206

207207
public final class com/datadog/android/api/context/DeviceInfo {
208-
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/DeviceType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)V
208+
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/DeviceType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lcom/datadog/android/api/context/LocaleInfo;)V
209209
public final fun component1 ()Ljava/lang/String;
210210
public final fun component10 ()Ljava/lang/Integer;
211+
public final fun component11 ()Lcom/datadog/android/api/context/LocaleInfo;
211212
public final fun component2 ()Ljava/lang/String;
212213
public final fun component3 ()Ljava/lang/String;
213214
public final fun component4 ()Lcom/datadog/android/api/context/DeviceType;
@@ -216,15 +217,16 @@ public final class com/datadog/android/api/context/DeviceInfo {
216217
public final fun component7 ()Ljava/lang/String;
217218
public final fun component8 ()Ljava/lang/String;
218219
public final fun component9 ()Ljava/lang/String;
219-
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/DeviceType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)Lcom/datadog/android/api/context/DeviceInfo;
220-
public static synthetic fun copy$default (Lcom/datadog/android/api/context/DeviceInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/DeviceType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;ILjava/lang/Object;)Lcom/datadog/android/api/context/DeviceInfo;
220+
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/DeviceType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lcom/datadog/android/api/context/LocaleInfo;)Lcom/datadog/android/api/context/DeviceInfo;
221+
public static synthetic fun copy$default (Lcom/datadog/android/api/context/DeviceInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/datadog/android/api/context/DeviceType;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Lcom/datadog/android/api/context/LocaleInfo;ILjava/lang/Object;)Lcom/datadog/android/api/context/DeviceInfo;
221222
public fun equals (Ljava/lang/Object;)Z
222223
public final fun getArchitecture ()Ljava/lang/String;
223224
public final fun getDeviceBrand ()Ljava/lang/String;
224225
public final fun getDeviceBuildId ()Ljava/lang/String;
225226
public final fun getDeviceModel ()Ljava/lang/String;
226227
public final fun getDeviceName ()Ljava/lang/String;
227228
public final fun getDeviceType ()Lcom/datadog/android/api/context/DeviceType;
229+
public final fun getLocaleInfo ()Lcom/datadog/android/api/context/LocaleInfo;
228230
public final fun getNumberOfDisplays ()Ljava/lang/Integer;
229231
public final fun getOsMajorVersion ()Ljava/lang/String;
230232
public final fun getOsName ()Ljava/lang/String;
@@ -245,6 +247,21 @@ public final class com/datadog/android/api/context/DeviceType : java/lang/Enum {
245247
public static fun values ()[Lcom/datadog/android/api/context/DeviceType;
246248
}
247249

250+
public final class com/datadog/android/api/context/LocaleInfo {
251+
public fun <init> (Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)V
252+
public final fun component1 ()Ljava/util/List;
253+
public final fun component2 ()Ljava/lang/String;
254+
public final fun component3 ()Ljava/lang/String;
255+
public final fun copy (Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)Lcom/datadog/android/api/context/LocaleInfo;
256+
public static synthetic fun copy$default (Lcom/datadog/android/api/context/LocaleInfo;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/datadog/android/api/context/LocaleInfo;
257+
public fun equals (Ljava/lang/Object;)Z
258+
public final fun getCurrentLocale ()Ljava/lang/String;
259+
public final fun getLocales ()Ljava/util/List;
260+
public final fun getTimeZone ()Ljava/lang/String;
261+
public fun hashCode ()I
262+
public fun toString ()Ljava/lang/String;
263+
}
264+
248265
public final class com/datadog/android/api/context/NetworkInfo {
249266
public fun <init> ()V
250267
public fun <init> (Lcom/datadog/android/api/context/NetworkInfo$Connectivity;Ljava/lang/String;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/Long;Ljava/lang/String;)V

dd-sdk-android-core/src/main/kotlin/com/datadog/android/api/context/DeviceInfo.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package com.datadog.android.api.context
1919
* @property osVersion Full operating system version, e.g. 8.1.1.
2020
* @property architecture The CPU architecture of the device.
2121
* @property numberOfDisplays The number of displays on the device.
22+
* @property localeInfo locale information on the device such as timezone and region settings.
2223
*/
2324
data class DeviceInfo(
2425
val deviceName: String,
@@ -30,5 +31,6 @@ data class DeviceInfo(
3031
val osMajorVersion: String,
3132
val osVersion: String,
3233
val architecture: String,
33-
val numberOfDisplays: Int?
34+
val numberOfDisplays: Int?,
35+
val localeInfo: LocaleInfo
3436
)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache License Version 2.0.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2016-Present Datadog, Inc.
5+
*/
6+
7+
package com.datadog.android.api.context
8+
9+
/**
10+
* Provides information about locale.
11+
*
12+
* @property locales Ordered list of the user’s preferred system languages as IETF language tags.
13+
* @property currentLocale The user's current locale as a language tag (language + region), computed from their preferences and the app's supported languages, e.g. 'es-FR'.
14+
* @property timeZone The device’s current time zone identifier, e.g. 'Europe/Berlin'.
15+
*/
16+
data class LocaleInfo(
17+
val locales: List<String>,
18+
val currentLocale: String,
19+
val timeZone: String
20+
)

dd-sdk-android-core/src/main/kotlin/com/datadog/android/core/internal/DatadogContextProvider.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package com.datadog.android.core.internal
88

99
import com.datadog.android.api.context.DatadogContext
1010
import com.datadog.android.api.context.DeviceInfo
11+
import com.datadog.android.api.context.LocaleInfo
1112
import com.datadog.android.api.context.ProcessInfo
1213
import com.datadog.android.api.context.TimeInfo
1314
import java.util.concurrent.TimeUnit
@@ -54,8 +55,14 @@ internal class DatadogContextProvider(
5455
osVersion = osVersion,
5556
osMajorVersion = osMajorVersion,
5657
architecture = architecture,
57-
numberOfDisplays = numberOfDisplays
58-
)
58+
numberOfDisplays = numberOfDisplays,
59+
localeInfo = with(coreFeature.androidInfoProvider) {
60+
LocaleInfo(
61+
locales = locales,
62+
currentLocale = currentLocale,
63+
timeZone = timeZone
64+
)
65+
})
5966
},
6067
userInfo = coreFeature.userInfoProvider.getUserInfo(),
6168
accountInfo = coreFeature.accountInfoProvider.getAccountInfo(),

dd-sdk-android-core/src/main/kotlin/com/datadog/android/core/internal/NoOpContextProvider.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.datadog.android.DatadogSite
1010
import com.datadog.android.api.context.DatadogContext
1111
import com.datadog.android.api.context.DeviceInfo
1212
import com.datadog.android.api.context.DeviceType
13+
import com.datadog.android.api.context.LocaleInfo
1314
import com.datadog.android.api.context.NetworkInfo
1415
import com.datadog.android.api.context.ProcessInfo
1516
import com.datadog.android.api.context.TimeInfo
@@ -53,7 +54,12 @@ internal class NoOpContextProvider : ContextProvider {
5354
osMajorVersion = "",
5455
osVersion = "",
5556
architecture = "",
56-
numberOfDisplays = null
57+
numberOfDisplays = null,
58+
localeInfo = LocaleInfo(
59+
locales = emptyList(),
60+
currentLocale = "",
61+
timeZone = ""
62+
)
5763
),
5864
userInfo = UserInfo(null, null, null, null, emptyMap()),
5965
accountInfo = null,

dd-sdk-android-core/src/main/kotlin/com/datadog/android/core/internal/system/AndroidInfoProvider.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,10 @@ internal interface AndroidInfoProvider {
2929
val architecture: String
3030

3131
val numberOfDisplays: Int?
32+
33+
val locales: List<String>
34+
35+
val currentLocale: String
36+
37+
val timeZone: String
3238
}

0 commit comments

Comments
 (0)