Skip to content

Commit cd2bfda

Browse files
committed
[PANA-8468] Namespace layer wireframe identifiers
1 parent 83c55fe commit cd2bfda

8 files changed

Lines changed: 252 additions & 72 deletions

File tree

Datadog/Datadog.xcodeproj/project.pbxproj

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@
353353
5B4F552D2E853B3B00A241C3 /* ExposureLoggerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B4F552B2E853B2E00A241C3 /* ExposureLoggerTests.swift */; };
354354
5B4F552F2E853D7700A241C3 /* FlagsClientMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B4F552E2E853D7200A241C3 /* FlagsClientMocks.swift */; };
355355
5B4F55312E85400000A241C3 /* ExposureTrackerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B4F55302E85400000A241C3 /* ExposureTrackerTests.swift */; };
356+
5B5522483020ECAF008AC88A /* SRWireframe+ReplayID.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5522473020ECA6008AC88A /* SRWireframe+ReplayID.swift */; };
356357
5B5B8CB62E8BCA6A00A6740E /* FlagsRepositoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5B8CB52E8BCA5F00A6740E /* FlagsRepositoryTests.swift */; };
357358
5B5B8CB92E8BD44700A6740E /* FlagsDataStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5B8CB82E8BD44000A6740E /* FlagsDataStore.swift */; };
358359
5B5B8CBF2E8BDB1000A6740E /* FlagsData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5B8CBE2E8BDB0D00A6740E /* FlagsData.swift */; };
@@ -641,6 +642,8 @@
641642
615D52C12C88AB1E00F8B8FC /* SynchronizedAttributesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 615D52C02C88AB1E00F8B8FC /* SynchronizedAttributesTests.swift */; };
642643
615E2B8E2D39444300D85243 /* ViewEndedController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 615E2B8D2D39444300D85243 /* ViewEndedController.swift */; };
643644
615E2B952D425F5600D85243 /* ViewEndedMetric.swift in Sources */ = {isa = PBXBuildFile; fileRef = 615E2B942D425F5600D85243 /* ViewEndedMetric.swift */; };
645+
6165D7353013888F0069D0E4 /* TelemetrySanitizableError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6165D7343013888F0069D0E4 /* TelemetrySanitizableError.swift */; };
646+
6165D7373017AA010069D0E4 /* TelemetrySanitizableErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6165D7363017AA010069D0E4 /* TelemetrySanitizableErrorTests.swift */; };
644647
6167E6D32B7F8B3300C3CA2D /* AppHangsMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6167E6D22B7F8B3300C3CA2D /* AppHangsMonitor.swift */; };
645648
6167E6D62B7F8C3400C3CA2D /* AppHangsWatchdogThread.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6167E6D52B7F8C3400C3CA2D /* AppHangsWatchdogThread.swift */; };
646649
6167E6DA2B8004A500C3CA2D /* AppHangsWatchdogThreadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6167E6D92B8004A500C3CA2D /* AppHangsWatchdogThreadTests.swift */; };
@@ -1014,8 +1017,6 @@
10141017
D23039F8298D5236001A1FA3 /* InternalLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = D23039CE298D5235001A1FA3 /* InternalLogger.swift */; };
10151018
D23039F9298D5236001A1FA3 /* CoreLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = D23039CF298D5235001A1FA3 /* CoreLogger.swift */; };
10161019
D23039FA298D5236001A1FA3 /* Telemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = D23039D0298D5235001A1FA3 /* Telemetry.swift */; };
1017-
6165D7353013888F0069D0E4 /* TelemetrySanitizableError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6165D7343013888F0069D0E4 /* TelemetrySanitizableError.swift */; };
1018-
6165D7373017AA010069D0E4 /* TelemetrySanitizableErrorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6165D7363017AA010069D0E4 /* TelemetrySanitizableErrorTests.swift */; };
10191020
D23039FB298D5236001A1FA3 /* URLRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D23039D2298D5235001A1FA3 /* URLRequestBuilder.swift */; };
10201021
D23039FC298D5236001A1FA3 /* DataFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = D23039D3298D5235001A1FA3 /* DataFormat.swift */; };
10211022
D23039FD298D5236001A1FA3 /* DataCompression.swift in Sources */ = {isa = PBXBuildFile; fileRef = D23039D4298D5235001A1FA3 /* DataCompression.swift */; };
@@ -2182,6 +2183,7 @@
21822183
5B4F552B2E853B2E00A241C3 /* ExposureLoggerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExposureLoggerTests.swift; sourceTree = "<group>"; };
21832184
5B4F552E2E853D7200A241C3 /* FlagsClientMocks.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagsClientMocks.swift; sourceTree = "<group>"; };
21842185
5B4F55302E85400000A241C3 /* ExposureTrackerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExposureTrackerTests.swift; sourceTree = "<group>"; };
2186+
5B5522473020ECA6008AC88A /* SRWireframe+ReplayID.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SRWireframe+ReplayID.swift"; sourceTree = "<group>"; };
21852187
5B5B8CB52E8BCA5F00A6740E /* FlagsRepositoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagsRepositoryTests.swift; sourceTree = "<group>"; };
21862188
5B5B8CB82E8BD44000A6740E /* FlagsDataStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagsDataStore.swift; sourceTree = "<group>"; };
21872189
5B5B8CBE2E8BDB0D00A6740E /* FlagsData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlagsData.swift; sourceTree = "<group>"; };
@@ -2513,6 +2515,8 @@
25132515
615E2B942D425F5600D85243 /* ViewEndedMetric.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewEndedMetric.swift; sourceTree = "<group>"; };
25142516
615F197B25B5A64B00BE14B5 /* UIKitExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIKitExtensions.swift; sourceTree = "<group>"; };
25152517
6161247825CA9CA6009901BE /* CrashReporting.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrashReporting.swift; sourceTree = "<group>"; };
2518+
6165D7343013888F0069D0E4 /* TelemetrySanitizableError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TelemetrySanitizableError.swift; sourceTree = "<group>"; };
2519+
6165D7363017AA010069D0E4 /* TelemetrySanitizableErrorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TelemetrySanitizableErrorTests.swift; sourceTree = "<group>"; };
25162520
6167ACBD251A0B410012B4D0 /* Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Example-Bridging-Header.h"; sourceTree = "<group>"; };
25172521
6167E6D22B7F8B3300C3CA2D /* AppHangsMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppHangsMonitor.swift; sourceTree = "<group>"; };
25182522
6167E6D52B7F8C3400C3CA2D /* AppHangsWatchdogThread.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppHangsWatchdogThread.swift; sourceTree = "<group>"; };
@@ -2977,8 +2981,6 @@
29772981
D23039CE298D5235001A1FA3 /* InternalLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InternalLogger.swift; sourceTree = "<group>"; };
29782982
D23039CF298D5235001A1FA3 /* CoreLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreLogger.swift; sourceTree = "<group>"; };
29792983
D23039D0298D5235001A1FA3 /* Telemetry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Telemetry.swift; sourceTree = "<group>"; };
2980-
6165D7343013888F0069D0E4 /* TelemetrySanitizableError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TelemetrySanitizableError.swift; sourceTree = "<group>"; };
2981-
6165D7363017AA010069D0E4 /* TelemetrySanitizableErrorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TelemetrySanitizableErrorTests.swift; sourceTree = "<group>"; };
29822984
D23039D2298D5235001A1FA3 /* URLRequestBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLRequestBuilder.swift; sourceTree = "<group>"; };
29832985
D23039D3298D5235001A1FA3 /* DataFormat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataFormat.swift; sourceTree = "<group>"; };
29842986
D23039D4298D5235001A1FA3 /* DataCompression.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataCompression.swift; sourceTree = "<group>"; };
@@ -6227,6 +6229,7 @@
62276229
7C61BC8C730F46F1A8EF112E /* OcclusionMap.swift */,
62286230
5BB771B52FEA7A0E00C95960 /* ImageSnapshotResource.swift */,
62296231
5BB771B72FEA7A2800C95960 /* SRWireframe+CALayerSnapshot.swift */,
6232+
5B5522473020ECA6008AC88A /* SRWireframe+ReplayID.swift */,
62306233
);
62316234
path = LayerTreeRecorder;
62326235
sourceTree = "<group>";
@@ -8643,6 +8646,7 @@
86438646
5BD25CFB301A3BF40064A649 /* EmbeddedContentReceiver.swift in Sources */,
86448647
5B74482F2EFAB819003E622C /* CALayerSwizzler.swift in Sources */,
86458648
5B7448302EFAB819003E622C /* CALayerChange.swift in Sources */,
8649+
5B5522483020ECAF008AC88A /* SRWireframe+ReplayID.swift in Sources */,
86468650
B73450522F9F240000000001 /* CALayerReference.swift in Sources */,
86478651
5B23A8AB2FF7A8A800024C6F /* MaskSnapshot.swift in Sources */,
86488652
5B7448312EFAB819003E622C /* CALayerChangeAggregator.swift in Sources */,

DatadogSessionReplay/Sources/LayerTreeRecorder/CompositionTreeBuilder.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ internal class CompositionTreeBuilder {
171171
}
172172

173173
wireframes.append(output.wireframe)
174-
return SRCompositionLayerChild(id: output.id, type: .wireframe)
174+
return SRCompositionLayerChild(id: output.wireframe.id, type: .wireframe)
175175
}
176176
}
177177

DatadogSessionReplay/Sources/LayerTreeRecorder/LayerWireframeBuilder.swift

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ internal struct LayerWireframeBuilder {
1414
typealias TextInputSemantics = CALayerSnapshot.SemanticObservation.TextInputSemantics
1515

1616
struct Output {
17-
let id: Int64
1817
let wireframe: SRWireframe
1918
let resource: Resource?
2019
}
@@ -43,7 +42,6 @@ internal struct LayerWireframeBuilder {
4342
) -> Output? {
4443
guard !snapshot.isPrivate else {
4544
return Output(
46-
id: snapshot.replayID,
4745
wireframe: SRWireframe(placeholderFor: snapshot, label: .hiddenPlaceholder),
4846
resource: nil
4947
)
@@ -63,43 +61,41 @@ internal struct LayerWireframeBuilder {
6361
)
6462
case (.layer, .none):
6563
return SRWireframe(layerSnapshot: snapshot, cornerRadius: cornerRadius)
66-
.map { Output(id: snapshot.replayID, wireframe: $0, resource: nil) }
64+
.map { Output(wireframe: $0, resource: nil) }
6765
case (.gradient(let gradient), _):
6866
return SRWireframe(
6967
layerSnapshot: snapshot,
7068
backgroundGradient: SRShapeGradient(gradient: gradient),
7169
cornerRadius: cornerRadius
72-
).map { Output(id: snapshot.replayID, wireframe: $0, resource: nil) }
70+
).map { Output(wireframe: $0, resource: nil) }
7371
case (.label(let label), _):
7472
return SRWireframe(
7573
layerSnapshot: snapshot,
7674
label: label,
7775
cornerRadius: cornerRadius
78-
).map { Output(id: snapshot.replayID, wireframe: $0, resource: nil) }
76+
).map { Output(wireframe: $0, resource: nil) }
7977
case (.textInput, .none):
8078
return SRWireframe(layerSnapshot: snapshot, cornerRadius: cornerRadius)
81-
.map { Output(id: snapshot.replayID, wireframe: $0, resource: nil) }
79+
.map { Output(wireframe: $0, resource: nil) }
8280
case (.image(let image), .none) where image.hasContent:
8381
let wireframe = SRWireframe(
8482
placeholderFor: snapshot,
8583
label: snapshot.imagePrivacyLevel == .maskNonBundledOnly
8684
? .contentImagePlaceholder
8785
: .imagePlaceholder
8886
)
89-
return Output(id: snapshot.replayID, wireframe: wireframe, resource: nil)
87+
return Output(wireframe: wireframe, resource: nil)
9088
case (.image, .none):
9189
return SRWireframe(layerSnapshot: snapshot, cornerRadius: cornerRadius)
92-
.map { Output(id: snapshot.replayID, wireframe: $0, resource: nil) }
90+
.map { Output(wireframe: $0, resource: nil) }
9391
case (.webView(let webView), _):
9492
pendingWebViewSlotIDs.remove(webView.slotID)
9593
return Output(
96-
id: Int64(webView.slotID),
9794
wireframe: SRWireframe(layerSnapshot: snapshot, webView: webView),
9895
resource: nil
9996
)
10097
case (.visualEffect(.automaticCapsule), _):
10198
return Output(
102-
id: snapshot.replayID,
10399
wireframe: SRWireframe(
104100
layerSnapshot: snapshot,
105101
backgroundColor: .systemBackground,
@@ -109,19 +105,16 @@ internal struct LayerWireframeBuilder {
109105
)
110106
case (.visualEffect(.glassGroup), _) where snapshot.cornerRadii != .zero:
111107
return Output(
112-
id: snapshot.replayID,
113108
wireframe: SRWireframe(layerSnapshot: snapshot, backgroundColor: .systemBackground),
114109
resource: nil
115110
)
116111
case (.visualEffect(.backdrop), _):
117112
return Output(
118-
id: snapshot.replayID,
119113
wireframe: SRWireframe(layerSnapshot: snapshot, backgroundColor: .systemBackground),
120114
resource: nil
121115
)
122116
case (.visualEffect(.background(let color)), _):
123117
return Output(
124-
id: snapshot.replayID,
125118
wireframe: SRWireframe(
126119
layerSnapshot: snapshot,
127120
backgroundColor: color ?? .secondarySystemFill
@@ -133,7 +126,7 @@ internal struct LayerWireframeBuilder {
133126
return nil
134127
}
135128
return SRWireframe(layerSnapshot: snapshot, backgroundGradient: gradient)
136-
.map { Output(id: snapshot.replayID, wireframe: $0, resource: nil) }
129+
.map { Output(wireframe: $0, resource: nil) }
137130
default:
138131
return nil
139132
}
@@ -158,17 +151,15 @@ internal struct LayerWireframeBuilder {
158151
case .image(let image):
159152
let resource = ImageSnapshotResource(image: image)
160153
return Output(
161-
id: layerSnapshot.replayID,
162154
wireframe: SRWireframe(
163-
id: layerSnapshot.replayID,
155+
replayID: layerSnapshot.replayID,
164156
imageSnapshot: imageSnapshot,
165157
resource: resource
166158
),
167159
resource: resource
168160
)
169161
case .placeholder(let color):
170162
return Output(
171-
id: layerSnapshot.replayID,
172163
wireframe: SRWireframe(
173164
layerSnapshot: layerSnapshot,
174165
backgroundColor: color,
@@ -179,7 +170,6 @@ internal struct LayerWireframeBuilder {
179170
}
180171
} catch {
181172
return Output(
182-
id: layerSnapshot.replayID,
183173
wireframe: SRWireframe(
184174
placeholderFor: layerSnapshot,
185175
label: .redactedPlaceholder
@@ -189,7 +179,6 @@ internal struct LayerWireframeBuilder {
189179
}
190180
case .failure(.timedOut):
191181
return Output(
192-
id: layerSnapshot.replayID,
193182
wireframe: SRWireframe(
194183
placeholderFor: layerSnapshot,
195184
label: .timedOutPlaceholder

0 commit comments

Comments
 (0)