cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shaz...@apache.org
Subject [49/50] ios commit: Fixed processOpenUrl and userContentController:didReceiveScriptMessage bad merge.
Date Fri, 31 Oct 2014 23:44:09 GMT
Fixed processOpenUrl and userContentController:didReceiveScriptMessage bad merge.

Converted processOpenUrl to use the webViewOperationsDelegate.


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

Branch: refs/heads/wkwebview
Commit: 1a7dbfa65bec49f9ef003bd2bd5b4d2bff9dd71d
Parents: f6d89c6
Author: Shazron Abdullah <shazron@apache.org>
Authored: Fri Oct 31 16:28:53 2014 -0700
Committer: Shazron Abdullah <shazron@apache.org>
Committed: Fri Oct 31 16:28:53 2014 -0700

----------------------------------------------------------------------
 CordovaLib/Classes/CDVViewController.m | 74 +++++++++++++++++++----------
 1 file changed, 50 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/1a7dbfa6/CordovaLib/Classes/CDVViewController.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVViewController.m b/CordovaLib/Classes/CDVViewController.m
index 79d16b8..f8ced8b 100644
--- a/CordovaLib/Classes/CDVViewController.m
+++ b/CordovaLib/Classes/CDVViewController.m
@@ -331,10 +331,10 @@
             if (errorUrl) {
                 errorUrl = [NSURL URLWithString:[NSString stringWithFormat:@"?error=%@",
[loadErr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] relativeToURL:errorUrl];
                 NSLog(@"%@", [errorUrl absoluteString]);
-                [self.webView loadRequest:[NSURLRequest requestWithURL:errorUrl]];
+                [_webViewOperationsDelegate loadRequest:[NSURLRequest requestWithURL:errorUrl]];
             } else {
-            NSString* html = [NSString stringWithFormat:@"<html><body> %@ </body></html>",
loadErr];
-            [_webViewOperationsDelegate loadHTMLString:html baseURL:nil];
+                NSString* html = [NSString stringWithFormat:@"<html><body> %@
</body></html>", loadErr];
+                [_webViewOperationsDelegate loadHTMLString:html baseURL:nil];
             }
         }
     }];
@@ -716,7 +716,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;
 }
@@ -891,12 +891,48 @@
 {
     if (self.openURL) {
         [self processOpenUrl:self.openURL pageLoaded:YES];
-        NSString* jsString = [NSString stringWithFormat:@"handleOpenURL(\"%@\");", [self.openURL
description]];
-        [_webViewOperationsDelegate evaluateJavaScript:jsString completionHandler:nil];
-        self.openURL = nil;
     }
 }
 
+- (void)processOpenUrl:(NSURL*)url pageLoaded:(BOOL)pageLoaded
+{
+    __weak CDVViewController* weakSelf = self;
+
+    dispatch_block_t handleOpenUrl = ^(void) {
+        NSString* jsString = [NSString stringWithFormat:@"if (typeof handleOpenURL === 'function')
{ handleOpenURL(\"%@\");}", url];
+        [_webViewOperationsDelegate evaluateJavaScript:jsString
+                                     completionHandler:^(id object, NSError* error) {
+            if (error == nil) {
+                weakSelf.openURL = nil;
+            }
+        }];
+    };
+
+    if (!pageLoaded) {
+        // query the webview for readystate
+        NSString* jsString = @"document.readystate";
+        [_webViewOperationsDelegate evaluateJavaScript:jsString
+                                     completionHandler:^(id object, NSError* error) {
+            if ((error == nil) && [object isKindOfClass:[NSString class]]) {
+                NSString* readyState = (NSString*)object;
+                BOOL ready = [readyState isEqualToString:@"loaded"] || [readyState isEqualToString:@"complete"];
+                if (ready) {
+                    handleOpenUrl();
+                } else {
+                    weakSelf.openURL = url;
+                }
+            }
+        }];
+    } else {
+        handleOpenUrl();
+    }
+}
+
+- (void)processOpenUrl:(NSURL*)url
+{
+    [self processOpenUrl:url pageLoaded:NO];
+}
+
 #pragma mark WKScriptMessageHandler implementation
 
 #ifdef __IPHONE_8_0
@@ -910,29 +946,19 @@
         CDVInvokedUrlCommand* command = [CDVInvokedUrlCommand commandFromJson:jsonEntry];
         CDV_EXEC_LOG(@"Exec(%@): Calling %@.%@", command.callbackId, command.className, command.methodName);
 
-- (void)processOpenUrl:(NSURL*)url pageLoaded:(BOOL)pageLoaded
-{
-    if (!pageLoaded) {
-        // query the webview for readystate
-        NSString* readyState = [webView stringByEvaluatingJavaScriptFromString:@"document.readyState"];
-        pageLoaded = [readyState isEqualToString:@"loaded"] || [readyState isEqualToString:@"complete"];
-    }
+        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;
 
-    if (pageLoaded) {
                 DLog(@"FAILED pluginJSON = %@", commandString);
-        NSString* jsString = [NSString stringWithFormat:@"if (typeof handleOpenURL === 'function')
{ handleOpenURL(\"%@\");}", url];
     #endif
         }
-    } else {
-        // save for when page has loaded
-        self.openURL = url;
     }
-}
-
 #endif /* ifdef __IPHONE_8_0 */
-{
-    [self processOpenUrl:url pageLoaded:NO];
-}
 
 // ///////////////////////
 


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


Mime
View raw message