122 lines
3.6 KiB
Mathematica
122 lines
3.6 KiB
Mathematica
|
|
//
|
|||
|
|
// SBRScriptPolicy.m
|
|||
|
|
// App
|
|||
|
|
//
|
|||
|
|
// Created by James Magahern on 10/15/21.
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#import "SBRScriptPolicy.h"
|
|||
|
|
|
|||
|
|
// For icon drawing
|
|||
|
|
#import <UIKit/UIKit.h>
|
|||
|
|
|
|||
|
|
@implementation SBRScriptPolicy
|
|||
|
|
|
|||
|
|
+ (NSString *)titleForPolicyType:(SBRScriptOriginPolicyType)policyType
|
|||
|
|
{
|
|||
|
|
switch (policyType) {
|
|||
|
|
case SBRScriptOriginPolicyTypeAlpha:
|
|||
|
|
return @"Alpha";
|
|||
|
|
case SBRScriptOriginPolicyTypeBravo:
|
|||
|
|
return @"Bravo";
|
|||
|
|
case SBRScriptOriginPolicyTypeCharlie:
|
|||
|
|
return @"Charlie";
|
|||
|
|
case SBRScriptOriginPolicyTypeDelta:
|
|||
|
|
return @"Delta";
|
|||
|
|
case SBRScriptOriginPolicyTypeEcho:
|
|||
|
|
return @"Echo";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
+ (NSString *)localizedDescriptionForPolicyType:(SBRScriptOriginPolicyType)policyType
|
|||
|
|
{
|
|||
|
|
switch (policyType) {
|
|||
|
|
case SBRScriptOriginPolicyTypeAlpha:
|
|||
|
|
return @"All scripts blocked.";
|
|||
|
|
case SBRScriptOriginPolicyTypeBravo:
|
|||
|
|
return @"Scripts on page are allowed.";
|
|||
|
|
case SBRScriptOriginPolicyTypeCharlie:
|
|||
|
|
return @"Allow scripts from the same security origin.";
|
|||
|
|
case SBRScriptOriginPolicyTypeDelta:
|
|||
|
|
return @"Allow scripts from common and host CDNs.";
|
|||
|
|
case SBRScriptOriginPolicyTypeEcho:
|
|||
|
|
return @"All scripts are allowed.";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
+ (UIImage *)iconRepresentationForPolicyType:(SBRScriptOriginPolicyType)policyType withSize:(CGSize)size
|
|||
|
|
{
|
|||
|
|
UIFont *font = [UIFont boldSystemFontOfSize:size.height - 2];
|
|||
|
|
NSDictionary<NSAttributedStringKey, id> *attrs = @{
|
|||
|
|
NSFontAttributeName : font,
|
|||
|
|
NSForegroundColorAttributeName : [UIColor whiteColor]
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
const CGRect rect = (CGRect) { .origin = CGPointZero, .size = size };
|
|||
|
|
UIGraphicsBeginImageContextWithOptions(size, NO, UIScreen.mainScreen.scale);
|
|||
|
|
|
|||
|
|
UIBezierPath *backgroundPath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:4.0];
|
|||
|
|
[backgroundPath fill];
|
|||
|
|
|
|||
|
|
NSString *character = @"";
|
|||
|
|
switch (policyType) {
|
|||
|
|
case SBRScriptOriginPolicyTypeAlpha:
|
|||
|
|
character = @"𝝰"; break;
|
|||
|
|
case SBRScriptOriginPolicyTypeBravo:
|
|||
|
|
character = @"𝝱"; break;
|
|||
|
|
case SBRScriptOriginPolicyTypeCharlie:
|
|||
|
|
character = @"𝝲"; break;
|
|||
|
|
case SBRScriptOriginPolicyTypeDelta:
|
|||
|
|
character = @"𝝳"; break;
|
|||
|
|
case SBRScriptOriginPolicyTypeEcho:
|
|||
|
|
character = @"𝝴"; break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const CGSize charSize = [character sizeWithAttributes:attrs];
|
|||
|
|
const CGRect charRect = (CGRect) {
|
|||
|
|
.origin = (CGPoint) {
|
|||
|
|
.x = (size.width - charSize.width) / 2,
|
|||
|
|
.y = -(charSize.height - size.height) / 2,
|
|||
|
|
},
|
|||
|
|
|
|||
|
|
.size = charSize
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
[character drawInRect:charRect withAttributes:attrs];
|
|||
|
|
|
|||
|
|
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
|
|||
|
|
UIGraphicsEndImageContext();
|
|||
|
|
|
|||
|
|
return image;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
+ (BOOL)supportsSecureCoding
|
|||
|
|
{
|
|||
|
|
return YES;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
- (instancetype)initWithSecurityOrigin:(NSString *)origin policyType:(SBRScriptOriginPolicyType)policyType
|
|||
|
|
{
|
|||
|
|
if (self = [super init]) {
|
|||
|
|
_origin = [origin copy];
|
|||
|
|
_policyType = policyType;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return self;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
- (instancetype)initWithCoder:(NSCoder *)coder
|
|||
|
|
{
|
|||
|
|
NSString *origin = [coder decodeObjectForKey:@"origin"];
|
|||
|
|
NSNumber *policyTypeNumber = [coder decodeObjectForKey:@"policyType"];
|
|||
|
|
return [self initWithSecurityOrigin:origin policyType:[policyTypeNumber integerValue]];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
- (void)encodeWithCoder:(NSCoder *)coder
|
|||
|
|
{
|
|||
|
|
[coder encodeObject:_origin forKey:@"origin"];
|
|||
|
|
[coder encodeObject:[NSNumber numberWithInteger:_policyType] forKey:@"policyType"];
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@end
|