Tagger: Saka-key like keyboard navigation link tagging

This commit is contained in:
James Magahern
2021-02-26 17:43:53 -08:00
parent 48a7c07551
commit 225761473d
4 changed files with 215 additions and 5 deletions

View File

@@ -32,6 +32,8 @@
_WKUserStyleSheet *_darkModeStyleSheet;
WKUserScript *_readabilityScript;
NSArray<WKUserScript *> *_userScripts;
}
- (void)tearDown
@@ -91,6 +93,12 @@
_webViewConfiguration = webViewConfiguration;
// User scripts
WKUserContentController *userContentController = [_webViewConfiguration userContentController];
for (WKUserScript *script in [self _userScripts]) {
[userContentController addUserScript:script];
}
// Instantiate web view
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:webViewConfiguration];
@@ -106,6 +114,25 @@
return self;
}
- (WKUserScript *)_loadScriptForResource:(NSString *)resourceName withExtension:(NSString *)extension
{
NSURL *url = [[NSBundle mainBundle] URLForResource:resourceName withExtension:extension];
NSString *source = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
return [[WKUserScript alloc] initWithSource:source injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
}
- (NSArray<WKUserScript *> *)_userScripts
{
if (!_userScripts) {
_userScripts = @[
[self _loadScriptForResource:@"Tagger" withExtension:@"js"],
];
}
return _userScripts;
}
#pragma mark <SBRWebProcessDelegate>
- (void)webProcessDidConnect
@@ -168,10 +195,7 @@
WKUserContentController *userContentController = [_webViewConfiguration userContentController];
if (!_readabilityScript) {
NSURL *readabilityJSURL = [[NSBundle mainBundle] URLForResource:@"Readability" withExtension:@"js"];
NSString *readabilityJSSource = [NSString stringWithContentsOfURL:readabilityJSURL encoding:NSUTF8StringEncoding error:nil];
_readabilityScript = [[WKUserScript alloc] initWithSource:readabilityJSSource injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES];
_readabilityScript = [self _loadScriptForResource:@"Readability" withExtension:@"js"];
}
[userContentController _addUserScriptImmediately:_readabilityScript];