You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2015/03/07 01:18:39 UTC
[26/43] ios commit: Removed WebKit.framework dependencies in core
files,
WKWebView and UIWebView are fully pluginized. WKWebView will need a local web
server for use on device currently (Simulator is fine)
Removed WebKit.framework dependencies in core files, WKWebView and UIWebView are fully pluginized. WKWebView will need a local web server for use on device currently (Simulator is fine)
Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/af1ec2c4
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/af1ec2c4
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/af1ec2c4
Branch: refs/heads/4.0.x
Commit: af1ec2c40e2fb5ae4d01c87407a64d25d0b85b02
Parents: ce6604d
Author: Shazron Abdullah <sh...@apache.org>
Authored: Thu Nov 6 15:28:13 2014 -0800
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Thu Nov 6 15:28:13 2014 -0800
----------------------------------------------------------------------
CordovaLib/Classes/CDVUIWebViewDelegate.m | 1 -
CordovaLib/Classes/CDVUIWebViewEngine.h | 5 +-
CordovaLib/Classes/CDVUIWebViewEngine.m | 28 +++-
CordovaLib/Classes/CDVViewController.h | 11 +-
CordovaLib/Classes/CDVViewController.m | 47 +-----
CordovaLib/Classes/CDVWKWebViewEngine.h | 7 +-
CordovaLib/Classes/CDVWKWebViewEngine.m | 66 +++++++-
CordovaLib/Classes/CDVWKWebViewUIDelegate.h | 1 -
CordovaLib/Classes/CDVWKWebViewUIDelegate.m | 169 ++++++++++-----------
CordovaLib/Classes/CDVWebViewEngineProtocol.h | 3 +-
10 files changed, 176 insertions(+), 162 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVUIWebViewDelegate.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVUIWebViewDelegate.m b/CordovaLib/Classes/CDVUIWebViewDelegate.m
index 230a7fa..d880a4b 100644
--- a/CordovaLib/Classes/CDVUIWebViewDelegate.m
+++ b/CordovaLib/Classes/CDVUIWebViewDelegate.m
@@ -77,7 +77,6 @@
//
#import "CDVUIWebViewDelegate.h"
-#import "CDVAvailability.h"
// #define VerboseLog NSLog
#define VerboseLog(...) do {} while (0)
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVUIWebViewEngine.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVUIWebViewEngine.h b/CordovaLib/Classes/CDVUIWebViewEngine.h
index ea1d8f5..6a9ee77 100644
--- a/CordovaLib/Classes/CDVUIWebViewEngine.h
+++ b/CordovaLib/Classes/CDVUIWebViewEngine.h
@@ -17,10 +17,11 @@
under the License.
*/
-#import <Foundation/Foundation.h>
-#import "CDVWebViewEngineProtocol.h"
#import "CDVPlugin.h"
+#import "CDVWebViewEngineProtocol.h"
@interface CDVUIWebViewEngine : CDVPlugin <CDVWebViewEngineProtocol>
+@property (nonatomic, strong, readonly) id <UIWebViewDelegate> uiWebViewDelegate;
+
@end
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVUIWebViewEngine.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVUIWebViewEngine.m b/CordovaLib/Classes/CDVUIWebViewEngine.m
index e81778f..f2594ad 100644
--- a/CordovaLib/Classes/CDVUIWebViewEngine.m
+++ b/CordovaLib/Classes/CDVUIWebViewEngine.m
@@ -26,6 +26,7 @@
@interface CDVUIWebViewEngine ()
@property (nonatomic, strong, readwrite) UIView* engineWebView;
+@property (nonatomic, strong, readwrite) id <UIWebViewDelegate> uiWebViewDelegate;
@end
@@ -47,9 +48,23 @@
return self;
}
+- (void)pluginInitialize
+{
+ // viewController would be available now. we attempt to set all possible delegates to it, by default
+
+ UIWebView* uiWebView = (UIWebView*)_engineWebView;
+
+ if ([self.viewController conformsToProtocol:@protocol(UIWebViewDelegate)]) {
+ self.uiWebViewDelegate = [[CDVUIWebViewDelegate alloc] initWithDelegate:(id <UIWebViewDelegate>)self.viewController];
+ uiWebView.delegate = self.uiWebViewDelegate;
+ }
+
+ [self updateSettings:self.commandDelegate.settings];
+}
+
- (void)evaluateJavaScript:(NSString*)javaScriptString completionHandler:(void (^)(id, NSError*))completionHandler
{
- NSString* ret = [(UIWebView*)_engineWebView stringByEvaluatingJavaScriptFromString : javaScriptString];
+ NSString* ret = [(UIWebView*)_engineWebView stringByEvaluatingJavaScriptFromString:javaScriptString];
if (completionHandler) {
completionHandler(ret, nil);
@@ -62,8 +77,8 @@
// UIKit operations have to be on the main thread. This method does not need to be synchronous
dispatch_async(dispatch_get_main_queue(), ^{
- [weakSelf loadRequest:[NSURLRequest requestWithURL:url]];
- });
+ [weakSelf loadRequest:[NSURLRequest requestWithURL:url]];
+ });
}
- (void)updateSettings:(NSDictionary*)settings
@@ -98,7 +113,7 @@
}
NSString* decelerationSetting = [settings cordovaSettingForKey:@"UIWebViewDecelerationSpeed"];
- if (![@"fast" isEqualToString : decelerationSetting]) {
+ if (![@"fast" isEqualToString:decelerationSetting]) {
[uiWebView.scrollView setDecelerationRate:UIScrollViewDecelerationRateNormal];
}
@@ -139,12 +154,15 @@
- (void)updateWithInfo:(NSDictionary*)info
{
+ UIWebView* uiWebView = (UIWebView*)_engineWebView;
+
id <UIWebViewDelegate> uiWebViewDelegate = [info objectForKey:kCDVWebViewEngineUIWebViewDelegate];
NSDictionary* settings = [info objectForKey:kCDVWebViewEngineWebViewPreferences];
if (uiWebViewDelegate &&
[uiWebViewDelegate conformsToProtocol:@protocol(UIWebViewDelegate)]) {
- ((UIWebView*)_engineWebView).delegate = uiWebViewDelegate;
+ self.uiWebViewDelegate = [[CDVUIWebViewDelegate alloc] initWithDelegate:(id <UIWebViewDelegate>)self.viewController];
+ uiWebView.delegate = self.uiWebViewDelegate;
}
if (settings && [settings isKindOfClass:[NSDictionary class]]) {
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVViewController.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVViewController.h b/CordovaLib/Classes/CDVViewController.h
index 453ce30..68297d4 100644
--- a/CordovaLib/Classes/CDVViewController.h
+++ b/CordovaLib/Classes/CDVViewController.h
@@ -28,16 +28,7 @@
#import "CDVPlugin.h"
#import "CDVWebViewEngineProtocol.h"
-#ifdef __IPHONE_8_0
- #import <WebKit/WebKit.h>
-#else
- @protocol WKScriptMessageHandler
- @end
-#endif
-
-@protocol WKScriptMessageHandler;
-
-@interface CDVViewController : UIViewController <UIWebViewDelegate, CDVScreenOrientationDelegate, WKScriptMessageHandler>{
+@interface CDVViewController : UIViewController <UIWebViewDelegate, CDVScreenOrientationDelegate>{
@protected
id <CDVWebViewEngineProtocol> _webViewEngine;
@protected
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVViewController.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVViewController.m b/CordovaLib/Classes/CDVViewController.m
index 10c68ec..a76b6e7 100644
--- a/CordovaLib/Classes/CDVViewController.m
+++ b/CordovaLib/Classes/CDVViewController.m
@@ -18,17 +18,12 @@
*/
#import "CDV.h"
-#import "CDVCommandDelegateImpl.h"
-#import "CDVConfigParser.h"
-#import "CDVUserAgentUtil.h"
#import "CDVUIWebViewDelegate.h"
#import "NSDictionary+CordovaPreferences.h"
#import <objc/message.h>
#import <AVFoundation/AVFoundation.h>
-#define degreesToRadian(x) (M_PI * (x) / 180.0)
-
@interface CDVViewController () {
NSInteger _userAgentLockToken;
}
@@ -293,10 +288,6 @@
[self registerPlugin:[[CDVLocalStorage alloc] initWithWebView:self.webView] withClassName:NSStringFromClass([CDVLocalStorage class])];
}
- // TODO:
- // CDVWebViewPreferences* prefs = [[CDVWebViewPreferences alloc] initWithWebView:webView settings:self.settings];
- // [prefs update];
-
if ([self.startupPluginNames count] > 0) {
[CDVTimer start:@"TotalPluginStartup"];
@@ -448,12 +439,9 @@
self.webViewEngine = [[NSClassFromString(defaultWebViewEngineClass) alloc] initWithFrame:bounds];
}
- NSMutableDictionary* info = [NSMutableDictionary dictionaryWithCapacity:1];
- [info setValue:@{@"cordova" : self} forKey:kCDVWebViewEngineScriptMessageHandlers];
- [info setValue:self forKey:kCDVWebViewEngineUIWebViewDelegate];
- [info setValue:self.settings forKey:kCDVWebViewEngineWebViewPreferences];
-
- [self.webViewEngine updateWithInfo:info];
+ if ([self.webViewEngine isKindOfClass:[CDVPlugin class]]) {
+ [self registerPlugin:(CDVPlugin*)self.webViewEngine withClassName:webViewEngineClass];
+ }
return self.webViewEngine.engineWebView;
}
@@ -688,7 +676,7 @@
+ (NSString*)applicationDocumentsDirectory
{
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString* basePath = (([paths count] > 0) ? ([paths objectAtIndex:0]) : nil);
+ NSString* basePath = (([paths count] > 0) ? ([paths objectAtIndex : 0]) : nil);
return basePath;
}
@@ -905,33 +893,6 @@
[self processOpenUrl:url pageLoaded:NO];
}
-#pragma mark WKScriptMessageHandler implementation
-
-#ifdef __IPHONE_8_0
- - (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message
- {
- if (![message.name isEqualToString:@"cordova"]) {
- return;
- }
-
- NSArray* jsonEntry = message.body; // NSString:callbackId, NSString:service, NSString:action, NSArray:args
- CDVInvokedUrlCommand* command = [CDVInvokedUrlCommand commandFromJson:jsonEntry];
- CDV_EXEC_LOG(@"Exec(%@): Calling %@.%@", command.callbackId, command.className, command.methodName);
-
- if (![_commandQueue execute:command]) {
- #ifdef DEBUG
- NSString* commandJson = [jsonEntry JSONString];
- static NSUInteger maxLogLength = 1024;
- NSString* commandString = ([commandJson length] > maxLogLength) ?
- [NSString stringWithFormat:@"%@[...]", [commandJson substringToIndex:maxLogLength]] :
- commandJson;
-
- DLog(@"FAILED pluginJSON = %@", commandString);
- #endif
- }
- }
-#endif /* ifdef __IPHONE_8_0 */
-
// ///////////////////////
- (void)dealloc
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVWKWebViewEngine.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWKWebViewEngine.h b/CordovaLib/Classes/CDVWKWebViewEngine.h
index fde1d11..e138b84 100644
--- a/CordovaLib/Classes/CDVWKWebViewEngine.h
+++ b/CordovaLib/Classes/CDVWKWebViewEngine.h
@@ -17,11 +17,10 @@
under the License.
*/
-#import <Foundation/Foundation.h>
-#import "CDVWebViewEngineProtocol.h"
-#import "CDVPlugin.h"
+#import <WebKit/WebKit.h>
+#import "CDV.h"
-@interface CDVWKWebViewEngine : CDVPlugin <CDVWebViewEngineProtocol>
+@interface CDVWKWebViewEngine : CDVPlugin <CDVWebViewEngineProtocol, WKScriptMessageHandler>
@property (nonatomic, strong, readonly) id <WKUIDelegate> uiDelegate;
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVWKWebViewEngine.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWKWebViewEngine.m b/CordovaLib/Classes/CDVWKWebViewEngine.m
index 4907572..94ef0b2 100644
--- a/CordovaLib/Classes/CDVWKWebViewEngine.m
+++ b/CordovaLib/Classes/CDVWKWebViewEngine.m
@@ -19,10 +19,10 @@
#import "CDVWKWebViewEngine.h"
#import "CDVWKWebViewUIDelegate.h"
-#import "NSDictionary+CordovaPreferences.h"
#import <objc/message.h>
-#import <WebKit/WebKit.h>
+
+#define CDV_BRIDGE_NAME @"cordova"
@interface CDVWKWebViewEngine ()
@@ -45,6 +45,7 @@
self.uiDelegate = [[CDVWKWebViewUIDelegate alloc] initWithTitle:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleDisplayName"]];
WKUserContentController* userContentController = [[WKUserContentController alloc] init];
+ [userContentController addScriptMessageHandler:self name:CDV_BRIDGE_NAME];
WKWebViewConfiguration* configuration = [[WKWebViewConfiguration alloc] init];
configuration.userContentController = userContentController;
@@ -52,6 +53,7 @@
WKWebView* wkWebView = [[WKWebView alloc] initWithFrame:frame configuration:configuration];
wkWebView.UIDelegate = self.uiDelegate;
+
self.engineWebView = wkWebView;
NSLog(@"Using WKWebView");
@@ -60,6 +62,27 @@
return self;
}
+- (void)pluginInitialize
+{
+ // viewController would be available now. we attempt to set all possible delegates to it, by default
+
+ WKWebView* wkWebView = (WKWebView*)_engineWebView;
+
+ if ([self.viewController conformsToProtocol:@protocol(WKUIDelegate)]) {
+ wkWebView.UIDelegate = (id <WKUIDelegate>)self.viewController;
+ }
+
+ if ([self.viewController conformsToProtocol:@protocol(WKNavigationDelegate)]) {
+ wkWebView.navigationDelegate = (id <WKNavigationDelegate>)self.viewController;
+ }
+
+ if ([self.viewController conformsToProtocol:@protocol(WKScriptMessageHandler)]) {
+ [wkWebView.configuration.userContentController addScriptMessageHandler:(id < WKScriptMessageHandler >)self.viewController name:@"cordova"];
+ }
+
+ [self updateSettings:self.commandDelegate.settings];
+}
+
// We implement this here because certain versions of iOS 8 do not implement this
// in WKWebView, so we need to test for this during runtime.
// It is speculated that this selector will be available in iOS 8.2 for WKWebView
@@ -70,12 +93,12 @@
// UIKit operations have to be on the main thread. This method does not need to be synchronous
dispatch_async(dispatch_get_main_queue(), ^{
- if ([_engineWebView respondsToSelector:wk_sel] && [[url scheme] isEqualToString:@"file"]) {
- ((id (*)(id, SEL, id, id))objc_msgSend)(_engineWebView, wk_sel, url, readAccessURL);
- } else {
- [weakSelf loadRequest:[NSURLRequest requestWithURL:url]];
- }
- });
+ if ([_engineWebView respondsToSelector:wk_sel] && [[url scheme] isEqualToString:@"file"]) {
+ ((id (*)(id, SEL, id, id))objc_msgSend)(_engineWebView, wk_sel, url, readAccessURL);
+ } else {
+ [weakSelf loadRequest:[NSURLRequest requestWithURL:url]];
+ }
+ });
}
- (void)updateSettings:(NSDictionary*)settings
@@ -136,4 +159,31 @@
return _engineWebView;
}
+#pragma mark WKScriptMessageHandler implementation
+
+- (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message
+{
+ if (![message.name isEqualToString:CDV_BRIDGE_NAME]) {
+ return;
+ }
+
+ CDVViewController* vc = (CDVViewController*)self.viewController;
+
+ NSArray* jsonEntry = message.body; // NSString:callbackId, NSString:service, NSString:action, NSArray:args
+ CDVInvokedUrlCommand* command = [CDVInvokedUrlCommand commandFromJson:jsonEntry];
+ CDV_EXEC_LOG(@"Exec(%@): Calling %@.%@", command.callbackId, command.className, command.methodName);
+
+ if (![vc.commandQueue execute:command]) {
+#ifdef DEBUG
+ NSString* commandJson = [jsonEntry JSONString];
+ static NSUInteger maxLogLength = 1024;
+ NSString* commandString = ([commandJson length] > maxLogLength) ?
+ [NSString stringWithFormat : @"%@[...]", [commandJson substringToIndex:maxLogLength]] :
+ commandJson;
+
+ DLog(@"FAILED pluginJSON = %@", commandString);
+#endif
+ }
+}
+
@end
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVWKWebViewUIDelegate.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWKWebViewUIDelegate.h b/CordovaLib/Classes/CDVWKWebViewUIDelegate.h
index f8971a9..33a179b 100644
--- a/CordovaLib/Classes/CDVWKWebViewUIDelegate.h
+++ b/CordovaLib/Classes/CDVWKWebViewUIDelegate.h
@@ -17,7 +17,6 @@
under the License.
*/
-#import <Foundation/Foundation.h>
#import <WebKit/WebKit.h>
@interface CDVWKWebViewUIDelegate : NSObject <WKUIDelegate>
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVWKWebViewUIDelegate.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWKWebViewUIDelegate.m b/CordovaLib/Classes/CDVWKWebViewUIDelegate.m
index e3024b0..c9e5ce9 100644
--- a/CordovaLib/Classes/CDVWKWebViewUIDelegate.m
+++ b/CordovaLib/Classes/CDVWKWebViewUIDelegate.m
@@ -17,110 +17,107 @@
under the License.
*/
-#ifdef __IPHONE_8_0
-
#import "CDVWKWebViewUIDelegate.h"
- @implementation CDVWKWebViewUIDelegate
-
- - (instancetype)initWithTitle:(NSString*)title
- {
- self = [super init];
- if (self) {
- self.title = title;
- }
+@implementation CDVWKWebViewUIDelegate
- return self;
+- (instancetype)initWithTitle:(NSString*)title
+{
+ self = [super init];
+ if (self) {
+ self.title = title;
}
- - (void) webView:(WKWebView*)webView runJavaScriptAlertPanelWithMessage:(NSString*)message
- initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void (^)())completionHandler
- {
- UIAlertController* alert = [UIAlertController alertControllerWithTitle:self.title
- message:message
- preferredStyle:UIAlertControllerStyleAlert];
+ return self;
+}
+
+- (void) webView:(WKWebView*)webView runJavaScriptAlertPanelWithMessage:(NSString*)message
+ initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void (^)())completionHandler
+{
+ UIAlertController* alert = [UIAlertController alertControllerWithTitle:self.title
+ message:message
+ preferredStyle:UIAlertControllerStyleAlert];
+
+ UIAlertAction* ok = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"OK")
+ style:UIAlertActionStyleDefault
+ handler:^(UIAlertAction* action)
+ {
+ completionHandler();
+ [alert dismissViewControllerAnimated:YES completion:nil];
+ }];
- UIAlertAction* ok = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"OK")
- style:UIAlertActionStyleDefault
- handler:^(UIAlertAction* action)
- {
- completionHandler();
- [alert dismissViewControllerAnimated:YES completion:nil];
- }];
+ [alert addAction:ok];
- [alert addAction:ok];
+ UIViewController* rootController = [UIApplication sharedApplication].delegate.window.rootViewController;
- UIViewController* rootController = [UIApplication sharedApplication].delegate.window.rootViewController;
+ [rootController presentViewController:alert animated:YES completion:nil];
+}
- [rootController presentViewController:alert animated:YES completion:nil];
- }
+- (void) webView:(WKWebView*)webView runJavaScriptConfirmPanelWithMessage:(NSString*)message
+ initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void (^)(BOOL result))completionHandler
+{
+ UIAlertController* alert = [UIAlertController alertControllerWithTitle:self.title
+ message:message
+ preferredStyle:UIAlertControllerStyleAlert];
+
+ UIAlertAction* ok = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"OK")
+ style:UIAlertActionStyleDefault
+ handler:^(UIAlertAction* action)
+ {
+ completionHandler(YES);
+ [alert dismissViewControllerAnimated:YES completion:nil];
+ }];
- - (void) webView:(WKWebView*)webView runJavaScriptConfirmPanelWithMessage:(NSString*)message
- initiatedByFrame:(WKFrameInfo*)frame completionHandler:(void (^)(BOOL result))completionHandler
- {
- UIAlertController* alert = [UIAlertController alertControllerWithTitle:self.title
- message:message
- preferredStyle:UIAlertControllerStyleAlert];
+ [alert addAction:ok];
- UIAlertAction* ok = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"OK")
+ UIAlertAction* cancel = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", @"Cancel")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction* action)
- {
- completionHandler(YES);
- [alert dismissViewControllerAnimated:YES completion:nil];
- }];
-
- [alert addAction:ok];
-
- UIAlertAction* cancel = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", @"Cancel")
- style:UIAlertActionStyleDefault
- handler:^(UIAlertAction* action)
- {
- completionHandler(NO);
- [alert dismissViewControllerAnimated:YES completion:nil];
- }];
- [alert addAction:cancel];
-
- UIViewController* rootController = [UIApplication sharedApplication].delegate.window.rootViewController;
-
- [rootController presentViewController:alert animated:YES completion:nil];
- }
+ {
+ completionHandler(NO);
+ [alert dismissViewControllerAnimated:YES completion:nil];
+ }];
+ [alert addAction:cancel];
+
+ UIViewController* rootController = [UIApplication sharedApplication].delegate.window.rootViewController;
+
+ [rootController presentViewController:alert animated:YES completion:nil];
+}
+
+- (void) webView:(WKWebView*)webView runJavaScriptTextInputPanelWithPrompt:(NSString*)prompt
+ defaultText:(NSString*)defaultText initiatedByFrame:(WKFrameInfo*)frame
+ completionHandler:(void (^)(NSString* result))completionHandler
+{
+ UIAlertController* alert = [UIAlertController alertControllerWithTitle:self.title
+ message:prompt
+ preferredStyle:UIAlertControllerStyleAlert];
+
+ UIAlertAction* ok = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"OK")
+ style:UIAlertActionStyleDefault
+ handler:^(UIAlertAction* action)
+ {
+ completionHandler(((UITextField*)alert.textFields[0]).text);
+ [alert dismissViewControllerAnimated:YES completion:nil];
+ }];
- - (void) webView:(WKWebView*)webView runJavaScriptTextInputPanelWithPrompt:(NSString*)prompt
- defaultText:(NSString*)defaultText initiatedByFrame:(WKFrameInfo*)frame
- completionHandler:(void (^)(NSString* result))completionHandler
- {
- UIAlertController* alert = [UIAlertController alertControllerWithTitle:self.title
- message:prompt
- preferredStyle:UIAlertControllerStyleAlert];
+ [alert addAction:ok];
- UIAlertAction* ok = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK", @"OK")
+ UIAlertAction* cancel = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", @"Cancel")
style:UIAlertActionStyleDefault
handler:^(UIAlertAction* action)
- {
- completionHandler(((UITextField*)alert.textFields[0]).text);
- [alert dismissViewControllerAnimated:YES completion:nil];
- }];
-
- [alert addAction:ok];
-
- UIAlertAction* cancel = [UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", @"Cancel")
- style:UIAlertActionStyleDefault
- handler:^(UIAlertAction* action)
- {
- completionHandler(nil);
- [alert dismissViewControllerAnimated:YES completion:nil];
- }];
- [alert addAction:cancel];
-
- [alert addTextFieldWithConfigurationHandler:^(UITextField* textField) {
- textField.text = defaultText;
+ {
+ completionHandler(nil);
+ [alert dismissViewControllerAnimated:YES completion:nil];
}];
+ [alert addAction:cancel];
- UIViewController* rootController = [UIApplication sharedApplication].delegate.window.rootViewController;
+ [alert addTextFieldWithConfigurationHandler:^(UITextField* textField) {
+ textField.text = defaultText;
+ }];
- [rootController presentViewController:alert animated:YES completion:nil];
- }
+ UIViewController* rootController = [UIApplication sharedApplication].delegate.window.rootViewController;
+
+ [rootController presentViewController:alert animated:YES completion:nil];
+}
- @end
-#endif /* ifdef __IPHONE_8_0 */
+@end
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/af1ec2c4/CordovaLib/Classes/CDVWebViewEngineProtocol.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWebViewEngineProtocol.h b/CordovaLib/Classes/CDVWebViewEngineProtocol.h
index 0c15c63..f560f1d 100644
--- a/CordovaLib/Classes/CDVWebViewEngineProtocol.h
+++ b/CordovaLib/Classes/CDVWebViewEngineProtocol.h
@@ -17,7 +17,6 @@
under the License.
*/
-#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#define kCDVWebViewEngineScriptMessageHandlers @"kCDVWebViewEngineScriptMessageHandlers"
@@ -26,7 +25,7 @@
#define kCDVWebViewEngineWKUIDelegate @"kCDVWebViewEngineWKUIDelegate"
#define kCDVWebViewEngineWebViewPreferences @"kCDVWebViewEngineWebViewPreferences"
-@protocol CDVWebViewEngineProtocol
+@protocol CDVWebViewEngineProtocol <NSObject>
@property (nonatomic, strong, readonly) UIView* engineWebView;
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org