@@ -12,14 +12,15 @@ struct WooCrashLoggingStack: CrashLoggingStack {
1212 let crashLogging : AutomatticTracks . CrashLogging
1313 let eventLogging : EventLogging
1414
15- private let crashLoggingDataProvider = WCCrashLoggingDataProvider ( )
15+ private let crashLoggingDataProvider : WCCrashLoggingDataProvider
1616 private let eventLoggingDataProvider = WCEventLoggingDataSource ( )
1717 private let eventLoggingDelegate = WCEventLoggingDelegate ( )
1818
19- init ( ) {
19+ init ( featureFlagService : FeatureFlagService ) {
2020 let eventLogging = EventLogging ( dataSource: eventLoggingDataProvider, delegate: eventLoggingDelegate)
2121
2222 self . eventLogging = eventLogging
23+ self . crashLoggingDataProvider = WCCrashLoggingDataProvider ( featureFlagService: featureFlagService)
2324 self . crashLogging = AutomatticTracks . CrashLogging ( dataProvider: crashLoggingDataProvider, eventLogging: eventLogging)
2425
2526 /// Upload any remaining files any time the app becomes active
@@ -87,7 +88,11 @@ class WCCrashLoggingDataProvider: CrashLoggingDataProvider {
8788 /// Indicates that app is in an inconsistent state and we don't want to start asking it for metadata
8889 fileprivate var appIsCrashing = false
8990
90- init ( ) {
91+ let featureFlagService : FeatureFlagService
92+
93+ init ( featureFlagService: FeatureFlagService ) {
94+ self . featureFlagService = featureFlagService
95+
9196 NotificationCenter . default. addObserver ( self , selector: #selector( updateCrashLoggingSystem ( _: ) ) , name: . defaultAccountWasUpdated, object: nil )
9297 NotificationCenter . default. addObserver ( self , selector: #selector( updateCrashLoggingSystem ( _: ) ) , name: . logOutEventReceived, object: nil )
9398 NotificationCenter . default. addObserver ( self , selector: #selector( updateCrashLoggingSystem ( _: ) ) , name: . StoresManagerDidUpdateDefaultSite, object: nil )
@@ -129,6 +134,26 @@ class WCCrashLoggingDataProvider: CrashLoggingDataProvider {
129134 ServiceLocator . crashLogging. setNeedsDataRefresh ( )
130135 }
131136 }
137+
138+ // MARK: – Performance Monitoring
139+
140+ var performanceTracking : PerformanceTracking {
141+ guard featureFlagService. isFeatureFlagEnabled ( . performanceMonitoring) else {
142+ return . disabled
143+ }
144+
145+ return . enabled(
146+ . init(
147+ // FIXME: Is there a way to control this via feature flags?
148+ sampler: { 0.1 } ,
149+ trackCoreData: featureFlagService. isFeatureFlagEnabled ( . performanceMonitoringCoreData) ,
150+ trackFileIO: featureFlagService. isFeatureFlagEnabled ( . performanceMonitoringFileIO) ,
151+ trackNetwork: featureFlagService. isFeatureFlagEnabled ( . performanceMonitoringNetworking) ,
152+ trackUserInteraction: featureFlagService. isFeatureFlagEnabled ( . performanceMonitoringUserInteraction) ,
153+ trackViewControllers: featureFlagService. isFeatureFlagEnabled ( . performanceMonitoringViewController)
154+ )
155+ )
156+ }
132157}
133158
134159struct CrashLoggingSettings {
0 commit comments