Skip to content

Commit

Permalink
fix(ios/cordova): Replace UIWebView with WKWebView in CDVUserAgentUtil
Browse files Browse the repository at this point in the history
  • Loading branch information
jcesarmobile committed Sep 4, 2019
1 parent 3266dee commit 3034885
Showing 1 changed file with 33 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,38 @@ Licensed to the Apache Software Foundation (ASF) under one
static NSInteger gCurrentLockToken = 0;
static NSMutableArray* gPendingSetUserAgentBlocks = nil;

#import <WebKit/WebKit.h>

@interface WKWebView(SynchronousEvaluateJavaScript)
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
@end

@implementation WKWebView(SynchronousEvaluateJavaScript)

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
{
__block NSString *resultString = nil;
__block BOOL finished = NO;

[self evaluateJavaScript:script completionHandler:^(id result, NSError *error) {
if (error == nil) {
if (result != nil) {
resultString = [NSString stringWithFormat:@"%@", result];
}
} else {
NSLog(@"evaluateJavaScript error : %@", error.localizedDescription);
}
finished = YES;
}];

while (!finished) {
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
}

return resultString;
}
@end

@implementation CDVUserAgentUtil

+ (NSString*)originalUserAgent
Expand All @@ -54,7 +86,7 @@ + (NSString*)originalUserAgent
BOOL cachedValueIsOld = ![systemAndLocale isEqualToString:cordovaUserAgentVersion];

if ((gOriginalUserAgent == nil) || cachedValueIsOld) {
UIWebView* sampleWebView = [[UIWebView alloc] initWithFrame:CGRectZero];
WKWebView* sampleWebView = [[WKWebView alloc] initWithFrame:CGRectZero];
gOriginalUserAgent = [sampleWebView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];

[userDefaults setObject:gOriginalUserAgent forKey:kCdvUserAgentKey];
Expand Down

0 comments on commit 3034885

Please sign in to comment.