Fix crash, stale allowAllScripts and allowedOrigins
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
@implementation SBRProcessBundleBridge {
|
||||
WKWebView *_webView;
|
||||
WKWebViewConfiguration *_webViewConfiguration;
|
||||
WKProcessPool *_processPool;
|
||||
id<SBRWebProcessProxy> _webProcessProxy;
|
||||
|
||||
_WKUserStyleSheet *_darkModeStyleSheet;
|
||||
@@ -41,15 +42,15 @@
|
||||
[poolConfiguration setInjectedBundleURL:bundleURL];
|
||||
|
||||
// Set up process pool
|
||||
WKProcessPool *processPool = [[WKProcessPool alloc] _initWithConfiguration:poolConfiguration];
|
||||
_processPool = [[WKProcessPool alloc] _initWithConfiguration:poolConfiguration];
|
||||
|
||||
// Initialize allowed origins now
|
||||
NSArray<NSString *> *allowedOrigins = [[_policyDataSource allowedOriginsForScriptResources] allObjects];
|
||||
[processPool _setObject:allowedOrigins forBundleParameter:SBRGetAllowedOriginsKey()];
|
||||
[processPool _setObject:@(_allowAllScripts) forBundleParameter:SBRGetAllScriptsAllowedKey()];
|
||||
[_processPool _setObject:allowedOrigins forBundleParameter:SBRGetAllowedOriginsKey()];
|
||||
[_processPool _setObject:@(_allowAllScripts) forBundleParameter:SBRGetAllScriptsAllowedKey()];
|
||||
|
||||
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
|
||||
configuration.processPool = processPool;
|
||||
configuration.processPool = _processPool;
|
||||
|
||||
// Instantiate web view
|
||||
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
|
||||
@@ -78,9 +79,14 @@
|
||||
[self policyDataSourceDidChange];
|
||||
}
|
||||
|
||||
- (void)webProcessDidLoadScriptWithOrigin:(NSString *)origin
|
||||
- (void)webProcessDidAllowScriptWithOrigin:(NSString *)origin
|
||||
{
|
||||
[_delegate webProcess:self didBlockScriptResourceFromOrigin:origin];
|
||||
[[self delegate] webProcess:self didAllowScriptResourceFromOrigin:origin];
|
||||
}
|
||||
|
||||
- (void)webProcessDidBlockScriptWithOrigin:(NSString *)origin
|
||||
{
|
||||
[[self delegate] webProcess:self didBlockScriptResourceFromOrigin:origin];
|
||||
}
|
||||
|
||||
#pragma mark Actions
|
||||
@@ -88,11 +94,14 @@
|
||||
- (void)policyDataSourceDidChange
|
||||
{
|
||||
NSArray<NSString *> *allowedOrigins = [[_policyDataSource allowedOriginsForScriptResources] allObjects];
|
||||
[_processPool _setObject:allowedOrigins forBundleParameter:SBRGetAllowedOriginsKey()];
|
||||
[_webProcessProxy syncAllowedResourceOrigins:allowedOrigins];
|
||||
}
|
||||
|
||||
- (void)setAllowAllScripts:(BOOL)allowAllScripts
|
||||
{
|
||||
_allowAllScripts = allowAllScripts;
|
||||
[_processPool _setObject:@(_allowAllScripts) forBundleParameter:SBRGetAllScriptsAllowedKey()];
|
||||
[_webProcessProxy setAllScriptsAllowed:allowAllScripts];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user