Updated Branches: refs/heads/master 132fd93cd -> 8e2825b7f
[CB-1412] iOS Whitelist is never used, all urls will pass the whitelist Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/commit/8e2825b7 Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/tree/8e2825b7 Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/diff/8e2825b7 Branch: refs/heads/master Commit: 8e2825b7f3e81da9ac8e7db3300686ad8ea1b142 Parents: 132fd93 Author: Shazron Abdullah <shaz...@apache.org> Authored: Tue Sep 11 23:37:53 2012 -0700 Committer: Shazron Abdullah <shaz...@apache.org> Committed: Tue Sep 11 23:37:53 2012 -0700 ---------------------------------------------------------------------- CordovaLib/Classes/CDVURLProtocol.m | 8 ++++++++ CordovaLib/Classes/CDVViewController.m | 22 +++++++++++++--------- CordovaLib/Classes/CDVWhitelist.m | 1 - 3 files changed, 21 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/8e2825b7/CordovaLib/Classes/CDVURLProtocol.m ---------------------------------------------------------------------- diff --git a/CordovaLib/Classes/CDVURLProtocol.m b/CordovaLib/Classes/CDVURLProtocol.m index 42dbef7..48133f8 100644 --- a/CordovaLib/Classes/CDVURLProtocol.m +++ b/CordovaLib/Classes/CDVURLProtocol.m @@ -42,6 +42,14 @@ static NSMutableSet* gRegisteredControllers = nil; gRegisteredControllers = [[NSMutableSet alloc] initWithCapacity:8]; // The whitelist doesn't change, so grab the first one and store it. gWhitelist = viewController.whitelist; + + // Note that we grab the whitelist from the first viewcontroller for now - but this will change + // when we allow a registered viewcontroller to have its own whitelist (e.g InAppBrowser) + // Differentiating the requests will be through the 'vc' http header below as used for the js->objc bridge. + // The 'vc' value is generated by casting the viewcontroller object to a (long long) value (see CDVViewController::webViewDidFinishLoad) + if (gWhitelist == nil) { + NSLog(@"WARNING: NO whitelist has been set in CDVURLProtocol."); + } } @synchronized (gRegisteredControllers) { [gRegisteredControllers addObject:[NSNumber numberWithLongLong:(long long)viewController]]; http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/8e2825b7/CordovaLib/Classes/CDVViewController.m ---------------------------------------------------------------------- diff --git a/CordovaLib/Classes/CDVViewController.m b/CordovaLib/Classes/CDVViewController.m index da6baa0..2ad8972 100644 --- a/CordovaLib/Classes/CDVViewController.m +++ b/CordovaLib/Classes/CDVViewController.m @@ -80,6 +80,12 @@ [self printMultitaskingInfo]; [self printDeprecationNotice]; self.initialized = YES; + + // load Cordova.plist settings + [self loadSettings]; + // set the whitelist + self.whitelist = [[CDVWhitelist alloc] initWithArray:[self.settings objectForKey:@"ExternalHosts"]]; + // register this viewcontroller with the NSURLProtocol [CDVURLProtocol registerViewController:self]; } @@ -139,11 +145,8 @@ NSLog(@"Multi-tasking -> Device: %@, App: %@", (backgroundSupported? @"YES" : @"NO"), (![exitsOnSuspend intValue])? @"YES" : @"NO"); } -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void) viewDidLoad +- (void) loadSettings { - [super viewDidLoad]; - self.pluginObjects = [[NSMutableDictionary alloc] initWithCapacity:4]; // read from Cordova.plist in the app bundle @@ -163,12 +166,13 @@ return; } - // set the whitelist - self.whitelist = [[CDVWhitelist alloc] initWithArray:[self.settings objectForKey:@"ExternalHosts"]]; - self.pluginsMap = [pluginsDict dictionaryWithLowercaseKeys]; - - /////////////////// +} + +// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. +- (void) viewDidLoad +{ + [super viewDidLoad]; NSString* startFilePath = [self pathForResource:self.startPage]; NSURL* appURL = nil; http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/8e2825b7/CordovaLib/Classes/CDVWhitelist.m ---------------------------------------------------------------------- diff --git a/CordovaLib/Classes/CDVWhitelist.m b/CordovaLib/Classes/CDVWhitelist.m index a050794..149daf5 100644 --- a/CordovaLib/Classes/CDVWhitelist.m +++ b/CordovaLib/Classes/CDVWhitelist.m @@ -154,7 +154,6 @@ - (BOOL) URLIsAllowed:(NSURL*)url { if (self.expandedWhitelist == nil) { - NSLog(@"ERROR: CDVWhitelist was not initialized properly, all urls will be disallowed."); return NO; }