Skip to content

Commit c009ee6

Browse files
authored
Merge pull request #3565 from DataDog/jmoskovich/merge-develop-heatmap
Merge develop into feature/heatmaps
2 parents f9d674d + 9ade3cb commit c009ee6

331 files changed

Lines changed: 9693 additions & 1919 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,18 @@
33
# Copyright 2016-Present Datadog, Inc.
44

55
[*.{kt,kts}]
6-
ktlint_code_style = android_studio
76
ij_kotlin_allow_trailing_comma_on_call_site = false
87
ij_kotlin_allow_trailing_comma = false
98
ij_kotlin_imports_layout=*,java.**,javax.**,kotlin.**,^
9+
ktlint_code_style = android_studio
10+
ktlint_function_naming_ignore_when_annotated_with = Composable
11+
ktlint_standard_class-signature = disabled
12+
ktlint_standard_condition-wrapping = disabled
13+
ktlint_standard_enum-wrapping = disabled
14+
ktlint_standard_function-expression-body = disabled
15+
ktlint_standard_function-signature = disabled
16+
ktlint_standard_property-naming = disabled
17+
ktlint_standard_statement-wrapping = disabled
1018
max_line_length = 120
1119

1220
# Code generated by KotlinPoet
@@ -15,4 +23,9 @@ ktlint_standard = disabled
1523

1624
# SPDX License Names
1725
[buildSrc/src/main/kotlin/com/datadog/gradle/plugin/checklicenses/SPDXLicense.kt]
18-
ktlint_standard_enum-entry-name-case = disabled
26+
ktlint_standard_enum-entry-name-case = disabled
27+
28+
# NoOp test fixtures use compound filenames (OuterVisibilityOuterInnerVisibilityInner.kt)
29+
# to distinguish visibility combinations; the top-level class name stays short on purpose.
30+
[tools/noopfactory/src/test/resources/**/*.kt]
31+
ktlint_standard_filename = disabled

.gitlab-ci.yml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
variables:
2-
CURRENT_CI_IMAGE: "24"
2+
CURRENT_CI_IMAGE: "25"
33
CI_IMAGE_DOCKER: registry.ddbuild.io/ci/dd-sdk-android:$CURRENT_CI_IMAGE
44
GIT_DEPTH: 5
55

@@ -10,7 +10,7 @@ variables:
1010
DD_COMMON_AGENT_CONFIG: "dd.env=ci,dd.trace.enabled=false,dd.jmx.fetch.enabled=false"
1111

1212
KUBERNETES_MEMORY_REQUEST: "8Gi"
13-
KUBERNETES_MEMORY_LIMIT: "13Gi"
13+
KUBERNETES_MEMORY_LIMIT: "32Gi"
1414

1515
EMULATOR_NAME: "android_emulator"
1616
ANDROID_ARCH: "arm64-v8a"
@@ -19,6 +19,15 @@ variables:
1919

2020
CACHE_FALLBACK_KEY: "develop"
2121

22+
# Magic Mirror Depot proxy URLs. The depot proxies both Maven Central and the Gradle
23+
# Plugin Portal for the Java ecosystem from the same endpoint. Setting these routes
24+
# dependency/plugin resolution through Datadog's internal mirror to avoid HTTP 429
25+
# rate-limits from upstream registries.
26+
# Declared as ORG_GRADLE_PROJECT_* so Gradle reads them as
27+
# `providers.gradleProperty("<name>")` and they propagate to triggered child pipelines.
28+
ORG_GRADLE_PROJECT_mavenRepositoryProxy: "https://depot-read-api-java.us1.ddbuild.io/magicmirror/magicmirror/@current/"
29+
ORG_GRADLE_PROJECT_gradlePluginProxy: "https://depot-read-api-java.us1.ddbuild.io/magicmirror/magicmirror/@current/"
30+
2231
include:
2332
- local: 'ci/pipelines/default-pipeline.yml'
2433
rules:

CHANGELOG.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,81 @@
1+
# 3.11.0 / 2026-06-16
2+
3+
* [FEATURE] Support `addEvent` for OpenTelemetry spans (logging events). See [#3377](https://github.com/DataDog/dd-sdk-android/pull/3377)
4+
* [FEATURE] Add cross-product sampling rebasing for RUM-to-APM correlation. See [#3402](https://github.com/DataDog/dd-sdk-android/pull/3402)
5+
* [FEATURE] Report carrier info on Android API 24+. See [#3449](https://github.com/DataDog/dd-sdk-android/pull/3449)
6+
* [FEATURE] Add trace sampling decision to `DatadogEventBridge`. See [#3495](https://github.com/DataDog/dd-sdk-android/pull/3495)
7+
* [IMPROVEMENT] Preserve custom `DeterministicTraceSampler` subclasses from rebasing. See [#3455](https://github.com/DataDog/dd-sdk-android/pull/3455)
8+
* [IMPROVEMENT] Rename `last_failure_status` to `retry_after`. See [#3459](https://github.com/DataDog/dd-sdk-android/pull/3459)
9+
* [IMPROVEMENT] Optimize `isMainProcess` detection. See [#3489](https://github.com/DataDog/dd-sdk-android/pull/3489)
10+
* [IMPROVEMENT] Add name support for work units in `BackPressureExecutorService#submit`. See [#3492](https://github.com/DataDog/dd-sdk-android/pull/3492)
11+
* [IMPROVEMENT] Remove regex usage in `MemoryVitalReader`. See [#3499](https://github.com/DataDog/dd-sdk-android/pull/3499)
12+
* [IMPROVEMENT] Read process importance early. See [#3504](https://github.com/DataDog/dd-sdk-android/pull/3504)
13+
* [IMPROVEMENT] Enforce schema character set on `vital.name` in Operation APIs. See [#3393](https://github.com/DataDog/dd-sdk-android/pull/3393)
14+
* [IMPROVEMENT] Route `androidNetworkInstrumentation` through `InternalLogger#logApiUsage`. See [#3516](https://github.com/DataDog/dd-sdk-android/pull/3516)
15+
* [IMPROVEMENT] Flags: rename flag names to flag keys. See [#3527](https://github.com/DataDog/dd-sdk-android/pull/3527)
16+
* [IMPROVEMENT] Write `CUSTOM` RUM actions immediately. See [#3525](https://github.com/DataDog/dd-sdk-android/pull/3525)
17+
* [IMPROVEMENT] Move broadcast-receiver dispatch off the main thread to reduce ANRs. See [#3524](https://github.com/DataDog/dd-sdk-android/pull/3524)
18+
* [IMPROVEMENT] Flags: thread `allocationKey` into `ResolutionDetails` flag metadata. See [#3534](https://github.com/DataDog/dd-sdk-android/pull/3534)
19+
* [IMPROVEMENT] Pass `InternalLogger` through the Session Replay mappers. See [#3518](https://github.com/DataDog/dd-sdk-android/pull/3518)
20+
* [IMPROVEMENT] Add `Context.getSystemServiceAs` extension. See [#3451](https://github.com/DataDog/dd-sdk-android/pull/3451)
21+
* [BUGFIX] Catch exception on the battery level query. See [#3453](https://github.com/DataDog/dd-sdk-android/pull/3453)
22+
* [BUGFIX] Catch `Throwable.loggableStackTrace()` throws. See [#3458](https://github.com/DataDog/dd-sdk-android/pull/3458)
23+
* [BUGFIX] Ignore dropped local active span in RUM-to-APM path. See [#3406](https://github.com/DataDog/dd-sdk-android/pull/3406)
24+
* [BUGFIX] Atomically write NDK crash logs and catch `NumberFormatException`. See [#3425](https://github.com/DataDog/dd-sdk-android/pull/3425)
25+
* [BUGFIX] Fix tap target mis-attribution for views clipped by scrolling ancestors. See [#3473](https://github.com/DataDog/dd-sdk-android/pull/3473)
26+
* [BUGFIX] Make file write atomic. See [#3476](https://github.com/DataDog/dd-sdk-android/pull/3476)
27+
* [BUGFIX] Catch `IllegalArgumentException` when reading trace input stream for last fatal ANR. See [#3483](https://github.com/DataDog/dd-sdk-android/pull/3483)
28+
* [BUGFIX] Fix `WorkDatabase` initialization crash in R8 full mode. See [#3502](https://github.com/DataDog/dd-sdk-android/pull/3502)
29+
* [BUGFIX] Catch errors in `convertToRumViewAttributes`. See [#3497](https://github.com/DataDog/dd-sdk-android/pull/3497)
30+
* [BUGFIX] Fix gradients not showing in Compose Session Replay. See [#3471](https://github.com/DataDog/dd-sdk-android/pull/3471)
31+
* [BUGFIX] Fix hidden API reflection noise in Session Replay drawable mappers. See [#3539](https://github.com/DataDog/dd-sdk-android/pull/3539)
32+
* [BUGFIX] Fix wrong API doc for text and input privacy configuration in Session Replay. See [#3520](https://github.com/DataDog/dd-sdk-android/pull/3520)
33+
* [MAINTENANCE] `NoOpImplementation` improvements: support for nested interfaces. See [#3468](https://github.com/DataDog/dd-sdk-android/pull/3468)
34+
* [MAINTENANCE] `NoOpImplementation` improvements: guard NoOp generation against restricted-visibility. See [#3469](https://github.com/DataDog/dd-sdk-android/pull/3469)
35+
* [MAINTENANCE] `NoOpImplementation` improvements: add name collision detection and `customName` support. See [#3470](https://github.com/DataDog/dd-sdk-android/pull/3470)
36+
* [MAINTENANCE] Sign automatically created commits. See [#3462](https://github.com/DataDog/dd-sdk-android/pull/3462)
37+
* [MAINTENANCE] Bump `ktlint` and `detekt` versions. See [#3444](https://github.com/DataDog/dd-sdk-android/pull/3444)
38+
* [MAINTENANCE] Resolve dependencies through Magic Mirror Depot in CI. See [#3452](https://github.com/DataDog/dd-sdk-android/pull/3452)
39+
* [MAINTENANCE] Benchmarking: enable RUM for Session Replay baseline run. See [#3467](https://github.com/DataDog/dd-sdk-android/pull/3467)
40+
* [MAINTENANCE] Add integration test for cross-product trace sampling rebasing. See [#3464](https://github.com/DataDog/dd-sdk-android/pull/3464)
41+
* [MAINTENANCE] Benchmark: fix app crash when running baseline for the Session Replay scenario. See [#3474](https://github.com/DataDog/dd-sdk-android/pull/3474)
42+
* [MAINTENANCE] Fix flaky `InternalApiUsageDetectorTest` due to Kotlin reserved keywords in package regex. See [#3522](https://github.com/DataDog/dd-sdk-android/pull/3522)
43+
* [MAINTENANCE] Fix Detekt stack overflow on wildcard projections. See [#3528](https://github.com/DataDog/dd-sdk-android/pull/3528)
44+
* [MAINTENANCE] Bump Datadog Gradle Plugin to `1.27.0`. See [#3533](https://github.com/DataDog/dd-sdk-android/pull/3533)
45+
* [MAINTENANCE] Move `FakeSameThreadExecutorService` into core test fixtures. See [#3536](https://github.com/DataDog/dd-sdk-android/pull/3536)
46+
47+
# 3.10.0 / 2026-05-13
48+
49+
* [FEATURE] Network headers common instrumentation. See [#3338](https://github.com/DataDog/dd-sdk-android/pull/3338)
50+
* [FEATURE] Use rebased `sessionReplaySampleRate` for deterministic Session Replay sampling. See [#3372](https://github.com/DataDog/dd-sdk-android/pull/3372)
51+
* [BUGFIX] Fix LeakCanary for profileable builds. See [#3378](https://github.com/DataDog/dd-sdk-android/pull/3378)
52+
* [BUGFIX] Fix evaluation intake endpoint path. See [#3414](https://github.com/DataDog/dd-sdk-android/pull/3414)
53+
* [BUGFIX] Fix NPE when `SeekBar` thumb is `null`. See [#3419](https://github.com/DataDog/dd-sdk-android/pull/3419)
54+
* [BUGFIX] Fix GraphQL errors extraction for streaming responses. See [#3410](https://github.com/DataDog/dd-sdk-android/pull/3410)
55+
* [IMPROVEMENT] Expose `trace` as `api` dependency in `OkHttp` module. See [#3366](https://github.com/DataDog/dd-sdk-android/pull/3366)
56+
* [IMPROVEMENT] Migrate `OkHttp` to new instrumentation API. See [#3180](https://github.com/DataDog/dd-sdk-android/pull/3180)
57+
* [IMPROVEMENT] Propagate native `anonymousId` to `Webview` events. See [#3306](https://github.com/DataDog/dd-sdk-android/pull/3306)
58+
* [IMPROVEMENT] Rename `DatadogTracingToolkit` to `_TraceInternalProxy`. See [#3350](https://github.com/DataDog/dd-sdk-android/pull/3350)
59+
* [IMPROVEMENT] Use `SecureRandom` for Trace/Span ID generation, remove usage of `SecureRandom.getStrongInstance`. See [#3379](https://github.com/DataDog/dd-sdk-android/pull/3379)
60+
* [IMPROVEMENT] Add `fed2` endpoint to `DatadogSite`. See [#3383](https://github.com/DataDog/dd-sdk-android/pull/3383)
61+
* [IMPROVEMENT] Drop word feature from operations APIs. See [#3390](https://github.com/DataDog/dd-sdk-android/pull/3390)
62+
* [IMPROVEMENT] Make sure `RumAppStartupDetector#destroy` is called on main thread. See [#3397](https://github.com/DataDog/dd-sdk-android/pull/3397)
63+
* [IMPROVEMENT] Support legacy `OkHttp` network telemetry. See [#3399](https://github.com/DataDog/dd-sdk-android/pull/3399)
64+
* [IMPROVEMENT] Add request to `HttpResponseInfo`. See [#3382](https://github.com/DataDog/dd-sdk-android/pull/3382)
65+
* [IMPROVEMENT] Add telemetry to `trackResourceHeaders` instrumentation. See [#3403](https://github.com/DataDog/dd-sdk-android/pull/3403)
66+
* [IMPROVEMENT] Log task names for the observable queue dump in case of context executor usage. See [#3412](https://github.com/DataDog/dd-sdk-android/pull/3412)
67+
* [IMPROVEMENT] Move broadcast-receiver dispatch off the main thread to fix ANRs. See [#3420](https://github.com/DataDog/dd-sdk-android/pull/3420)
68+
* [IMPROVEMENT] Add MAUI source. See [#3423](https://github.com/DataDog/dd-sdk-android/pull/3423)
69+
* [IMPROVEMENT] Replace GraphQL chain wrapper with request tag. See [#3424](https://github.com/DataDog/dd-sdk-android/pull/3424)
70+
* [IMPROVEMENT] Add integration test for `OkHttp` resource timing feature. See [#3428](https://github.com/DataDog/dd-sdk-android/pull/3428)
71+
* [MAINTENANCE] Update dependency `org.assertj:assertj-core` to `v3.27.7`. See [#3385](https://github.com/DataDog/dd-sdk-android/pull/3385)
72+
* [MAINTENANCE] Remove shadow reviewer workflow. See [#3384](https://github.com/DataDog/dd-sdk-android/pull/3384)
73+
* [MAINTENANCE] Cleanup in `core` and `internal` modules. See [#3417](https://github.com/DataDog/dd-sdk-android/pull/3417)
74+
* [MAINTENANCE] Add execution of NDK instrumented tests on CI. See [#3418](https://github.com/DataDog/dd-sdk-android/pull/3418)
75+
* [MAINTENANCE] Don't run Java API generation task on CI for non-release builds. See [#3421](https://github.com/DataDog/dd-sdk-android/pull/3421)
76+
* [MAINTENANCE] Sync Detekt configs with a `static-analysis` template version. See [#3439](https://github.com/DataDog/dd-sdk-android/pull/3439)
77+
* [MAINTENANCE] Compilation fix. See [#3375](https://github.com/DataDog/dd-sdk-android/pull/3375)
78+
179
# 3.9.1 / 2026-04-23
280

381
* [BUGFIX] Cache reflection lookups in `LayoutNodeUtils`. See [#3381](https://github.com/DataDog/dd-sdk-android/pull/3381)

CONTRIBUTING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,14 +194,14 @@ same feature from a Java source code.
194194
Our code uses [Detekt](https://detekt.dev/) static analysis with a shared configuration, slightly
195195
stricter than the default one. A Detekt check is ran on every on every PR to ensure that all new code
196196
follow this rule.
197-
Current Detekt version: 1.23.4
197+
Current Detekt version: 1.23.8
198198

199199
### Code style
200200

201201
Our coding style is ensured by [KtLint](https://ktlint.github.io/), with the
202202
default settings. A KtLint check is ran on every PR to ensure that all new code
203203
follow this rule.
204-
Current KtLint version: 0.50.0
204+
Current KtLint version: 1.5.0
205205

206206
Classes should group their methods in folding regions named after the declaring
207207
class. Private methods should be grouped in an `Internal` named folding region.

LICENSE-3rdparty.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ import(test),com.google.re2j,"Go License","Copyright (c) 2009 The Go Authors. Al
139139
import(test),com.jakewharton.android.repackaged,Apache-2.0,"Copyright (C) 2007 The Android Open Source Project"
140140
import(test),com.parse.bolts,"BSD License","Copyright (c) Facebook, Inc. and its affiliates."
141141
import(test),com.squareup,Apache-2.0,"Copyright 2015 Square, Inc."
142+
import(test),dev.drewhamilton.poko,Apache-2.0,Copyright 2020-Present Drew Hamilton
142143
import(test),greatest,ICT,"Copyright (c) 2011-2018 Scott Vokes <vokes.s@gmail.com>"
143144
import(test),io.github.davidburstrom.contester,Apache-2.0,"Copyright 2022-2024 David Burström"
144145
import(test),io.github.detekt.sarif4k,Apache-2.0,"Copyright 2021 Artur Bosch & Contributors"

build.gradle.kts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import com.android.build.gradle.LibraryExtension
99
import com.datadog.gradle.config.AndroidConfig
10+
import com.datadog.gradle.config.depotProxied
1011
import com.datadog.gradle.config.registerSubModuleAggregationTask
1112
import org.gradle.api.internal.file.UnionFileTree
1213
import org.gradle.api.internal.tasks.DefaultTaskDependencyFactory
@@ -37,6 +38,11 @@ version = AndroidConfig.VERSION.name
3738

3839
buildscript {
3940
repositories {
41+
// Magic Mirror Depot proxy (only set in CI via `.gitlab-ci.yml`).
42+
// Inlined here because `buildscript {}` runs before buildSrc classes are on the classpath.
43+
listOf("gradlePluginProxy", "mavenRepositoryProxy")
44+
.mapNotNull { providers.gradleProperty(it).orNull?.takeIf { url -> url.isNotBlank() } }
45+
.forEach { url -> maven { setUrl(url) } }
4046
google()
4147
mavenCentral()
4248
maven { setUrl(com.datadog.gradle.Dependencies.Repositories.Gradle) }
@@ -48,7 +54,7 @@ buildscript {
4854
}
4955

5056
allprojects {
51-
repositories {
57+
repositories.depotProxied(providers) {
5258
google()
5359
mavenCentral()
5460
maven { setUrl(com.datadog.gradle.Dependencies.Repositories.Jitpack) }

buildSrc/build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,19 @@ plugins {
1414

1515
buildscript {
1616
repositories {
17+
// Magic Mirror Depot proxy (only set in CI via `.gitlab-ci.yml`).
18+
listOf("gradlePluginProxy", "mavenRepositoryProxy")
19+
.mapNotNull { providers.gradleProperty(it).orNull?.takeIf { url -> url.isNotBlank() } }
20+
.forEach { url -> maven { setUrl(url) } }
1721
mavenCentral()
1822
}
1923
}
2024

2125
repositories {
26+
// Magic Mirror Depot proxy (only set in CI via `.gitlab-ci.yml`).
27+
listOf("gradlePluginProxy", "mavenRepositoryProxy")
28+
.mapNotNull { providers.gradleProperty(it).orNull?.takeIf { url -> url.isNotBlank() } }
29+
.forEach { url -> maven { setUrl(url) } }
2230
mavenCentral()
2331
google()
2432
maven { setUrl("https://plugins.gradle.org/m2/") }

buildSrc/settings.gradle.kts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@
44
* Copyright 2016-Present Datadog, Inc.
55
*/
66

7+
pluginManagement {
8+
repositories {
9+
// Magic Mirror Depot proxy (only set in CI via `.gitlab-ci.yml`).
10+
listOf("gradlePluginProxy", "mavenRepositoryProxy")
11+
.mapNotNull { providers.gradleProperty(it).orNull?.takeIf { url -> url.isNotBlank() } }
12+
.forEach { url -> maven(url) }
13+
gradlePluginPortal()
14+
google()
15+
mavenCentral()
16+
}
17+
}
18+
719
dependencyResolutionManagement {
820
versionCatalogs {
921
create("libs") {

buildSrc/src/main/kotlin/com/datadog/gradle/KotlinDSLUtils.kt

Lines changed: 0 additions & 51 deletions
This file was deleted.

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

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

22-
val VERSION = Version(3, 10, 0, Version.Type.Snapshot)
22+
val VERSION = Version(3, 12, 0, Version.Type.Snapshot)
2323
}
2424

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

0 commit comments

Comments
 (0)