Repository: cordova-ios
Updated Branches:
  refs/heads/master 722397ae7 -> a96f059ac


CB-6510 - Support for ErrorUrl preference on iOS

- ErrorUrl is a file that is relative to the www folder, or an external url. 
The value cannot have any query parameters or fragment identifiers, since an 
error query parameter is passed to the url, with the query parameter value as 
the error message.


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

Branch: refs/heads/master
Commit: a96f059ac160c20c95d0ee802e0ee09dfb0f5856
Parents: 722397a
Author: Shazron Abdullah <shaz...@apache.org>
Authored: Thu Oct 23 14:15:54 2014 -0700
Committer: Shazron Abdullah <shaz...@apache.org>
Committed: Thu Oct 23 14:15:54 2014 -0700

----------------------------------------------------------------------
 CordovaLib/Classes/CDVViewController.m | 43 +++++++++++++++++++++++++++--
 1 file changed, 40 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/a96f059a/CordovaLib/Classes/CDVViewController.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVViewController.m 
b/CordovaLib/Classes/CDVViewController.m
index c62ba87..f0e0c2f 100644
--- a/CordovaLib/Classes/CDVViewController.m
+++ b/CordovaLib/Classes/CDVViewController.m
@@ -230,6 +230,28 @@
     return appURL;
 }
 
+- (NSURL*)errorUrl
+{
+    NSURL* errorURL = nil;
+
+    id setting = [self settingForKey:@"ErrorUrl"];
+
+    if (setting) {
+        NSString* errorUrlString = (NSString*)setting;
+        if ([errorUrlString rangeOfString:@"://"].location != NSNotFound) {
+            errorURL = [NSURL URLWithString:errorUrlString];
+        } else {
+            NSURL* url = [NSURL URLWithString:(NSString*)setting];
+            NSString* errorFilePath = [self.commandDelegate 
pathForResource:[url path]];
+            if (errorFilePath) {
+                errorURL = [NSURL fileURLWithPath:errorFilePath];
+            }
+        }
+    }
+
+    return errorURL;
+}
+
 // Implement viewDidLoad to do additional setup after loading the view, 
typically from a nib.
 - (void)viewDidLoad
 {
@@ -451,8 +473,15 @@
             NSString* loadErr = [NSString stringWithFormat:@"ERROR: Start Page 
at '%@/%@' was not found.", self.wwwFolderName, self.startPage];
             NSLog(@"%@", loadErr);
 
-            NSString* html = [NSString stringWithFormat:@"<html><body> %@ 
</body></html>", loadErr];
-            [self.webView loadHTMLString:html baseURL:nil];
+            NSURL* errorUrl = [self errorUrl];
+            if (errorUrl) {
+                errorUrl = [NSURL URLWithString:[NSString 
stringWithFormat:@"?error=%@", [loadErr 
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] 
relativeToURL:errorUrl];
+                NSLog(@"%@", [errorUrl absoluteString]);
+                [self.webView loadRequest:[NSURLRequest 
requestWithURL:errorUrl]];
+            } else {
+                NSString* html = [NSString stringWithFormat:@"<html><body> %@ 
</body></html>", loadErr];
+                [self.webView loadHTMLString:html baseURL:nil];
+            }
         }
     }];
 }
@@ -664,7 +693,15 @@
 {
     [CDVUserAgentUtil releaseLock:&_userAgentLockToken];
 
-    NSLog(@"Failed to load webpage with error: %@", [error 
localizedDescription]);
+    NSString* message = [NSString stringWithFormat:@"Failed to load webpage 
with error: %@", [error localizedDescription]];
+    NSLog(@"%@", message);
+
+    NSURL* errorUrl = [self errorUrl];
+    if (errorUrl) {
+        errorUrl = [NSURL URLWithString:[NSString 
stringWithFormat:@"?error=%@", [message 
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] 
relativeToURL:errorUrl];
+        NSLog(@"%@", [errorUrl absoluteString]);
+        [theWebView loadRequest:[NSURLRequest requestWithURL:errorUrl]];
+    }
 }
 
 - (BOOL)webView:(UIWebView*)theWebView 
shouldStartLoadWithRequest:(NSURLRequest*)request 
navigationType:(UIWebViewNavigationType)navigationType


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

Reply via email to