Started working on modern policies (from Epiphany)
UI finished, just need to hook it up to the backend.
This commit is contained in:
@@ -10,7 +10,7 @@ import Foundation
|
||||
class ResourcePolicyManager: NSObject, SBRResourceOriginPolicyDataSource
|
||||
{
|
||||
static let AllowedOriginsDefaultsKey = "allowedOrigins"
|
||||
static let EnabledOriginsDefaultsKey = "enabledOrigins"
|
||||
static let OriginPoliciesDefaultsKey = "originPolicies"
|
||||
|
||||
private static func stringSetForKey(_ key: String) -> Set<String> {
|
||||
if let set = UserDefaults.standard.array(forKey: key) as? [String] {
|
||||
@@ -30,6 +30,19 @@ class ResourcePolicyManager: NSObject, SBRResourceOriginPolicyDataSource
|
||||
|
||||
func allowedOriginsForScriptResources() -> Set<String> { allowedOriginSet }
|
||||
|
||||
private lazy var scriptPolicies: Dictionary<String, ScriptPolicy.PolicyType> = {
|
||||
if let existingDict = UserDefaults.standard.dictionary(forKey: Self.OriginPoliciesDefaultsKey) as? Dictionary<String, Int> {
|
||||
return existingDict.mapValues { ScriptPolicy.PolicyType(rawValue: $0)! }
|
||||
}
|
||||
|
||||
return Dictionary<String, ScriptPolicy.PolicyType>()
|
||||
}() {
|
||||
didSet {
|
||||
let encodableDictionary = scriptPolicies.mapValues { $0.rawValue }
|
||||
UserDefaults.standard.set(encodableDictionary, forKey: Self.OriginPoliciesDefaultsKey)
|
||||
}
|
||||
}
|
||||
|
||||
func allowOriginToLoadScriptResources(_ origin: String) {
|
||||
allowedOriginSet.formUnion([ origin ])
|
||||
}
|
||||
@@ -37,4 +50,16 @@ class ResourcePolicyManager: NSObject, SBRResourceOriginPolicyDataSource
|
||||
func disallowOriginToLoadScriptResources(_ origin: String) {
|
||||
allowedOriginSet.remove(origin)
|
||||
}
|
||||
|
||||
func scriptPolicy(forOrigin origin: String) -> ScriptPolicy {
|
||||
if let policyType = scriptPolicies[origin] {
|
||||
return ScriptPolicy(policyType: policyType, securityOrigin: origin)
|
||||
}
|
||||
|
||||
return ScriptPolicy(policyType: .alpha, securityOrigin: origin)
|
||||
}
|
||||
|
||||
func setScriptPolicyType(_ policyType: ScriptPolicy.PolicyType, forOrigin origin: String) {
|
||||
scriptPolicies[origin] = policyType
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user