22
33#if SENTRY_HAS_UIKIT
44
5+ # import " SentryANRStoppedResultInternal.h"
6+ # import " SentryANRTrackerInternalDelegate.h"
57# import " SentryDependencyContainer.h"
68# import " SentryLogC.h"
79# import " SentrySwift.h"
@@ -17,12 +19,12 @@ typedef NS_ENUM(NSInteger, SentryANRTrackerState) {
1719 kSentryANRTrackerStopping
1820};
1921
20- @interface SentryANRTrackerV2 () <SentryANRTracker>
22+ @interface SentryANRTrackerV2 ()
2123
2224@property (nonatomic , strong ) SentryCrashWrapper *crashWrapper;
2325@property (nonatomic , strong ) SentryDispatchQueueWrapper *dispatchQueueWrapper;
2426@property (nonatomic , strong ) SentryThreadWrapper *threadWrapper;
25- @property (nonatomic , strong ) NSHashTable <id<SentryANRTrackerDelegate >> *listeners;
27+ @property (nonatomic , strong ) NSHashTable <id<SentryANRTrackerInternalDelegate >> *listeners;
2628@property (nonatomic , strong ) SentryFramesTracker *framesTracker;
2729@property (nonatomic , assign ) NSTimeInterval timeoutInterval;
2830
@@ -33,6 +35,16 @@ @implementation SentryANRTrackerV2 {
3335 SentryANRTrackerState state;
3436}
3537
38+ - (instancetype )initWithTimeoutInterval : (NSTimeInterval )timeoutInterval
39+ {
40+ return
41+ [self initWithTimeoutInterval: timeoutInterval
42+ crashWrapper: SentryDependencyContainer.sharedInstance.crashWrapper
43+ dispatchQueueWrapper: SentryDependencyContainer.sharedInstance.dispatchQueueWrapper
44+ threadWrapper: SentryDependencyContainer.sharedInstance.threadWrapper
45+ framesTracker: SentryDependencyContainer.sharedInstance.framesTracker];
46+ }
47+
3648- (instancetype )initWithTimeoutInterval : (NSTimeInterval )timeoutInterval
3749 crashWrapper : (SentryCrashWrapper *)crashWrapper
3850 dispatchQueueWrapper : (SentryDispatchQueueWrapper *)dispatchQueueWrapper
@@ -52,11 +64,6 @@ - (instancetype)initWithTimeoutInterval:(NSTimeInterval)timeoutInterval
5264 return self;
5365}
5466
55- - (id <SentryANRTracker>)asProtocol
56- {
57- return self;
58- }
59-
6067- (void )detectANRs
6168{
6269 NSUUID *threadID = [NSUUID UUID ];
@@ -125,9 +132,9 @@ - (void)detectANRs
125132
126133 uint64_t framesDelayStartSystemTime = nowSystemTime - appHangStoppedInterval;
127134
128- SentryFramesDelayResult *framesDelay =
129- [self .framesTracker getFramesDelay : framesDelayStartSystemTime
130- endSystemTimestamp: nowSystemTime];
135+ SentryFramesDelayResultSPI *framesDelay =
136+ [self .framesTracker getFramesDelaySPI : framesDelayStartSystemTime
137+ endSystemTimestamp: nowSystemTime];
131138
132139 if (framesDelay.delayDuration == -1 ) {
133140 continue ;
@@ -171,9 +178,9 @@ - (void)detectANRs
171178
172179 uint64_t frameDelayStartSystemTime = nowSystemTime - timeoutIntervalInNanos;
173180
174- SentryFramesDelayResult *framesDelayForTimeInterval =
175- [self .framesTracker getFramesDelay : frameDelayStartSystemTime
176- endSystemTimestamp: nowSystemTime];
181+ SentryFramesDelayResultSPI *framesDelayForTimeInterval =
182+ [self .framesTracker getFramesDelaySPI : frameDelayStartSystemTime
183+ endSystemTimestamp: nowSystemTime];
177184
178185 if (framesDelayForTimeInterval.delayDuration == -1 ) {
179186 continue ;
@@ -189,7 +196,7 @@ - (void)detectANRs
189196
190197 reported = YES ;
191198 lastAppHangStartedSystemTime = dateProvider.systemTime ;
192- [self ANRDetected: SentryANRTypeFullyBlocking ];
199+ [self ANRDetected: kSentryANRTypeFullyBlocking ];
193200 }
194201
195202 NSTimeInterval nonFullyBlockingFramesDelayThreshold = self.timeoutInterval * 0.99 ;
@@ -200,7 +207,7 @@ - (void)detectANRs
200207
201208 reported = YES ;
202209 lastAppHangStartedSystemTime = dateProvider.systemTime ;
203- [self ANRDetected: SentryANRTypeNonFullyBlocking ];
210+ [self ANRDetected: kSentryANRTypeNonFullyBlocking ];
204211 }
205212 }
206213
@@ -210,15 +217,15 @@ - (void)detectANRs
210217 }
211218}
212219
213- - (void )ANRDetected : (enum SentryANRType )type
220+ - (void )ANRDetected : (SentryANRTypeInternal )type
214221{
215222 NSArray *localListeners;
216223 @synchronized (self.listeners ) {
217224 localListeners = [self .listeners allObjects ];
218225 }
219226
220- for (id <SentryANRTrackerDelegate > target in localListeners) {
221- [target anrDetectedWithType : type];
227+ for (id <SentryANRTrackerInternalDelegate > target in localListeners) {
228+ [target anrDetected : type];
222229 }
223230}
224231
@@ -229,15 +236,15 @@ - (void)ANRStopped:(NSTimeInterval)hangDurationMinimum to:(NSTimeInterval)hangDu
229236 targets = [self .listeners allObjects ];
230237 }
231238
232- SentryANRStoppedResult *result =
233- [[SentryANRStoppedResult alloc ] initWithMinDuration: hangDurationMinimum
234- maxDuration: hangDurationMaximum];
235- for (id <SentryANRTrackerDelegate > target in targets) {
236- [target anrStoppedWithResult : result];
239+ SentryANRStoppedResultInternal *result =
240+ [[SentryANRStoppedResultInternal alloc ] initWithMinDuration: hangDurationMinimum
241+ maxDuration: hangDurationMaximum];
242+ for (id <SentryANRTrackerInternalDelegate > target in targets) {
243+ [target anrStopped : result];
237244 }
238245}
239246
240- - (void )addListener : (id <SentryANRTrackerDelegate >)listener
247+ - (void )addListener : (id <SentryANRTrackerInternalDelegate >)listener
241248{
242249 @synchronized (self.listeners ) {
243250 [self .listeners addObject: listener];
@@ -255,7 +262,7 @@ - (void)addListener:(id<SentryANRTrackerDelegate>)listener
255262 }
256263}
257264
258- - (void )removeListener : (id <SentryANRTrackerDelegate >)listener
265+ - (void )removeListener : (id <SentryANRTrackerInternalDelegate >)listener
259266{
260267 @synchronized (self.listeners ) {
261268 [self .listeners removeObject: listener];
0 commit comments