public TargetedNotificationsProviderBase(IRemoteSettingsStorageHandler cacheableStorageHandler, RemoteSettingsInitializer initializer)
     : base(cacheableStorageHandler, initializer.RemoteSettingsLogger)
 {
     this.cacheableStorageHandler = cacheableStorageHandler;
     useCache                       = GetValueOrDefaultFromCacheableStorage("TargetedNotifications", "UseCache", true);
     enforceCourtesy                = GetValueOrDefaultFromCacheableStorage("TargetedNotifications", "EnforceCourtesy", true);
     cacheTimeoutMs                 = GetValueOrDefaultFromCacheableStorage("TargetedNotifications", "CacheTimeoutMs", 750);
     serviceQueryLoopTimeSpan       = TimeSpan.FromMinutes(GetValueOrDefaultFromCacheableStorage("TargetedNotifications", "ServiceQueryLoopMinutes", 1440));
     liveStorageHandler             = initializer.LiveRemoteSettingsStorageHandlerFactory();
     remoteSettingsParser           = initializer.RemoteSettingsParser;
     remoteSettingsTelemetry        = initializer.Telemetry;
     targetedNotificationsTelemetry = initializer.TargetedNotificationsTelemetry;
     experimentationService         = initializer.ExperimentationService;
     telemetryNotificationService   = initializer.TelemetryNotificationService;
     notificationAndCourtesyCache   = new TargetedNotificationsCacheProvider(enforceCourtesy, this, initializer);
 }
 public StableRemoteSettingsProvider(RemoteSettingsInitializer initializer)
     : base(initializer.LiveRemoteSettingsStorageHandlerFactory())
 {
     stableSettingRootSubCollections = new HashSet <string>(initializer.StableSettingRootSubCollections);
 }