Modularized CDVWebViewPreferences.

Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/9ec77c09
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/9ec77c09
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/9ec77c09

Branch: refs/heads/4.0.x
Commit: 9ec77c098156d10b91771472b89cd6bc7f16fb4a
Parents: 4691066
Author: Shazron Abdullah <shaz...@apache.org>
Authored: Mon Nov 3 00:40:48 2014 -0800
Committer: Shazron Abdullah <shaz...@apache.org>
Committed: Mon Nov 3 00:40:48 2014 -0800

----------------------------------------------------------------------
 CordovaLib/Classes/CDVUIWebViewPreferences.h    |  29 ++
 CordovaLib/Classes/CDVUIWebViewPreferences.m    | 103 +++++++
 CordovaLib/Classes/CDVViewController.m          |   4 +-
 CordovaLib/Classes/CDVWKWebViewPreferences.h    |  29 ++
 CordovaLib/Classes/CDVWKWebViewPreferences.m    |  48 ++++
 CordovaLib/Classes/CDVWebViewPreferences.h      |  16 +-
 CordovaLib/Classes/CDVWebViewPreferences.m      | 276 +++----------------
 CordovaLib/CordovaLib.xcodeproj/project.pbxproj |  28 +-
 8 files changed, 280 insertions(+), 253 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/9ec77c09/CordovaLib/Classes/CDVUIWebViewPreferences.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVUIWebViewPreferences.h 
b/CordovaLib/Classes/CDVUIWebViewPreferences.h
new file mode 100644
index 0000000..dd5caf9
--- /dev/null
+++ b/CordovaLib/Classes/CDVUIWebViewPreferences.h
@@ -0,0 +1,29 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+#import "CDVWebViewPreferences.h"
+#import <UIKit/UIKit.h>
+
+@interface CDVUIWebViewPreferences : CDVWebViewPreferences
+
+@property (nonatomic, weak) UIWebView* webView;
+
+- (instancetype)initWithWebView:(UIWebView*)webView 
settings:(NSDictionary*)settings;
+
+@end

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/9ec77c09/CordovaLib/Classes/CDVUIWebViewPreferences.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVUIWebViewPreferences.m 
b/CordovaLib/Classes/CDVUIWebViewPreferences.m
new file mode 100644
index 0000000..5eae9b1
--- /dev/null
+++ b/CordovaLib/Classes/CDVUIWebViewPreferences.m
@@ -0,0 +1,103 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+#import "CDVUIWebViewPreferences.h"
+
+@implementation CDVUIWebViewPreferences
+
+- (instancetype)initWithWebView:(UIWebView*)webView 
settings:(NSDictionary*)settings
+{
+    self = [super initWithSettings:settings];
+    if (self) {
+        self.webView = webView;
+    }
+
+    return self;
+}
+
+- (void)update
+{
+    self.webView.scalesPageToFit = [self 
boolSettingForKey:@"EnableViewportScale" defaultValue:NO];
+    self.webView.allowsInlineMediaPlayback = [self 
boolSettingForKey:@"AllowInlineMediaPlayback" defaultValue:NO];
+    self.webView.mediaPlaybackRequiresUserAction = [self 
boolSettingForKey:@"MediaPlaybackRequiresUserAction" defaultValue:YES];
+    self.webView.mediaPlaybackAllowsAirPlay = [self 
boolSettingForKey:@"MediaPlaybackAllowsAirPlay" defaultValue:YES];
+    self.webView.keyboardDisplayRequiresUserAction = [self 
boolSettingForKey:@"KeyboardDisplayRequiresUserAction" defaultValue:YES];
+    self.webView.suppressesIncrementalRendering = [self 
boolSettingForKey:@"SuppressesIncrementalRendering" defaultValue:NO];
+    self.webView.gapBetweenPages = [self floatSettingForKey:@"GapBetweenPages" 
defaultValue:0.0];
+    self.webView.pageLength = [self floatSettingForKey:@"PageLength" 
defaultValue:0.0];
+
+    id prefObj = nil;
+
+    // By default, DisallowOverscroll is false (thus bounce is allowed)
+    BOOL bounceAllowed = !([self boolSettingForKey:@"DisallowOverscroll" 
defaultValue:NO]);
+
+    // prevent webView from bouncing
+    if (!bounceAllowed) {
+        if ([self.webView respondsToSelector:@selector(scrollView)]) {
+            ((UIScrollView*)[self.webView scrollView]).bounces = NO;
+        } else {
+            for (id subview in self.webView.subviews) {
+                if ([[subview class] isSubclassOfClass:[UIScrollView class]]) {
+                    ((UIScrollView*)subview).bounces = NO;
+                }
+            }
+        }
+    }
+
+    NSString* decelerationSetting = [self 
settingForKey:@"UIWebViewDecelerationSpeed"];
+    if (![@"fast" isEqualToString : decelerationSetting]) {
+        [self.webView.scrollView 
setDecelerationRate:UIScrollViewDecelerationRateNormal];
+    }
+
+    NSInteger paginationBreakingMode = 0; // default - 
UIWebPaginationBreakingModePage
+    prefObj = [self settingForKey:@"PaginationBreakingMode"];
+    if (prefObj != nil) {
+        NSArray* validValues = @[@"page", @"column"];
+        NSString* prefValue = [validValues objectAtIndex:0];
+
+        if ([prefObj isKindOfClass:[NSString class]]) {
+            prefValue = prefObj;
+        }
+
+        paginationBreakingMode = [validValues indexOfObject:[prefValue 
lowercaseString]];
+        if (paginationBreakingMode == NSNotFound) {
+            paginationBreakingMode = 0;
+        }
+    }
+    self.webView.paginationBreakingMode = paginationBreakingMode;
+
+    NSInteger paginationMode = 0; // default - UIWebPaginationModeUnpaginated
+    prefObj = [self settingForKey:@"PaginationMode"];
+    if (prefObj != nil) {
+        NSArray* validValues = @[@"unpaginated", @"lefttoright", 
@"toptobottom", @"bottomtotop", @"righttoleft"];
+        NSString* prefValue = [validValues objectAtIndex:0];
+
+        if ([prefObj isKindOfClass:[NSString class]]) {
+            prefValue = prefObj;
+        }
+
+        paginationMode = [validValues indexOfObject:[prefValue 
lowercaseString]];
+        if (paginationMode == NSNotFound) {
+            paginationMode = 0;
+        }
+    }
+    self.webView.paginationMode = paginationMode;
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/9ec77c09/CordovaLib/Classes/CDVViewController.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVViewController.m 
b/CordovaLib/Classes/CDVViewController.m
index 3456c17..be31591 100644
--- a/CordovaLib/Classes/CDVViewController.m
+++ b/CordovaLib/Classes/CDVViewController.m
@@ -299,8 +299,8 @@
         [self registerPlugin:[[CDVLocalStorage alloc] 
initWithWebView:self.webView] withClassName:NSStringFromClass([CDVLocalStorage 
class])];
     }
 
-    CDVWebViewPreferences* prefs = [[CDVWebViewPreferences alloc] 
initWithWebView:webView];
-    [prefs updateSettings:self.settings];
+    CDVWebViewPreferences* prefs = [[CDVWebViewPreferences alloc] 
initWithWebView:webView settings:self.settings];
+    [prefs update];
 
     if ([self.startupPluginNames count] > 0) {
         [CDVTimer start:@"TotalPluginStartup"];

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/9ec77c09/CordovaLib/Classes/CDVWKWebViewPreferences.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWKWebViewPreferences.h 
b/CordovaLib/Classes/CDVWKWebViewPreferences.h
new file mode 100644
index 0000000..ffa357a
--- /dev/null
+++ b/CordovaLib/Classes/CDVWKWebViewPreferences.h
@@ -0,0 +1,29 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+#import "CDVWebViewPreferences.h"
+#import <WebKit/WebKit.h>
+
+@interface CDVWKWebViewPreferences : CDVWebViewPreferences
+
+@property (nonatomic, weak) WKWebView* webView;
+
+- (instancetype)initWithWebView:(WKWebView*)webView 
settings:(NSDictionary*)settings;
+
+@end

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/9ec77c09/CordovaLib/Classes/CDVWKWebViewPreferences.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWKWebViewPreferences.m 
b/CordovaLib/Classes/CDVWKWebViewPreferences.m
new file mode 100644
index 0000000..6cf1a78
--- /dev/null
+++ b/CordovaLib/Classes/CDVWKWebViewPreferences.m
@@ -0,0 +1,48 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+#import "CDVWKWebViewPreferences.h"
+
+@implementation CDVWKWebViewPreferences
+
+- (instancetype)initWithWebView:(WKWebView*)webView 
settings:(NSDictionary*)settings
+{
+    self = [super initWithSettings:settings];
+    if (self) {
+        self.webView = webView;
+    }
+
+    return self;
+}
+
+- (void)update
+{
+    self.webView.configuration.preferences.minimumFontSize = [self 
floatSettingForKey:@"MinimumFontSize" defaultValue:0.0];
+    self.webView.configuration.allowsInlineMediaPlayback = [self 
boolSettingForKey:@"AllowInlineMediaPlayback" defaultValue:NO];
+    self.webView.configuration.mediaPlaybackRequiresUserAction = [self 
boolSettingForKey:@"MediaPlaybackRequiresUserAction" defaultValue:YES];
+    self.webView.configuration.suppressesIncrementalRendering = [self 
boolSettingForKey:@"SuppressesIncrementalRendering" defaultValue:NO];
+    self.webView.configuration.mediaPlaybackAllowsAirPlay = [self 
boolSettingForKey:@"MediaPlaybackAllowsAirPlay" defaultValue:YES];
+
+    /*
+     self.webView.configuration.preferences.javaScriptEnabled = [self 
boolSettingForKey:@"JavaScriptEnabled" default:YES];
+     
self.webView.configuration.preferences.javaScriptCanOpenWindowsAutomatically = 
[self boolSettingForKey:@"JavaScriptCanOpenWindowsAutomatically" default:NO];
+     */
+}
+
+@end

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/9ec77c09/CordovaLib/Classes/CDVWebViewPreferences.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWebViewPreferences.h 
b/CordovaLib/Classes/CDVWebViewPreferences.h
index 5058eef..a57748e 100644
--- a/CordovaLib/Classes/CDVWebViewPreferences.h
+++ b/CordovaLib/Classes/CDVWebViewPreferences.h
@@ -20,13 +20,17 @@
 #import <Foundation/Foundation.h>
 #import <UIKit/UIKit.h>
 
-@interface CDVWebViewPreferences: NSObject {
-    @private
-    __weak UIView* _webView;
-}
+@interface CDVWebViewPreferences : NSObject
 
-- (instancetype) initWithWebView:(UIView*)webView;
-- (void) updateSettings:(NSDictionary*)settings;
+@property (nonatomic, strong) NSDictionary* settings;
 
+- (instancetype)initWithWebView:(UIView*)webView 
settings:(NSDictionary*)settings;
+- (instancetype)initWithSettings:(NSDictionary*)settings;
+
+- (void)update;
+
+- (id)settingForKey:(NSString*)key;
+- (BOOL)boolSettingForKey:(NSString*)key defaultValue:(BOOL)defaultValue;
+- (CGFloat)floatSettingForKey:(NSString*)key 
defaultValue:(CGFloat)defaultValue;
 
 @end

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/9ec77c09/CordovaLib/Classes/CDVWebViewPreferences.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVWebViewPreferences.m 
b/CordovaLib/Classes/CDVWebViewPreferences.m
index eb55c9d..4ca67cd 100644
--- a/CordovaLib/Classes/CDVWebViewPreferences.m
+++ b/CordovaLib/Classes/CDVWebViewPreferences.m
@@ -17,282 +17,72 @@
  under the License.
  */
 #import "CDVWebViewPreferences.h"
+#import "CDVWKWebViewPreferences.h"
+#import "CDVUIWebViewPreferences.h"
 #import "CDVAvailability.h"
 #import <objc/message.h>
-
-#ifdef __IPHONE_8_0
-    #import <WebKit/WebKit.h>
-#endif /* ifdef __IPHONE_8_0 */
+#import <WebKit/WebKit.h>
 
 @implementation CDVWebViewPreferences
 
-- (instancetype)initWithWebView:(UIView*)webView
+- (instancetype)initWithWebView:(UIView*)webView 
settings:(NSDictionary*)settings
 {
     self = [super init];
     if (self) {
-        Class wk_class = NSClassFromString(@"WKWebView");
-        if (!([webView isKindOfClass:wk_class] || [webView 
isKindOfClass:[UIWebView class]])) {
+        if ([webView isKindOfClass:[WKWebView class]]) {
+            return [[CDVWKWebViewPreferences alloc] 
initWithWebView:(WKWebView*)webView settings:settings];
+        } else if ([webView isKindOfClass:[UIWebView class]]) {
+            return [[CDVUIWebViewPreferences alloc] 
initWithWebView:(UIWebView*)webView settings:settings];
+        } else {
             return nil;
         }
-        _webView = webView;
     }
 
     return self;
 }
 
-- (void)updateSettings:(NSDictionary*)settings
+- (instancetype)initWithSettings:(NSDictionary*)settings
 {
-    Class wk_class = NSClassFromString(@"WKWebView");
-    SEL ui_sel = NSSelectorFromString(@"updateUIWebView:settings:");
-    SEL wk_sel = NSSelectorFromString(@"updateWKWebView:settings:");
-
-    __weak id weakSelf = self;
+    self = [super init];
+    if (self) {
+        self.settings = settings;
+    }
 
-    dispatch_block_t invoke = ^(void) {
-        if ([_webView isKindOfClass:[UIWebView class]] && [weakSelf 
respondsToSelector:ui_sel]) {
-            ((void (*)(id, SEL, id, id))objc_msgSend)(weakSelf, ui_sel, 
_webView, settings);
-        } else if ([_webView isKindOfClass:wk_class] && [weakSelf 
respondsToSelector:wk_sel]) {
-            ((void (*)(id, SEL, id, id))objc_msgSend)(weakSelf, wk_sel, 
_webView, settings);
-        }
-    };
+    return self;
+}
 
-    // UIKit operations have to be on the main thread.
-    // perform a synchronous invoke on the main thread without deadlocking
-    if ([NSThread isMainThread]) {
-        invoke();
-    } else {
-        dispatch_sync(dispatch_get_main_queue(), invoke);
-    }
+- (void)update
+{
+    [NSException raise:@"Invoked abstract method" format:@"Invoked abstract 
method"];
 }
 
-- (id)cordovaSettings:(NSDictionary*)settings forKey:(NSString*)key
+- (id)settingForKey:(NSString*)key
 {
-    return [settings objectForKey:[key lowercaseString]];
+    return [self.settings objectForKey:[key lowercaseString]];
 }
 
-- (void)updateUIWebView:(UIWebView*)theWebView settings:(NSDictionary*)settings
+- (BOOL)boolSettingForKey:(NSString*)key defaultValue:(BOOL)defaultValue
 {
-    BOOL scalesPageToFit = NO; // default
-    id prefObj = [self cordovaSettings:settings forKey:@"EnableViewportScale"];
+    BOOL value = defaultValue;
+    id prefObj = [self settingForKey:key];
 
     if (prefObj != nil) {
-        scalesPageToFit = [(NSNumber*)prefObj boolValue];
+        value = [(NSNumber*)prefObj boolValue];
     }
-    theWebView.scalesPageToFit = scalesPageToFit;
 
-    BOOL allowInlineMediaPlayback = NO; // default
-    prefObj = [self cordovaSettings:settings 
forKey:@"AllowInlineMediaPlayback"];
-    if (prefObj != nil) {
-        allowInlineMediaPlayback = [(NSNumber*)prefObj boolValue];
-    }
-    theWebView.allowsInlineMediaPlayback = allowInlineMediaPlayback;
+    return value;
+}
 
-    BOOL mediaPlaybackRequiresUserAction = YES;  // default
-    prefObj = [self cordovaSettings:settings 
forKey:@"MediaPlaybackRequiresUserAction"];
-    if (prefObj != nil) {
-        mediaPlaybackRequiresUserAction = [(NSNumber*)prefObj boolValue];
-    }
-    theWebView.mediaPlaybackRequiresUserAction = 
mediaPlaybackRequiresUserAction;
+- (CGFloat)floatSettingForKey:(NSString*)key defaultValue:(CGFloat)defaultValue
+{
+    CGFloat value = defaultValue;
+    id prefObj = [self settingForKey:key];
 
-    BOOL mediaPlaybackAllowsAirPlay = YES;  // default
-    prefObj = [self cordovaSettings:settings 
forKey:@"MediaPlaybackAllowsAirPlay"];
     if (prefObj != nil) {
-        mediaPlaybackAllowsAirPlay = [(NSNumber*)prefObj boolValue];
-    }
-    theWebView.mediaPlaybackAllowsAirPlay = mediaPlaybackAllowsAirPlay;
-
-    // By default, overscroll bouncing is allowed.
-    // UIWebViewBounce has been renamed to DisallowOverscroll, but both are 
checked.
-    BOOL bounceAllowed = YES;
-    NSNumber* disallowOverscroll = [self cordovaSettings:settings 
forKey:@"DisallowOverscroll"];
-    if (disallowOverscroll == nil) {
-        NSNumber* bouncePreference = [self cordovaSettings:settings 
forKey:@"UIWebViewBounce"];
-        bounceAllowed = (bouncePreference == nil || [bouncePreference 
boolValue]);
-    } else {
-        bounceAllowed = ![disallowOverscroll boolValue];
+        value = [prefObj floatValue];
     }
 
-    // prevent webView from bouncing
-    // based on the DisallowOverscroll/UIWebViewBounce key in config.xml
-    if (!bounceAllowed) {
-        if ([theWebView respondsToSelector:@selector(scrollView)]) {
-            ((UIScrollView*)[theWebView scrollView]).bounces = NO;
-        } else {
-            for (id subview in theWebView.subviews) {
-                if ([[subview class] isSubclassOfClass:[UIScrollView class]]) {
-                    ((UIScrollView*)subview).bounces = NO;
-                }
-            }
-        }
-    }
-
-    NSString* decelerationSetting = [self cordovaSettings:settings 
forKey:@"UIWebViewDecelerationSpeed"];
-    if (![@"fast" isEqualToString : decelerationSetting]) {
-        [theWebView.scrollView 
setDecelerationRate:UIScrollViewDecelerationRateNormal];
-    }
-
-    /*
-     * iOS 6.0 UIWebView properties
-     */
-    if (IsAtLeastiOSVersion(@"6.0")) {
-        BOOL keyboardDisplayRequiresUserAction = YES; // 
KeyboardDisplayRequiresUserAction - defaults to YES
-        if ([self cordovaSettings:settings 
forKey:@"KeyboardDisplayRequiresUserAction"] != nil) {
-            if ([self cordovaSettings:settings 
forKey:@"KeyboardDisplayRequiresUserAction"]) {
-                keyboardDisplayRequiresUserAction = [(NSNumber*)[self 
cordovaSettings:settings forKey:@"KeyboardDisplayRequiresUserAction"] 
boolValue];
-            }
-        }
-
-        // property check for compiling under iOS < 6
-        if ([theWebView 
respondsToSelector:@selector(setKeyboardDisplayRequiresUserAction:)]) {
-            [theWebView setValue:[NSNumber 
numberWithBool:keyboardDisplayRequiresUserAction] 
forKey:@"keyboardDisplayRequiresUserAction"];
-        }
-
-        BOOL suppressesIncrementalRendering = NO; // 
SuppressesIncrementalRendering - defaults to NO
-        if ([self cordovaSettings:settings 
forKey:@"SuppressesIncrementalRendering"] != nil) {
-            if ([self cordovaSettings:settings 
forKey:@"SuppressesIncrementalRendering"]) {
-                suppressesIncrementalRendering = [(NSNumber*)[self 
cordovaSettings:settings forKey:@"SuppressesIncrementalRendering"] boolValue];
-            }
-        }
-
-        // property check for compiling under iOS < 6
-        if ([theWebView 
respondsToSelector:@selector(setSuppressesIncrementalRendering:)]) {
-            [theWebView setValue:[NSNumber 
numberWithBool:suppressesIncrementalRendering] 
forKey:@"suppressesIncrementalRendering"];
-        }
-    }
-
-    /*
-     * iOS 7.0 UIWebView properties
-     */
-    if (IsAtLeastiOSVersion(@"7.0")) {
-        SEL ios7sel = nil;
-        id prefObj = nil;
-
-        CGFloat gapBetweenPages = 0.0; // default
-        prefObj = [self cordovaSettings:settings forKey:@"GapBetweenPages"];
-        if (prefObj != nil) {
-            gapBetweenPages = [prefObj floatValue];
-        }
-
-        // property check for compiling under iOS < 7
-        ios7sel = NSSelectorFromString(@"setGapBetweenPages:");
-        if ([theWebView respondsToSelector:ios7sel]) {
-            [theWebView setValue:[NSNumber numberWithFloat:gapBetweenPages] 
forKey:@"gapBetweenPages"];
-        }
-
-        CGFloat pageLength = 0.0; // default
-        prefObj = [self cordovaSettings:settings forKey:@"PageLength"];
-        if (prefObj != nil) {
-            pageLength = [[self cordovaSettings:settings forKey:@"PageLength"] 
floatValue];
-        }
-
-        // property check for compiling under iOS < 7
-        ios7sel = NSSelectorFromString(@"setPageLength:");
-        if ([theWebView respondsToSelector:ios7sel]) {
-            [theWebView setValue:[NSNumber numberWithBool:pageLength] 
forKey:@"pageLength"];
-        }
-
-        NSInteger paginationBreakingMode = 0; // default - 
UIWebPaginationBreakingModePage
-        prefObj = [self cordovaSettings:settings 
forKey:@"PaginationBreakingMode"];
-        if (prefObj != nil) {
-            NSArray* validValues = @[@"page", @"column"];
-            NSString* prefValue = [validValues objectAtIndex:0];
-
-            if ([prefObj isKindOfClass:[NSString class]]) {
-                prefValue = prefObj;
-            }
-
-            paginationBreakingMode = [validValues indexOfObject:[prefValue 
lowercaseString]];
-            if (paginationBreakingMode == NSNotFound) {
-                paginationBreakingMode = 0;
-            }
-        }
-
-        // property check for compiling under iOS < 7
-        ios7sel = NSSelectorFromString(@"setPaginationBreakingMode:");
-        if ([theWebView respondsToSelector:ios7sel]) {
-            [theWebView setValue:[NSNumber 
numberWithInteger:paginationBreakingMode] forKey:@"paginationBreakingMode"];
-        }
-
-        NSInteger paginationMode = 0; // default - 
UIWebPaginationModeUnpaginated
-        prefObj = [self cordovaSettings:settings forKey:@"PaginationMode"];
-        if (prefObj != nil) {
-            NSArray* validValues = @[@"unpaginated", @"lefttoright", 
@"toptobottom", @"bottomtotop", @"righttoleft"];
-            NSString* prefValue = [validValues objectAtIndex:0];
-
-            if ([prefObj isKindOfClass:[NSString class]]) {
-                prefValue = prefObj;
-            }
-
-            paginationMode = [validValues indexOfObject:[prefValue 
lowercaseString]];
-            if (paginationMode == NSNotFound) {
-                paginationMode = 0;
-            }
-        }
-
-        // property check for compiling under iOS < 7
-        ios7sel = NSSelectorFromString(@"setPaginationMode:");
-        if ([theWebView respondsToSelector:ios7sel]) {
-            [theWebView setValue:[NSNumber numberWithInteger:paginationMode] 
forKey:@"paginationMode"];
-        }
-    }
+    return value;
 }
 
-#ifdef __IPHONE_8_0
-
-    - (void)updateWKWebView:(WKWebView*)theWebView 
settings:(NSDictionary*)settings
-    {
-        id prefObj = nil;
-
-        CGFloat minimumFontSize = 0.0; // default
-
-        prefObj = [self cordovaSettings:settings forKey:@"MinimumFontSize"];
-        if (prefObj != nil) {
-            minimumFontSize = [[self cordovaSettings:settings 
forKey:@"MinimumFontSize"] floatValue];
-        }
-        theWebView.configuration.preferences.minimumFontSize = minimumFontSize;
-
-        BOOL allowInlineMediaPlayback = NO; // default
-        prefObj = [self cordovaSettings:settings 
forKey:@"AllowInlineMediaPlayback"];
-        if (prefObj != nil) {
-            allowInlineMediaPlayback = [(NSNumber*)prefObj boolValue];
-        }
-        theWebView.configuration.allowsInlineMediaPlayback = 
allowInlineMediaPlayback;
-
-        BOOL mediaPlaybackRequiresUserAction = YES;  // default
-        prefObj = [self cordovaSettings:settings 
forKey:@"MediaPlaybackRequiresUserAction"];
-        if (prefObj != nil) {
-            mediaPlaybackRequiresUserAction = [(NSNumber*)prefObj boolValue];
-        }
-        theWebView.configuration.mediaPlaybackRequiresUserAction = 
mediaPlaybackRequiresUserAction;
-
-        BOOL suppressesIncrementalRendering = NO; // default
-        prefObj = [self cordovaSettings:settings 
forKey:@"SuppressesIncrementalRendering"];
-        if (prefObj != nil) {
-            suppressesIncrementalRendering = [(NSNumber*)prefObj boolValue];
-        }
-        theWebView.configuration.suppressesIncrementalRendering = 
suppressesIncrementalRendering;
-
-        BOOL mediaPlaybackAllowsAirPlay = YES;  // default
-        prefObj = [self cordovaSettings:settings 
forKey:@"MediaPlaybackAllowsAirPlay"];
-        if (prefObj != nil) {
-            mediaPlaybackAllowsAirPlay = [(NSNumber*)prefObj boolValue];
-        }
-        theWebView.configuration.mediaPlaybackAllowsAirPlay = 
mediaPlaybackAllowsAirPlay;
-
-        /*
-        BOOL javaScriptEnabled = YES;  // default value
-        if ([self cordovaSettings:settings forKey:@"JavaScriptEnabled"]) {
-            javaScriptEnabled = [(NSNumber*)[self cordovaSettings:settings 
forKey:@"JavaScriptEnabled"] boolValue];
-        }
-        theWebView.configuration.preferences.javaScriptEnabled = 
javaScriptEnabled;
-
-        BOOL javaScriptCanOpenWindowsAutomatically = NO;  // default value
-        if ([self cordovaSettings:settings forKey:@"JavaScriptEnabled"]) {
-            javaScriptCanOpenWindowsAutomatically = [(NSNumber*)[self 
cordovaSettings:settings forKey:@"JavaScriptEnabled"] boolValue];
-        }
-        
theWebView.configuration.preferences.javaScriptCanOpenWindowsAutomatically = 
javaScriptCanOpenWindowsAutomatically;
-         */
-    }
-#endif /* ifdef __IPHONE_8_0 */
-
 @end

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/9ec77c09/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
----------------------------------------------------------------------
diff --git a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj 
b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
index 8e3c7a6..9ce87d3 100644
--- a/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
+++ b/CordovaLib/CordovaLib.xcodeproj/project.pbxproj
@@ -24,6 +24,10 @@
                30C684821406CB38004C1A8E /* CDVWhitelist.m in Sources */ = {isa 
= PBXBuildFile; fileRef = 30C6847F1406CB38004C1A8E /* CDVWhitelist.m */; };
                30C684941407044B004C1A8E /* CDVURLProtocol.h in Headers */ = 
{isa = PBXBuildFile; fileRef = 30C684921407044A004C1A8E /* CDVURLProtocol.h */; 
settings = {ATTRIBUTES = (Public, ); }; };
                30C684961407044B004C1A8E /* CDVURLProtocol.m in Sources */ = 
{isa = PBXBuildFile; fileRef = 30C684931407044A004C1A8E /* CDVURLProtocol.m */; 
};
+               30CD6C631A07681E00522A22 /* CDVUIWebViewPreferences.h in 
Headers */ = {isa = PBXBuildFile; fileRef = 30CD6C611A07681E00522A22 /* 
CDVUIWebViewPreferences.h */; };
+               30CD6C641A07681E00522A22 /* CDVUIWebViewPreferences.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 30CD6C621A07681E00522A22 /* 
CDVUIWebViewPreferences.m */; };
+               30CD6C681A0769F900522A22 /* CDVWKWebViewPreferences.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 30CD6C661A0769F900522A22 /* 
CDVWKWebViewPreferences.m */; };
+               30CD6C691A0769F900522A22 /* CDVWKWebViewPreferences.h in 
Headers */ = {isa = PBXBuildFile; fileRef = 30CD6C671A0769F900522A22 /* 
CDVWKWebViewPreferences.h */; };
                30E33AF213A7E24B00594D64 /* CDVPlugin.h in Headers */ = {isa = 
PBXBuildFile; fileRef = 30E33AF013A7E24B00594D64 /* CDVPlugin.h */; settings = 
{ATTRIBUTES = (Public, ); }; };
                30E33AF313A7E24B00594D64 /* CDVPlugin.m in Sources */ = {isa = 
PBXBuildFile; fileRef = 30E33AF113A7E24B00594D64 /* CDVPlugin.m */; };
                30E563CF13E217EC00C949AA /* NSMutableArray+QueueAdditions.h in 
Headers */ = {isa = PBXBuildFile; fileRef = 30E563CD13E217EC00C949AA /* 
NSMutableArray+QueueAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -79,6 +83,10 @@
                30C6847F1406CB38004C1A8E /* CDVWhitelist.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name 
= CDVWhitelist.m; path = Classes/CDVWhitelist.m; sourceTree = "<group>"; };
                30C684921407044A004C1A8E /* CDVURLProtocol.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = 
CDVURLProtocol.h; path = Classes/CDVURLProtocol.h; sourceTree = "<group>"; };
                30C684931407044A004C1A8E /* CDVURLProtocol.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name 
= CDVURLProtocol.m; path = Classes/CDVURLProtocol.m; sourceTree = "<group>"; };
+               30CD6C611A07681E00522A22 /* CDVUIWebViewPreferences.h */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name 
= CDVUIWebViewPreferences.h; path = Classes/CDVUIWebViewPreferences.h; 
sourceTree = "<group>"; };
+               30CD6C621A07681E00522A22 /* CDVUIWebViewPreferences.m */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; 
name = CDVUIWebViewPreferences.m; path = Classes/CDVUIWebViewPreferences.m; 
sourceTree = "<group>"; };
+               30CD6C661A0769F900522A22 /* CDVWKWebViewPreferences.m */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; 
name = CDVWKWebViewPreferences.m; path = Classes/CDVWKWebViewPreferences.m; 
sourceTree = "<group>"; };
+               30CD6C671A0769F900522A22 /* CDVWKWebViewPreferences.h */ = {isa 
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name 
= CDVWKWebViewPreferences.h; path = Classes/CDVWKWebViewPreferences.h; 
sourceTree = "<group>"; };
                30E33AF013A7E24B00594D64 /* CDVPlugin.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = 
CDVPlugin.h; path = Classes/CDVPlugin.h; sourceTree = "<group>"; };
                30E33AF113A7E24B00594D64 /* CDVPlugin.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name 
= CDVPlugin.m; path = Classes/CDVPlugin.m; sourceTree = "<group>"; };
                30E563CD13E217EC00C949AA /* NSMutableArray+QueueAdditions.h */ 
= {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = 
sourcecode.c.h; name = "NSMutableArray+QueueAdditions.h"; path = 
"Classes/NSMutableArray+QueueAdditions.h"; sourceTree = "<group>"; };
@@ -182,14 +190,13 @@
                3054098714B77FF3009841CA /* Cleaver */ = {
                        isa = PBXGroup;
                        children = (
+                               30CD6C651A0768DA00522A22 /* Preferences */,
                                F858FBC4166009A8007DA594 /* CDVConfigParser.h 
*/,
                                F858FBC5166009A8007DA594 /* CDVConfigParser.m 
*/,
                                8852C43614B65FD800F0E735 /* CDVViewController.h 
*/,
                                8852C43714B65FD800F0E735 /* CDVViewController.m 
*/,
                                EB3B3545161CB44D003DBE7D /* CDVCommandQueue.h 
*/,
                                EB3B3546161CB44D003DBE7D /* CDVCommandQueue.m 
*/,
-                               7EE9ECF619525D24004CA6B9 /* 
CDVWebViewPreferences.h */,
-                               7EE9ECF719525D24004CA6B9 /* 
CDVWebViewPreferences.m */,
                                302D72F919554BFC0028C99F /* CDVWebViewProxy.h 
*/,
                                302D72FA19554BFC0028C99F /* CDVWebViewProxy.m 
*/,
                                7E785B98196F508900ABBDC8 /* 
CDVWebViewUIDelegate.h */,
@@ -198,6 +205,19 @@
                        name = Cleaver;
                        sourceTree = "<group>";
                };
+               30CD6C651A0768DA00522A22 /* Preferences */ = {
+                       isa = PBXGroup;
+                       children = (
+                               30CD6C671A0769F900522A22 /* 
CDVWKWebViewPreferences.h */,
+                               30CD6C661A0769F900522A22 /* 
CDVWKWebViewPreferences.m */,
+                               30CD6C611A07681E00522A22 /* 
CDVUIWebViewPreferences.h */,
+                               30CD6C621A07681E00522A22 /* 
CDVUIWebViewPreferences.m */,
+                               7EE9ECF619525D24004CA6B9 /* 
CDVWebViewPreferences.h */,
+                               7EE9ECF719525D24004CA6B9 /* 
CDVWebViewPreferences.m */,
+                       );
+                       name = Preferences;
+                       sourceTree = "<group>";
+               };
                32C88DFF0371C24200C91783 /* Other Sources */ = {
                        isa = PBXGroup;
                        children = (
@@ -292,7 +312,9 @@
                                7E22B88519E4C0210026F95E /* 
CDVAvailabilityDeprecated.h in Headers */,
                                3034979C1513D56A0090E688 /* CDVLocalStorage.h 
in Headers */,
                                3062D120151D0EDB000D9128 /* 
UIDevice+Extensions.h in Headers */,
+                               30CD6C691A0769F900522A22 /* 
CDVWKWebViewPreferences.h in Headers */,
                                EBA3557315ABD38C00F4DE24 /* 
NSArray+Comparisons.h in Headers */,
+                               30CD6C631A07681E00522A22 /* 
CDVUIWebViewPreferences.h in Headers */,
                                EB3B3547161CB44D003DBE7D /* CDVCommandQueue.h 
in Headers */,
                                EB3B357C161F2A45003DBE7D /* 
CDVCommandDelegateImpl.h in Headers */,
                                1B701028177A61CF00AE11F4 /* CDVShared.h in 
Headers */,
@@ -376,7 +398,9 @@
                                3062D122151D0EDB000D9128 /* 
UIDevice+Extensions.m in Sources */,
                                EBA3557515ABD38C00F4DE24 /* 
NSArray+Comparisons.m in Sources */,
                                EB3B3548161CB44D003DBE7D /* CDVCommandQueue.m 
in Sources */,
+                               30CD6C681A0769F900522A22 /* 
CDVWKWebViewPreferences.m in Sources */,
                                EB3B357D161F2A45003DBE7D /* 
CDVCommandDelegateImpl.m in Sources */,
+                               30CD6C641A07681E00522A22 /* 
CDVUIWebViewPreferences.m in Sources */,
                                F858FBC7166009A8007DA594 /* CDVConfigParser.m 
in Sources */,
                                30F3930C169F839700B22307 /* CDVJSON.m in 
Sources */,
                                7E785B9B196F508900ABBDC8 /* 
CDVWebViewUIDelegate.m in Sources */,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cordova.apache.org
For additional commands, e-mail: commits-h...@cordova.apache.org

Reply via email to