Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Add swizzling for NSFileManager.createFileAtPath #4634

Merged
merged 44 commits into from
Jan 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
f1f5a44
fix(tests): add swizzling for NSFileManager
philprime Dec 6, 2024
b196c30
Update CHANGELOG.MD
philprime Dec 6, 2024
c0bb33d
Add iOS 18 and macOS 15 to GH workflow tests
philprime Dec 6, 2024
bc22ac9
Revert removal of import statement
philprime Dec 6, 2024
effcf8e
fix: add OS availability check to file manager swizzling
philprime Dec 6, 2024
7bf668c
add tvOS 18 and mac catalyst to test workflows
philprime Dec 6, 2024
74dd90c
rename SentryNSDataTracker to SentryFileIOTracker; add SentryDataWrapper
philprime Dec 12, 2024
750052a
Merge remote-tracking branch 'origin/main' into philprime/file-io-tra…
philprime Dec 13, 2024
f44e030
revert changes after splitting PR
philprime Dec 13, 2024
c3213ad
change PR number in changelog
philprime Dec 13, 2024
9c4aa63
fix position of chaneglog
philprime Dec 13, 2024
1ac59ad
feat: add experimental flag to enable filemanager swizzling
philprime Dec 13, 2024
ec9bdf7
Merge remote-tracking branch 'origin/main' into philprime/nsfilemanag…
philprime Dec 13, 2024
68002d0
Merge remote-tracking branch 'origin/main' into philprime/nsfilemanag…
philprime Dec 16, 2024
dc0677a
changed appdelegate configure file length
philprime Dec 16, 2024
9055b19
add more context to changelog
philprime Dec 17, 2024
b23f274
add span validation to testCreateFile
philprime Dec 17, 2024
7d0ccd3
add ref to Swift-Foundation PR
philprime Dec 17, 2024
4ab353c
add availability check for tvOS 18
philprime Dec 17, 2024
458e903
add unit test for NSFileManager swizzling
philprime Dec 17, 2024
59c24db
refactor filemanager swizzling tests
philprime Dec 17, 2024
e62f983
Merge remote-tracking branch 'origin/main' into philprime/nsfilemanag…
philprime Dec 17, 2024
a11ba03
refactor swizzling to share tracker instance
philprime Dec 18, 2024
18f6760
Merge remote-tracking branch 'origin/main' into philprime/nsfilemanag…
philprime Dec 18, 2024
587d123
Merge remote-tracking branch 'origin/main' into philprime/nsfilemanag…
philprime Dec 18, 2024
872f7bc
add unswizzling
philprime Dec 19, 2024
77b42e0
feat: add method unswizzling
philprime Dec 19, 2024
60cb40f
add changelog
philprime Dec 19, 2024
bdc6d95
change unswizzling to be available in test environment only
philprime Dec 20, 2024
4b2a0d5
Merge remote-tracking branch 'origin/main' into philprime/unswizzling
philprime Dec 20, 2024
abf726b
Merge branch 'philprime/unswizzling' into philprime/nsfilemanager-swi…
philprime Dec 20, 2024
6ed2cfb
add conditional compilation for unswizzling
philprime Dec 20, 2024
ff9183b
Merge remote-tracking branch 'origin/main' into philprime/unswizzling
philprime Jan 7, 2025
8cff52e
remove merge conflict in changelog
philprime Jan 7, 2025
649105e
add more documentation, null handling and test cases
philprime Jan 7, 2025
55231ef
replace NSLog with SentryLog
philprime Jan 7, 2025
451caae
add workflow dispatch for testflight upload
philprime Jan 7, 2025
4bc7b32
remove workflow dispatch
philprime Jan 7, 2025
4dc0029
fix issues and merge conflicts
philprime Jan 8, 2025
afb35fb
Merge remote-tracking branch 'origin/main' into philprime/unswizzling
philprime Jan 8, 2025
ba4f676
Merge branch 'philprime/unswizzling' into philprime/nsfilemanager-swi…
philprime Jan 8, 2025
717ae41
fix changelog
philprime Jan 8, 2025
9a118ae
Merge remote-tracking branch 'origin/main' into philprime/nsfilemanag…
philprime Jan 8, 2025
5827fd2
add more comments
philprime Jan 8, 2025
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
1 change: 1 addition & 0 deletions .github/file-filters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ high_risk_code: &high_risk_code
- 'Sources/Sentry/SentryNetworkTracker.m'
- 'Sources/Sentry/SentryUIViewControllerSwizzling.m'
- 'Sources/Sentry/SentryNSDataSwizzling.m'
- 'Sources/Sentry/SentryNSFileManagerSwizzling.m'
philprime marked this conversation as resolved.
Show resolved Hide resolved
- 'Sources/Sentry/SentrySubClassFinder.m'
- 'Sources/Sentry/SentryCoreDataSwizzling.m'
- 'Sources/Sentry/SentrySwizzleWrapper.m'
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
### Fixes

- Replace occurences of `strncpy` with `strlcpy` (#4636)
- Fix span recording for `NSFileManager.createFileAtPath` starting with iOS 18, macOS 15 and tvOS 18. This feature is experimental and must be enabled by setting the option `experimental.enableFileManagerSwizzling` to `true` (#4634)


### Internal

Expand Down
3 changes: 3 additions & 0 deletions Samples/iOS-ObjectiveC/iOS-ObjectiveC/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ - (BOOL)application:(UIApplication *)application
options.sessionReplay.sessionSampleRate = 0;
options.sessionReplay.onErrorSampleRate = 1;

options.experimental.enableFileManagerSwizzling
= ![args containsObject:@"--disable-filemanager-swizzling"];

options.initialScope = ^(SentryScope *scope) {
[scope setTagValue:@"" forKey:@""];
[scope injectGitInformation];
Expand Down
1 change: 1 addition & 0 deletions Samples/iOS15-SwiftUI/iOS15-SwiftUI/App.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ struct SwiftUIApp: App {
options.debug = true
options.tracesSampleRate = 1.0
options.profilesSampleRate = 1.0
options.experimental.enableFileManagerSwizzling = true
}
}

Expand Down
2 changes: 2 additions & 0 deletions Samples/macOS-Swift/macOS-Swift/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {

return scope
}

options.experimental.enableFileManagerSwizzling = !args.contains("--disable-filemanager-swizzling")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class MyAppDelegate: NSObject, NSApplicationDelegate, ObservableObject {
options.tracesSampleRate = 1.0
options.profilesSampleRate = 1.0
options.enableUncaughtNSExceptionReporting = true
options.experimental.enableFileManagerSwizzling = true
}
}

Expand Down
2 changes: 2 additions & 0 deletions Samples/tvOS-Swift/tvOS-SBSwift/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
options.sessionTrackingIntervalMillis = 5_000
// Sampling 100% - In Production you probably want to adjust this
options.tracesSampleRate = 1.0

options.experimental.enableFileManagerSwizzling = true
}

return true
Expand Down
1 change: 1 addition & 0 deletions Samples/tvOS-Swift/tvOS-Swift/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
// Sampling 100% - In Production you probably want to adjust this
options.tracesSampleRate = 1.0
options.enableAppHangTracking = true
options.experimental.enableFileManagerSwizzling = true

options.initialScope = { scope in
if let path = Bundle.main.path(forResource: "Tongariro", ofType: "jpg") {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ struct VisionOSSwiftApp: App {
options.profilesSampleRate = 1.0
options.attachScreenshot = true
options.attachViewHierarchy = true
options.experimental.enableFileManagerSwizzling = true
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class ExtensionDelegate: NSObject, WKExtensionDelegate {
SentrySDK.start { options in
options.dsn = "https://[email protected]/5428557"
options.debug = true
options.experimental.enableFileManagerSwizzling = true
}

SentrySDK.configureScope { scope in
Expand Down
38 changes: 25 additions & 13 deletions Sentry.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -788,6 +788,9 @@
A8AFFCD42907E0CA00967CD7 /* SentryRequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8AFFCD32907E0CA00967CD7 /* SentryRequestTests.swift */; };
A8F17B2E2901765900990B25 /* SentryRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = A8F17B2D2901765900990B25 /* SentryRequest.m */; };
A8F17B342902870300990B25 /* SentryHttpStatusCodeRange.m in Sources */ = {isa = PBXBuildFile; fileRef = A8F17B332902870300990B25 /* SentryHttpStatusCodeRange.m */; };
D4AF00212D2E92FD00F5F3D7 /* SentryNSFileManagerSwizzling.m in Sources */ = {isa = PBXBuildFile; fileRef = D4AF00202D2E92FD00F5F3D7 /* SentryNSFileManagerSwizzling.m */; };
D4AF00232D2E931000F5F3D7 /* SentryNSFileManagerSwizzling.h in Headers */ = {isa = PBXBuildFile; fileRef = D4AF00222D2E931000F5F3D7 /* SentryNSFileManagerSwizzling.h */; };
D4AF00252D2E93C400F5F3D7 /* SentryNSFileManagerSwizzlingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D4AF00242D2E93C400F5F3D7 /* SentryNSFileManagerSwizzlingTests.m */; };
D4F2B5352D0C69D500649E42 /* SentryCrashCTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4F2B5342D0C69D100649E42 /* SentryCrashCTests.swift */; };
D8019910286B089000C277F0 /* SentryCrashReportSinkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D801990F286B089000C277F0 /* SentryCrashReportSinkTests.swift */; };
D802994E2BA836EF000F0081 /* SentryOnDemandReplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = D802994D2BA836EF000F0081 /* SentryOnDemandReplay.swift */; };
Expand Down Expand Up @@ -870,7 +873,7 @@
D8739D172BEEA33F007D2F66 /* SentryLevelHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = D8739D152BEEA33F007D2F66 /* SentryLevelHelper.h */; };
D8739D182BEEA33F007D2F66 /* SentryLevelHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = D8739D162BEEA33F007D2F66 /* SentryLevelHelper.m */; };
D8751FA5274743710032F4DE /* SentryNSURLSessionTaskSearchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8751FA4274743710032F4DE /* SentryNSURLSessionTaskSearchTests.swift */; };
D875ED0B276CC84700422FAC /* SentryNSDataTrackerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D875ED0A276CC84700422FAC /* SentryNSDataTrackerTests.swift */; };
D875ED0B276CC84700422FAC /* SentryFileIOTrackerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D875ED0A276CC84700422FAC /* SentryFileIOTrackerTests.swift */; };
D87C89032BC43C9C0086C7DF /* SentryRedactOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D87C89022BC43C9C0086C7DF /* SentryRedactOptions.swift */; };
D87C892B2BC67BC20086C7DF /* SentryExperimentalOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D87C892A2BC67BC20086C7DF /* SentryExperimentalOptions.swift */; };
D880E3A728573E87008A90DB /* SentryBaggageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D880E3A628573E87008A90DB /* SentryBaggageTests.swift */; };
Expand All @@ -886,10 +889,10 @@
D8A65B5D2C98656800974B74 /* SentryReplayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8A65B5C2C98656000974B74 /* SentryReplayView.swift */; };
D8AB40DB2806EC1900E5E9F7 /* SentryScreenshotIntegration.h in Headers */ = {isa = PBXBuildFile; fileRef = D8AB40DA2806EC1900E5E9F7 /* SentryScreenshotIntegration.h */; };
D8ACE3C72762187200F5A213 /* SentryNSDataSwizzling.m in Sources */ = {isa = PBXBuildFile; fileRef = D8ACE3C42762187200F5A213 /* SentryNSDataSwizzling.m */; };
D8ACE3C82762187200F5A213 /* SentryNSDataTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = D8ACE3C52762187200F5A213 /* SentryNSDataTracker.m */; };
D8ACE3C82762187200F5A213 /* SentryFileIOTracker.m in Sources */ = {isa = PBXBuildFile; fileRef = D8ACE3C52762187200F5A213 /* SentryFileIOTracker.m */; };
D8ACE3C92762187200F5A213 /* SentryFileIOTrackingIntegration.m in Sources */ = {isa = PBXBuildFile; fileRef = D8ACE3C62762187200F5A213 /* SentryFileIOTrackingIntegration.m */; };
D8ACE3CD2762187D00F5A213 /* SentryNSDataSwizzling.h in Headers */ = {isa = PBXBuildFile; fileRef = D8ACE3CA2762187D00F5A213 /* SentryNSDataSwizzling.h */; };
D8ACE3CE2762187D00F5A213 /* SentryNSDataTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = D8ACE3CB2762187D00F5A213 /* SentryNSDataTracker.h */; };
D8ACE3CE2762187D00F5A213 /* SentryFileIOTracker.h in Headers */ = {isa = PBXBuildFile; fileRef = D8ACE3CB2762187D00F5A213 /* SentryFileIOTracker.h */; };
D8ACE3CF2762187D00F5A213 /* SentryFileIOTrackingIntegration.h in Headers */ = {isa = PBXBuildFile; fileRef = D8ACE3CC2762187D00F5A213 /* SentryFileIOTrackingIntegration.h */; };
D8AE48AE2C577EAB0092A2A6 /* SentryLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8AE48AD2C577EAB0092A2A6 /* SentryLog.swift */; };
D8AE48B02C5782EC0092A2A6 /* SentryLogOutput.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8AE48AF2C5782EC0092A2A6 /* SentryLogOutput.swift */; };
Expand Down Expand Up @@ -1871,6 +1874,9 @@
A8AFFCD32907E0CA00967CD7 /* SentryRequestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryRequestTests.swift; sourceTree = "<group>"; };
A8F17B2D2901765900990B25 /* SentryRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryRequest.m; sourceTree = "<group>"; };
A8F17B332902870300990B25 /* SentryHttpStatusCodeRange.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryHttpStatusCodeRange.m; sourceTree = "<group>"; };
D4AF00202D2E92FD00F5F3D7 /* SentryNSFileManagerSwizzling.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryNSFileManagerSwizzling.m; sourceTree = "<group>"; };
D4AF00222D2E931000F5F3D7 /* SentryNSFileManagerSwizzling.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryNSFileManagerSwizzling.h; path = include/SentryNSFileManagerSwizzling.h; sourceTree = "<group>"; };
D4AF00242D2E93C400F5F3D7 /* SentryNSFileManagerSwizzlingTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryNSFileManagerSwizzlingTests.m; sourceTree = "<group>"; };
D4F2B5342D0C69D100649E42 /* SentryCrashCTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryCrashCTests.swift; sourceTree = "<group>"; };
D800942628F82F3A005D3943 /* SwiftDescriptor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftDescriptor.swift; sourceTree = "<group>"; };
D801990F286B089000C277F0 /* SentryCrashReportSinkTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryCrashReportSinkTests.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1959,7 +1965,7 @@
D8739D162BEEA33F007D2F66 /* SentryLevelHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryLevelHelper.m; sourceTree = "<group>"; };
D8751FA4274743710032F4DE /* SentryNSURLSessionTaskSearchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryNSURLSessionTaskSearchTests.swift; sourceTree = "<group>"; };
D8757D142A209F7300BFEFCC /* SentrySampleDecision+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SentrySampleDecision+Private.h"; path = "include/SentrySampleDecision+Private.h"; sourceTree = "<group>"; };
D875ED0A276CC84700422FAC /* SentryNSDataTrackerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SentryNSDataTrackerTests.swift; sourceTree = "<group>"; };
D875ED0A276CC84700422FAC /* SentryFileIOTrackerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SentryFileIOTrackerTests.swift; sourceTree = "<group>"; };
D878C6C02BC8048A0039D6A3 /* SentryPrivate.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = SentryPrivate.podspec; sourceTree = "<group>"; };
D87C89022BC43C9C0086C7DF /* SentryRedactOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryRedactOptions.swift; sourceTree = "<group>"; };
D87C892A2BC67BC20086C7DF /* SentryExperimentalOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryExperimentalOptions.swift; sourceTree = "<group>"; };
Expand All @@ -1977,10 +1983,10 @@
D8A65B5C2C98656000974B74 /* SentryReplayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryReplayView.swift; sourceTree = "<group>"; };
D8AB40DA2806EC1900E5E9F7 /* SentryScreenshotIntegration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryScreenshotIntegration.h; path = include/SentryScreenshotIntegration.h; sourceTree = "<group>"; };
D8ACE3C42762187200F5A213 /* SentryNSDataSwizzling.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SentryNSDataSwizzling.m; sourceTree = "<group>"; };
D8ACE3C52762187200F5A213 /* SentryNSDataTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SentryNSDataTracker.m; sourceTree = "<group>"; };
D8ACE3C52762187200F5A213 /* SentryFileIOTracker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SentryFileIOTracker.m; sourceTree = "<group>"; };
D8ACE3C62762187200F5A213 /* SentryFileIOTrackingIntegration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SentryFileIOTrackingIntegration.m; sourceTree = "<group>"; };
D8ACE3CA2762187D00F5A213 /* SentryNSDataSwizzling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryNSDataSwizzling.h; path = include/SentryNSDataSwizzling.h; sourceTree = "<group>"; };
D8ACE3CB2762187D00F5A213 /* SentryNSDataTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryNSDataTracker.h; path = include/SentryNSDataTracker.h; sourceTree = "<group>"; };
D8ACE3CB2762187D00F5A213 /* SentryFileIOTracker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryFileIOTracker.h; path = include/SentryFileIOTracker.h; sourceTree = "<group>"; };
D8ACE3CC2762187D00F5A213 /* SentryFileIOTrackingIntegration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SentryFileIOTrackingIntegration.h; path = include/SentryFileIOTrackingIntegration.h; sourceTree = "<group>"; };
D8AE48AD2C577EAB0092A2A6 /* SentryLog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryLog.swift; sourceTree = "<group>"; };
D8AE48AF2C5782EC0092A2A6 /* SentryLogOutput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryLogOutput.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -3840,10 +3846,11 @@
D875ED09276CC83200422FAC /* IO */ = {
isa = PBXGroup;
children = (
D875ED0A276CC84700422FAC /* SentryNSDataTrackerTests.swift */,
D885266327739D01001269FC /* SentryFileIOTrackingIntegrationTests.swift */,
D875ED0A276CC84700422FAC /* SentryFileIOTrackerTests.swift */,
D8CE69BB277E39C700C6EC5C /* SentryFileIOTrackingIntegrationObjCTests.m */,
D885266327739D01001269FC /* SentryFileIOTrackingIntegrationTests.swift */,
7B82722A27A3220A00F4BFF4 /* SentryFileIoTrackingUnitTests.swift */,
D4AF00242D2E93C400F5F3D7 /* SentryNSFileManagerSwizzlingTests.m */,
);
path = IO;
sourceTree = "<group>";
Expand Down Expand Up @@ -3924,12 +3931,14 @@
D8ACE3C32762185E00F5A213 /* IO */ = {
isa = PBXGroup;
children = (
D8ACE3CB2762187D00F5A213 /* SentryFileIOTracker.h */,
D8ACE3C52762187200F5A213 /* SentryFileIOTracker.m */,
D8ACE3CC2762187D00F5A213 /* SentryFileIOTrackingIntegration.h */,
D8ACE3C62762187200F5A213 /* SentryFileIOTrackingIntegration.m */,
D8ACE3CA2762187D00F5A213 /* SentryNSDataSwizzling.h */,
D8ACE3C42762187200F5A213 /* SentryNSDataSwizzling.m */,
D8ACE3CB2762187D00F5A213 /* SentryNSDataTracker.h */,
D8ACE3C52762187200F5A213 /* SentryNSDataTracker.m */,
D4AF00222D2E931000F5F3D7 /* SentryNSFileManagerSwizzling.h */,
D4AF00202D2E92FD00F5F3D7 /* SentryNSFileManagerSwizzling.m */,
);
name = IO;
sourceTree = "<group>";
Expand Down Expand Up @@ -4078,6 +4087,7 @@
639FCFA41EBC809A00778193 /* SentryStacktrace.h in Headers */,
620379DB2AFE1415005AC0C1 /* SentryBuildAppStartSpans.h in Headers */,
63FE716320DA4C1100CDBAE8 /* SentryCrashDynamicLinker.h in Headers */,
D4AF00232D2E931000F5F3D7 /* SentryNSFileManagerSwizzling.h in Headers */,
639FCF981EBC7B9700778193 /* SentryEvent.h in Headers */,
03F84D2527DD414C008FE43F /* SentryThreadState.hpp in Headers */,
8E4E7C6D25DAAAFE006AB9E2 /* SentryTransaction.h in Headers */,
Expand Down Expand Up @@ -4146,7 +4156,7 @@
7BC3936825B1AB3E004F03D3 /* SentryLevelMapper.h in Headers */,
8E4E7C6E25DAAAFE006AB9E2 /* SentrySpan.h in Headers */,
84DEE8762B69AD6400A7BC17 /* SentryLaunchProfiling.h in Headers */,
D8ACE3CE2762187D00F5A213 /* SentryNSDataTracker.h in Headers */,
D8ACE3CE2762187D00F5A213 /* SentryFileIOTracker.h in Headers */,
03F84D2427DD414C008FE43F /* SentryCompiler.h in Headers */,
631E6D331EBC679C00712345 /* SentryQueueableRequestManager.h in Headers */,
33EB2A922C341300004FED3D /* Sentry.h in Headers */,
Expand Down Expand Up @@ -4617,7 +4627,7 @@
7B3B473825D6CC7E00D01640 /* SentryNSError.m in Sources */,
621AE74D2C626C510012E730 /* SentryANRTrackerV2.m in Sources */,
84CFA4CA2C9DF884008DA5F4 /* SentryUserFeedbackWidget.swift in Sources */,
D8ACE3C82762187200F5A213 /* SentryNSDataTracker.m in Sources */,
D8ACE3C82762187200F5A213 /* SentryFileIOTracker.m in Sources */,
7BE3C77D2446112C00A38442 /* SentryRateLimitParser.m in Sources */,
51B15F7E2BE88A7C0026A2F2 /* URLSessionTaskHelper.swift in Sources */,
D8B088B729C9E3FF00213258 /* SentryTracerConfiguration.m in Sources */,
Expand Down Expand Up @@ -4671,6 +4681,7 @@
63FE718120DA4C1100CDBAE8 /* SentryCrashDoctor.m in Sources */,
63FE713720DA4C1100CDBAE8 /* SentryCrashCPU_x86_64.c in Sources */,
8ECC674725C23A20000E2BF6 /* SentrySpanContext.m in Sources */,
D4AF00212D2E92FD00F5F3D7 /* SentryNSFileManagerSwizzling.m in Sources */,
7B18DE4228D9F794004845C6 /* SentryNSNotificationCenterWrapper.m in Sources */,
639FCFA91EBC80CC00778193 /* SentryFrame.m in Sources */,
D858FA672A29EAB3002A3503 /* SentryBinaryImageCache.m in Sources */,
Expand Down Expand Up @@ -5021,6 +5032,7 @@
D88817DD26D72BA500BF2251 /* SentryTraceStateTests.swift in Sources */,
7B26BBFB24C0A66D00A79CCC /* SentrySdkInfoNilTests.m in Sources */,
7B984A9F28E572AF001F4BEE /* CrashReport.swift in Sources */,
D4AF00252D2E93C400F5F3D7 /* SentryNSFileManagerSwizzlingTests.m in Sources */,
7BED3576266F7BFF00EAA70D /* TestSentryCrashWrapper.m in Sources */,
7BC6EC18255C44540059822A /* SentryDebugMetaTests.swift in Sources */,
D8CCFC632A1520C900DE232E /* SentryBinaryImageCacheTests.m in Sources */,
Expand Down Expand Up @@ -5105,7 +5117,7 @@
7BC6EC14255C415E0059822A /* SentryExceptionTests.swift in Sources */,
7B82722927A319E900F4BFF4 /* SentryAutoSessionTrackingIntegrationTests.swift in Sources */,
62D6B2A72CCA354B004DDBF1 /* SentryUncaughtNSExceptionsTests.swift in Sources */,
D875ED0B276CC84700422FAC /* SentryNSDataTrackerTests.swift in Sources */,
D875ED0B276CC84700422FAC /* SentryFileIOTrackerTests.swift in Sources */,
62B86CFC29F052BB008F3947 /* SentryTestLogConfig.m in Sources */,
D808FB92281BF6EC009A2A33 /* SentryUIEventTrackingIntegrationTests.swift in Sources */,
7BC6EC04255C235F0059822A /* SentryFrameTests.swift in Sources */,
Expand Down
Loading
Loading