Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dd-sdk-android-core/api/apiSurface
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ data class com.datadog.android.api.context.AccountInfo
data class com.datadog.android.api.context.DatadogContext
constructor(com.datadog.android.DatadogSite, String, String, String, String, Int, String, String, String, TimeInfo, ProcessInfo, NetworkInfo, DeviceInfo, UserInfo, AccountInfo?, com.datadog.android.privacy.TrackingConsent, String?, Map<String, Map<String, Any?>>)
data class com.datadog.android.api.context.DeviceInfo
constructor(String, String, String, DeviceType, String, String, String, String, String, Int?, LocaleInfo)
constructor(String, String, String, DeviceType, String, String, String, String, String, Int?, LocaleInfo, Int?, Int?, Boolean?)
enum com.datadog.android.api.context.DeviceType
- MOBILE
- TABLET
Expand Down
12 changes: 9 additions & 3 deletions dd-sdk-android-core/api/dd-sdk-android-core.api
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,13 @@ public final class com/datadog/android/api/context/DatadogContext {
}

public final class com/datadog/android/api/context/DeviceInfo {
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
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;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Boolean;)V
public final fun component1 ()Ljava/lang/String;
public final fun component10 ()Ljava/lang/Integer;
public final fun component11 ()Lcom/datadog/android/api/context/LocaleInfo;
public final fun component12 ()Ljava/lang/Integer;
public final fun component13 ()Ljava/lang/Integer;
public final fun component14 ()Ljava/lang/Boolean;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Lcom/datadog/android/api/context/DeviceType;
Expand All @@ -221,8 +224,8 @@ public final class com/datadog/android/api/context/DeviceInfo {
public final fun component7 ()Ljava/lang/String;
public final fun component8 ()Ljava/lang/String;
public final fun component9 ()Ljava/lang/String;
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;
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;
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;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Boolean;)Lcom/datadog/android/api/context/DeviceInfo;
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;Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/datadog/android/api/context/DeviceInfo;
public fun equals (Ljava/lang/Object;)Z
public final fun getArchitecture ()Ljava/lang/String;
public final fun getDeviceBrand ()Ljava/lang/String;
Expand All @@ -235,7 +238,10 @@ public final class com/datadog/android/api/context/DeviceInfo {
public final fun getOsMajorVersion ()Ljava/lang/String;
public final fun getOsName ()Ljava/lang/String;
public final fun getOsVersion ()Ljava/lang/String;
public final fun getProcessorCount ()Ljava/lang/Integer;
public final fun getTotalRam ()Ljava/lang/Integer;
public fun hashCode ()I
public final fun isLowRamDevice ()Ljava/lang/Boolean;
public fun toString ()Ljava/lang/String;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ package com.datadog.android.api.context
* @property architecture The CPU architecture of the device.
* @property numberOfDisplays The number of displays on the device.
* @property localeInfo locale information on the device such as timezone and region settings.
* @property processorCount Number of available processors on the device.
* @property totalRam Total RAM available on the device in Megabytes.
* @property isLowRamDevice Whether the device is considered a low RAM device by the OS.
*/
data class DeviceInfo(
val deviceName: String,
Expand All @@ -32,5 +35,8 @@ data class DeviceInfo(
val osVersion: String,
val architecture: String,
val numberOfDisplays: Int?,
val localeInfo: LocaleInfo
val localeInfo: LocaleInfo,
val processorCount: Int?,
val totalRam: Int?,
val isLowRamDevice: Boolean?
)
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,10 @@ internal class DatadogContextProvider(
currentLocale = currentLocale,
timeZone = timeZone
)
}
},
processorCount = processorCount,
totalRam = totalRam,
isLowRamDevice = isLowRamDevice
)
},
userInfo = coreFeature.userInfoProvider.getUserInfo(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,10 @@ internal class NoOpContextProvider : ContextProvider {
locales = emptyList(),
currentLocale = "",
timeZone = ""
)
),
processorCount = 0,
totalRam = 0,
isLowRamDevice = false
),
userInfo = UserInfo(null, null, null, null, emptyMap()),
accountInfo = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,10 @@ internal interface AndroidInfoProvider {
val currentLocale: String

val timeZone: String

val processorCount: Int

val totalRam: Int?

val isLowRamDevice: Boolean?
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

package com.datadog.android.core.internal.system

import android.app.ActivityManager
import android.app.UiModeManager
import android.content.Context
import android.content.pm.PackageManager
Expand Down Expand Up @@ -127,10 +128,37 @@ internal class DefaultAndroidInfoProvider(
}
}

override val processorCount: Int by lazy(LazyThreadSafetyMode.PUBLICATION) {
Runtime.getRuntime().availableProcessors()
}

@Suppress("UnsafeThirdPartyFunctionCall") // Called within a try/catch block
override val totalRam: Int? by lazy(LazyThreadSafetyMode.PUBLICATION) {
try {
val activityManager = appContext.getSystemService(ActivityManager::class.java)
val info = ActivityManager.MemoryInfo()
activityManager.getMemoryInfo(info)
(info.totalMem / MB_IN_BYTES).toInt()
} catch (_: Exception) {
null
}
}

@Suppress("UnsafeThirdPartyFunctionCall") // Called within a try/catch block
override val isLowRamDevice: Boolean? by lazy(LazyThreadSafetyMode.PUBLICATION) {
try {
val activityManager = appContext.getSystemService(ActivityManager::class.java)
activityManager.isLowRamDevice
} catch (_: Exception) {
null
}
}

companion object {

const val FEATURE_GOOGLE_ANDROID_TV = "com.google.android.tv"
const val MIN_TABLET_WIDTH_DP = 800
const val MB_IN_BYTES = 1048576L

private fun resolveDeviceType(model: String, appContext: Context): DeviceType {
return if (isTv(appContext)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,7 @@ internal class NoOpAndroidInfoProvider : AndroidInfoProvider {
override val locales: List<String> = emptyList()
override val currentLocale: String = ""
override val timeZone: String = ""
override val processorCount: Int = 0
override val totalRam: Int? = null
override val isLowRamDevice: Boolean? = null
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ internal class AndroidInfoProviderForgeryFactory : ForgeryFactory<AndroidInfoPro
val locales = forge.aList { forge.aString() }
val currentLocale = forge.aString()
val timeZone = forge.aString()
val processorCount: Int = forge.anInt()
val totalRam: Int = forge.anInt()
val isLowRamDevice: Boolean = forge.aBool()

return object : AndroidInfoProvider {
override val deviceName = deviceName
Expand All @@ -42,6 +45,9 @@ internal class AndroidInfoProviderForgeryFactory : ForgeryFactory<AndroidInfoPro
override val locales: List<String> = locales
override val currentLocale: String = currentLocale
override val timeZone: String = timeZone
override val processorCount: Int = processorCount
override val totalRam: Int? = totalRam
override val isLowRamDevice: Boolean? = isLowRamDevice
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,10 @@ class DeviceInfoForgeryFactory : ForgeryFactory<DeviceInfo> {
osMajorVersion = forge.aString(),
architecture = forge.aString(),
numberOfDisplays = forge.aNullable { forge.anInt() },
localeInfo = forge.getForgery()
localeInfo = forge.getForgery(),
processorCount = forge.anInt(),
totalRam = forge.anInt(),
isLowRamDevice = forge.aBool()
)
}
}
2 changes: 1 addition & 1 deletion features/dd-sdk-android-logs/api/apiSurface
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ data class com.datadog.android.log.model.LogEvent
fun fromJson(kotlin.String): LogEvent
fun fromJsonObject(com.google.gson.JsonObject): LogEvent
data class LogEventDevice
constructor(Type? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.collections.List<kotlin.String>? = null, kotlin.String? = null, kotlin.Number? = null, kotlin.Boolean? = null, kotlin.Number? = null)
constructor(Type? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.String? = null, kotlin.collections.List<kotlin.String>? = null, kotlin.String? = null, kotlin.Number? = null, kotlin.Boolean? = null, kotlin.Number? = null, kotlin.Number? = null, kotlin.Number? = null, kotlin.Boolean? = null)
fun toJson(): com.google.gson.JsonElement
companion object
fun fromJson(kotlin.String): LogEventDevice
Expand Down
14 changes: 10 additions & 4 deletions features/dd-sdk-android-logs/api/dd-sdk-android-logs.api
Original file line number Diff line number Diff line change
Expand Up @@ -273,11 +273,14 @@ public final class com/datadog/android/log/model/LogEvent$Error$Companion {
public final class com/datadog/android/log/model/LogEvent$LogEventDevice {
public static final field Companion Lcom/datadog/android/log/model/LogEvent$LogEventDevice$Companion;
public fun <init> ()V
public fun <init> (Lcom/datadog/android/log/model/LogEvent$Type;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Boolean;Ljava/lang/Number;)V
public synthetic fun <init> (Lcom/datadog/android/log/model/LogEvent$Type;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Boolean;Ljava/lang/Number;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Lcom/datadog/android/log/model/LogEvent$Type;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Boolean;Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Boolean;)V
public synthetic fun <init> (Lcom/datadog/android/log/model/LogEvent$Type;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Boolean;Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Boolean;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Lcom/datadog/android/log/model/LogEvent$Type;
public final fun component10 ()Ljava/lang/Boolean;
public final fun component11 ()Ljava/lang/Number;
public final fun component12 ()Ljava/lang/Number;
public final fun component13 ()Ljava/lang/Number;
public final fun component14 ()Ljava/lang/Boolean;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Ljava/lang/String;
Expand All @@ -286,8 +289,8 @@ public final class com/datadog/android/log/model/LogEvent$LogEventDevice {
public final fun component7 ()Ljava/util/List;
public final fun component8 ()Ljava/lang/String;
public final fun component9 ()Ljava/lang/Number;
public final fun copy (Lcom/datadog/android/log/model/LogEvent$Type;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Boolean;Ljava/lang/Number;)Lcom/datadog/android/log/model/LogEvent$LogEventDevice;
public static synthetic fun copy$default (Lcom/datadog/android/log/model/LogEvent$LogEventDevice;Lcom/datadog/android/log/model/LogEvent$Type;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Boolean;Ljava/lang/Number;ILjava/lang/Object;)Lcom/datadog/android/log/model/LogEvent$LogEventDevice;
public final fun copy (Lcom/datadog/android/log/model/LogEvent$Type;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Boolean;Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Boolean;)Lcom/datadog/android/log/model/LogEvent$LogEventDevice;
public static synthetic fun copy$default (Lcom/datadog/android/log/model/LogEvent$LogEventDevice;Lcom/datadog/android/log/model/LogEvent$Type;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;Ljava/lang/Number;Ljava/lang/Boolean;Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Number;Ljava/lang/Boolean;ILjava/lang/Object;)Lcom/datadog/android/log/model/LogEvent$LogEventDevice;
public fun equals (Ljava/lang/Object;)Z
public static final fun fromJson (Ljava/lang/String;)Lcom/datadog/android/log/model/LogEvent$LogEventDevice;
public static final fun fromJsonObject (Lcom/google/gson/JsonObject;)Lcom/datadog/android/log/model/LogEvent$LogEventDevice;
Expand All @@ -300,9 +303,12 @@ public final class com/datadog/android/log/model/LogEvent$LogEventDevice {
public final fun getModel ()Ljava/lang/String;
public final fun getName ()Ljava/lang/String;
public final fun getPowerSavingMode ()Ljava/lang/Boolean;
public final fun getProcessorCount ()Ljava/lang/Number;
public final fun getTimeZone ()Ljava/lang/String;
public final fun getTotalRam ()Ljava/lang/Number;
public final fun getType ()Lcom/datadog/android/log/model/LogEvent$Type;
public fun hashCode ()I
public final fun isLowRamDevice ()Ljava/lang/Boolean;
public final fun toJson ()Lcom/google/gson/JsonElement;
public fun toString ()Ljava/lang/String;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,10 @@ internal class DatadogLogGenerator(
name = deviceInfo.deviceName,
model = deviceInfo.deviceModel,
brand = deviceInfo.deviceBrand,
architecture = deviceInfo.architecture
architecture = deviceInfo.architecture,
processorCount = deviceInfo.processorCount,
totalRam = deviceInfo.totalRam,
isLowRamDevice = deviceInfo.isLowRamDevice
)

private fun resolveDeviceType(deviceType: DeviceType): LogEvent.Type = when (deviceType) {
Expand Down
Loading
Loading