cordova-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shaz...@apache.org
Subject ios commit: CB-6510 - Support for ErrorUrl preference on iOS
Date Thu, 23 Oct 2014 21:15:54 GMT
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 <shazron@apache.org>
Authored: Thu Oct 23 14:15:54 2014 -0700
Committer: Shazron Abdullah <shazron@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-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org


Mime
View raw message