Skip to content

Commit ba4d47d

Browse files
noahsmartinphilprime
authored andcommitted
ref: Convert SentryDisplayLinkWrapper to Swift (#6248)
1 parent 6b8cbcb commit ba4d47d

File tree

11 files changed

+38
-81
lines changed

11 files changed

+38
-81
lines changed

Sentry.xcodeproj/project.pbxproj

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -365,8 +365,6 @@
365365
7B2A70D827D5F080008B0D15 /* SentryANRTrackerV1Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B2A70D727D5F07F008B0D15 /* SentryANRTrackerV1Tests.swift */; };
366366
7B2A70DF27D60904008B0D15 /* SentryTestThreadWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B2A70DE27D60904008B0D15 /* SentryTestThreadWrapper.swift */; };
367367
7B2BB0032966F55900A1E102 /* SentryOptionsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B2BB0012966F55900A1E102 /* SentryOptionsInternal.h */; settings = {ATTRIBUTES = (Private, ); }; };
368-
7B30B67C26527886006B2752 /* SentryDisplayLinkWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B30B67B26527886006B2752 /* SentryDisplayLinkWrapper.h */; };
369-
7B30B67E26527894006B2752 /* SentryDisplayLinkWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B30B67D26527894006B2752 /* SentryDisplayLinkWrapper.m */; };
370368
7B30B68026527C3C006B2752 /* SentryFramesTrackerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B30B67F26527C3C006B2752 /* SentryFramesTrackerTests.swift */; };
371369
7B31C291277B04A000337126 /* SentryCrashPlatformSpecificDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B31C290277B04A000337126 /* SentryCrashPlatformSpecificDefines.h */; };
372370
7B3398632459C14000BD9C96 /* SentryEnvelopeRateLimit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B3398622459C14000BD9C96 /* SentryEnvelopeRateLimit.h */; };
@@ -1115,6 +1113,7 @@
11151113
FAE579BA2E7DBE9900B710F9 /* SentryGlobalEventProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAE579B42E7DBE9400B710F9 /* SentryGlobalEventProcessor.swift */; };
11161114
FAE579C22E7DDDE700B710F9 /* SentryThreadWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAE579BC2E7DDDE400B710F9 /* SentryThreadWrapper.swift */; };
11171115
FAE579CC2E7DE14900B710F9 /* SentryFrameRemover.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAE579C62E7DE14400B710F9 /* SentryFrameRemover.swift */; };
1116+
FAE57BF72E83049E00B710F9 /* SentryDisplayLinkWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAE57BF12E83049900B710F9 /* SentryDisplayLinkWrapper.swift */; };
11181117
FAE80C242E4695B40010A595 /* SentryEvent+Serialize.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE80C232E4695AE0010A595 /* SentryEvent+Serialize.h */; };
11191118
FAEC270E2DF3526000878871 /* SentryUserFeedback.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAEC270D2DF3526000878871 /* SentryUserFeedback.swift */; };
11201119
FAEC273D2DF3933A00878871 /* NSData+Unzip.m in Sources */ = {isa = PBXBuildFile; fileRef = FAEC273C2DF3933200878871 /* NSData+Unzip.m */; };
@@ -1616,8 +1615,6 @@
16161615
7B2A70D727D5F07F008B0D15 /* SentryANRTrackerV1Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryANRTrackerV1Tests.swift; sourceTree = "<group>"; };
16171616
7B2A70DE27D60904008B0D15 /* SentryTestThreadWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryTestThreadWrapper.swift; sourceTree = "<group>"; };
16181617
7B2BB0012966F55900A1E102 /* SentryOptionsInternal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryOptionsInternal.h; path = include/HybridPublic/SentryOptionsInternal.h; sourceTree = "<group>"; };
1619-
7B30B67B26527886006B2752 /* SentryDisplayLinkWrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryDisplayLinkWrapper.h; path = include/SentryDisplayLinkWrapper.h; sourceTree = "<group>"; };
1620-
7B30B67D26527894006B2752 /* SentryDisplayLinkWrapper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = SentryDisplayLinkWrapper.m; path = include/SentryDisplayLinkWrapper.m; sourceTree = "<group>"; };
16211618
7B30B67F26527C3C006B2752 /* SentryFramesTrackerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryFramesTrackerTests.swift; sourceTree = "<group>"; };
16221619
7B30B68126527C55006B2752 /* TestDisplayLinkWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestDisplayLinkWrapper.swift; sourceTree = "<group>"; };
16231620
7B30B6882653AEA8006B2752 /* SentryFramesTracker+TestInit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SentryFramesTracker+TestInit.h"; sourceTree = "<group>"; };
@@ -2460,6 +2457,7 @@
24602457
FAE579B42E7DBE9400B710F9 /* SentryGlobalEventProcessor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryGlobalEventProcessor.swift; sourceTree = "<group>"; };
24612458
FAE579BC2E7DDDE400B710F9 /* SentryThreadWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryThreadWrapper.swift; sourceTree = "<group>"; };
24622459
FAE579C62E7DE14400B710F9 /* SentryFrameRemover.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryFrameRemover.swift; sourceTree = "<group>"; };
2460+
FAE57BF12E83049900B710F9 /* SentryDisplayLinkWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryDisplayLinkWrapper.swift; sourceTree = "<group>"; };
24632461
FAE80C232E4695AE0010A595 /* SentryEvent+Serialize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "SentryEvent+Serialize.h"; path = "include/SentryEvent+Serialize.h"; sourceTree = "<group>"; };
24642462
FAEC270D2DF3526000878871 /* SentryUserFeedback.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryUserFeedback.swift; sourceTree = "<group>"; };
24652463
FAEC273C2DF3933200878871 /* NSData+Unzip.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSData+Unzip.m"; sourceTree = "<group>"; };
@@ -3681,8 +3679,6 @@
36813679
children = (
36823680
7B6C5ED9264E8D860010D138 /* SentryFramesTrackingIntegration.h */,
36833681
7B6C5EDB264E8DA80010D138 /* SentryFramesTrackingIntegration.m */,
3684-
7B30B67B26527886006B2752 /* SentryDisplayLinkWrapper.h */,
3685-
7B30B67D26527894006B2752 /* SentryDisplayLinkWrapper.m */,
36863682
7B6C5EDF264E8E050010D138 /* SentryFramesTracker.h */,
36873683
7B6C5EDD264E8DF00010D138 /* SentryFramesTracker.m */,
36883684
7B7A599426B692540060A676 /* SentryScreenFrames.h */,
@@ -4519,6 +4515,7 @@
45194515
D8739CF72BECFF92007D2F66 /* Performance */ = {
45204516
isa = PBXGroup;
45214517
children = (
4518+
FAE57BF12E83049900B710F9 /* SentryDisplayLinkWrapper.swift */,
45224519
D468C0602D36699700964230 /* IO */,
45234520
);
45244521
path = Performance;
@@ -5104,7 +5101,6 @@
51045101
D8370B6C273DF20F00F66E2D /* SentryNSURLSessionTaskSearch.h in Headers */,
51055102
7B96572026830C9100C66E25 /* SentryScopeSyncC.h in Headers */,
51065103
63FE70EB20DA4C1000CDBAE8 /* SentryCrashMonitor_MachException.h in Headers */,
5107-
7B30B67C26527886006B2752 /* SentryDisplayLinkWrapper.h in Headers */,
51085104
D456B4362D706BF2007068CB /* SentryTraceOrigin.h in Headers */,
51095105
FAE80C242E4695B40010A595 /* SentryEvent+Serialize.h in Headers */,
51105106
7BD86ECF264A7C77005439DB /* SentryAppStartMeasurement.h in Headers */,
@@ -5681,7 +5677,6 @@
56815677
8E564AEA267AF22600FE117D /* SentryNetworkTracker.m in Sources */,
56825678
15360CED2433A15500112302 /* SentryInstallation.m in Sources */,
56835679
D8370B6A273DF1E900F66E2D /* SentryNSURLSessionTaskSearch.m in Sources */,
5684-
7B30B67E26527894006B2752 /* SentryDisplayLinkWrapper.m in Sources */,
56855680
63FE711D20DA4C1000CDBAE8 /* SentryCrashCPU_arm64.c in Sources */,
56865681
844EDC77294144DB00C86F34 /* SentrySystemWrapper.mm in Sources */,
56875682
D451ED5F2D92ECDE00C9BEA8 /* SentryReplayFrame.swift in Sources */,
@@ -5861,6 +5856,7 @@
58615856
03F84D3227DD4191008FE43F /* SentryProfiler.mm in Sources */,
58625857
635B3F391EBC6E2500A6176D /* SentryAsynchronousOperation.m in Sources */,
58635858
63FE717520DA4C1100CDBAE8 /* SentryCrash.m in Sources */,
5859+
FAE57BF72E83049E00B710F9 /* SentryDisplayLinkWrapper.swift in Sources */,
58645860
D4CD2A802DE9F91900DA9F59 /* SentryRedactRegion.swift in Sources */,
58655861
D4CD2A812DE9F91900DA9F59 /* SentryRedactRegionType.swift in Sources */,
58665862
6344DDB11EC308E400D9160D /* SentryCrashInstallationReporter.m in Sources */,

SentryTestUtils/SentryTestUtils-ObjC-BridgingHeader.h

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

99
#if SENTRY_HAS_UIKIT
1010
# import "SentryAppStartTracker.h"
11-
# import "SentryDisplayLinkWrapper.h"
1211
# import "SentryFramesTracker+TestInit.h"
1312
# import "SentryUIViewControllerPerformanceTracker.h"
1413
#endif // SENTRY_HAS_UIKIT

SentryTestUtils/TestDisplayLinkWrapper.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Foundation
2-
@_spi(Private) import Sentry
2+
@_spi(Private) @testable import Sentry
33

44
#if os(iOS) || os(tvOS) || targetEnvironment(macCatalyst)
55

Sources/Sentry/SentryDependencyContainer.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
#import "SentryANRTrackerV1.h"
22

33
#import "SentryDispatchFactory.h"
4-
#import "SentryDisplayLinkWrapper.h"
54
#import "SentryExtraContextProvider.h"
65
#import "SentryFileIOTracker.h"
76
#import "SentryFileManager.h"

Sources/Sentry/SentryFramesTracker.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
# import "SentryCompiler.h"
66
# import "SentryDelayedFrame.h"
77
# import "SentryDelayedFramesTracker.h"
8-
# import "SentryDisplayLinkWrapper.h"
98
# import "SentryInternalCDefines.h"
109
# import "SentryLogC.h"
1110
# import "SentryNotificationNames.h"

Sources/Sentry/SentrySessionReplayIntegration.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
# import "SentryDependencyContainer.h"
77
# import "SentryDispatchFactory.h"
88
# import "SentryDispatchQueueProviderProtocol.h"
9-
# import "SentryDisplayLinkWrapper.h"
109
# import "SentryEvent+Private.h"
1110
# import "SentryFileManager.h"
1211
# import "SentryHub+Private.h"

Sources/Sentry/include/SentryDisplayLinkWrapper.h

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

Sources/Sentry/include/SentryDisplayLinkWrapper.m

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

Sources/Sentry/include/SentryPrivate.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
#import "SentryDateUtil.h"
3131
#import "SentryDateUtils.h"
3232
#import "SentryDependencyContainerSwiftHelper.h"
33-
#import "SentryDisplayLinkWrapper.h"
3433
#import "SentryEvent+Serialize.h"
3534
#import "SentryFileIOTracker.h"
3635
#import "SentryFileManager.h"
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#if (os(iOS) || os(tvOS) || (swift(>=5.9) && os(visionOS))) && !SENTRY_NO_UIKIT
2+
3+
import UIKit
4+
5+
/// A wrapper around DisplayLink for testability.
6+
@_spi(Private) @objc public class SentryDisplayLinkWrapper: NSObject {
7+
8+
var displayLink: CADisplayLink?
9+
10+
@objc public var timestamp: CFTimeInterval {
11+
displayLink?.timestamp ?? 0
12+
}
13+
14+
@objc public var targetTimestamp: CFTimeInterval {
15+
displayLink?.targetTimestamp ?? 0
16+
}
17+
18+
@objc public func link(withTarget target: Any, selector sel: Selector) {
19+
displayLink = CADisplayLink(target: target, selector: sel)
20+
displayLink?.add(to: .main, forMode: .common)
21+
}
22+
23+
@objc public func invalidate() {
24+
displayLink?.invalidate()
25+
displayLink = nil
26+
}
27+
28+
@objc public func isRunning() -> Bool {
29+
!(displayLink?.isPaused ?? true)
30+
}
31+
}
32+
33+
#endif

0 commit comments

Comments
 (0)