// // ResourcePolicyManager.swift // SBrowser // // Created by James Magahern on 7/22/20. // import Foundation class ResourcePolicyManager: NSObject, SBRResourceOriginPolicyDataSource { static let AllowedOriginsDefaultsKey = "allowedOrigins" static let EnabledOriginsDefaultsKey = "enabledOrigins" private static func stringSetForKey(_ key: String) -> Set { if let set = UserDefaults.standard.array(forKey: key) as? [String] { return Set(set) } return Set() } private static func saveStringSet(_ set: Set, forKey key: String) { UserDefaults.standard.set(Array(set), forKey: key) } private var allowedOriginSet: Set = stringSetForKey(AllowedOriginsDefaultsKey) { didSet { Self.saveStringSet(allowedOriginSet, forKey: Self.AllowedOriginsDefaultsKey) } } func allowedOriginsForScriptResources() -> Set { allowedOriginSet } func allowOriginToLoadScriptResources(_ origin: String) { allowedOriginSet.formUnion([ origin ]) } func disallowOriginToLoadScriptResources(_ origin: String) { allowedOriginSet.remove(origin) } }