You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ia...@apache.org on 2014/10/24 22:17:43 UTC
[2/5] ios commit: Add hooks for whitelist plugins
Add hooks for whitelist plugins
This allows plugins to implement two methods:
- (BOOL)shouldAllowNavigationToURL:(NSURL *)url
- (BOOL)shouldOpenExternalURL:(NSURL *)url
Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/c184a885
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/c184a885
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/c184a885
Branch: refs/heads/unplug-whitelist
Commit: c184a885dc50361717270d12faa91c2c139c3bcb
Parents: 0c013f6
Author: Ian Clelland <ic...@chromium.org>
Authored: Fri Oct 24 16:09:07 2014 -0400
Committer: Ian Clelland <ic...@chromium.org>
Committed: Fri Oct 24 16:09:07 2014 -0400
----------------------------------------------------------------------
CordovaLib/Classes/CDVViewController.h | 3 ++
CordovaLib/Classes/CDVViewController.m | 46 +++++++++++++++++++++++++++++
2 files changed, 49 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/c184a885/CordovaLib/Classes/CDVViewController.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVViewController.h b/CordovaLib/Classes/CDVViewController.h
index 73315a6..4ee9967 100644
--- a/CordovaLib/Classes/CDVViewController.h
+++ b/CordovaLib/Classes/CDVViewController.h
@@ -79,6 +79,9 @@
- (void)registerPlugin:(CDVPlugin*)plugin withPluginName:(NSString*)pluginName;
- (BOOL)URLisAllowed:(NSURL*)url;
+- (BOOL)shouldAllowNavigationToURL:(NSURL *)url;
+- (BOOL)shouldOpenExternalURL:(NSURL *)url;
+
- (void)processOpenUrl:(NSURL*)url;
- (void)parseSettingsWithParser:(NSObject<NSXMLParserDelegate> *)delegate;
http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/c184a885/CordovaLib/Classes/CDVViewController.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVViewController.m b/CordovaLib/Classes/CDVViewController.m
index f7e43f3..135794e 100644
--- a/CordovaLib/Classes/CDVViewController.m
+++ b/CordovaLib/Classes/CDVViewController.m
@@ -773,6 +773,52 @@
return YES;
}
+- (BOOL)shouldAllowNavigationToURL:(NSURL *)url
+{
+ BOOL anyPluginsResponded = NO;
+ BOOL shouldAllowNavigation = NO;
+ for (NSString* pluginName in pluginObjects) {
+ CDVPlugin* plugin = [pluginObjects objectForKey:pluginName];
+ SEL selector = NSSelectorFromString(@"shouldAllowNavigationToURL:");
+ if ([plugin respondsToSelector:selector]) {
+ anyPluginsResponded = YES;
+ shouldAllowNavigation = ((BOOL (*)(id, SEL, id))objc_msgSend)(plugin, selector, url);
+ if (shouldAllowNavigation == NO) {
+ break;
+ }
+ }
+ }
+ if (anyPluginsResponded) {
+ return shouldAllowNavigation;
+ }
+
+ /* Default Policy */
+ return NO;
+}
+
+- (BOOL)shouldOpenExternalURL:(NSURL *)url
+{
+ BOOL anyPluginsResponded = NO;
+ BOOL shouldOpenExternalURL = NO;
+ for (NSString* pluginName in pluginObjects) {
+ CDVPlugin* plugin = [pluginObjects objectForKey:pluginName];
+ SEL selector = NSSelectorFromString(@"shouldOpenExternalURL:");
+ if ([plugin respondsToSelector:selector]) {
+ anyPluginsResponded = YES;
+ shouldOpenExternalURL = ((BOOL (*)(id, SEL, id))objc_msgSend)(plugin, selector, url);
+ if (shouldOpenExternalURL == NO) {
+ break;
+ }
+ }
+ }
+ if (anyPluginsResponded) {
+ return shouldOpenExternalURL;
+ }
+
+ /* Default policy */
+ return NO;
+}
+
#pragma mark GapHelpers
- (void)javascriptAlert:(NSString*)text
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org