This commit is contained in:
ldeluca 2014-03-04 12:43:38 -05:00
commit 34653ce393
5 changed files with 57 additions and 19 deletions

6
NOTICE
View File

@ -1 +1,5 @@
Icons used in ths plugin are reproduced from work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
Apache Cordova
Copyright 2012 The Apache Software Foundation
This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

View File

@ -73,3 +73,8 @@
* CB-5756: Android: Use WebView.evaluateJavascript for script injection on Android 4.4+
* Remove alive from InAppBrowser.js since it didn't catch the case where the browser is closed by the user.
* CB-5733 Fix IAB.close() not working if called before show() animation is done
### 0.3.2 (Feb 26, 2014)
* Validate that callbackId is correctly formed
* CB-6035 Move js-module so it is not loaded on unsupported platforms
* Removed some iOS6 Deprecations

View File

@ -2,7 +2,7 @@
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
id="org.apache.cordova.inappbrowser"
version="0.3.1">
version="0.3.2">
<name>InAppBrowser</name>
<description>Cordova InAppBrowser Plugin</description>
@ -14,13 +14,12 @@
<engines>
<engine name="cordova" version=">=3.1.0" /><!-- Needs cordova/urlutil -->
</engines>
<js-module src="www/InAppBrowser.js" name="InAppBrowser">
<clobbers target="window.open" />
</js-module>
<!-- -->
<!-- android -->
<platform name="android">
<js-module src="www/inappbrowser.js" name="inappbrowser">
<clobbers target="window.open" />
</js-module>
<config-file target="res/xml/config.xml" parent="/*">
<feature name="InAppBrowser">
<param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser"/>
@ -50,6 +49,9 @@
<!-- amazon-fireos -->
<platform name="amazon-fireos">
<js-module src="www/inappbrowser.js" name="inappbrowser">
<clobbers target="window.open" />
</js-module>
<config-file target="res/xml/config.xml" parent="/*">
<feature name="InAppBrowser">
<param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser"/>
@ -62,6 +64,9 @@
<!-- ubuntu -->
<platform name="ubuntu">
<js-module src="www/inappbrowser.js" name="inappbrowser">
<clobbers target="window.open" />
</js-module>
<header-file src="src/ubuntu/inappbrowser.h" />
<source-file src="src/ubuntu/inappbrowser.cpp" />
<resource-file src="src/ubuntu/InAppBrowser.qml" />
@ -69,7 +74,10 @@
</platform>
<!-- ios -->
<platform name="ios">
<platform name="ios">
<js-module src="www/inappbrowser.js" name="inappbrowser">
<clobbers target="window.open" />
</js-module>
<config-file target="config.xml" parent="/*">
<feature name="InAppBrowser">
<param name="ios-package" value="CDVInAppBrowser" />
@ -82,15 +90,11 @@
<framework src="CoreGraphics.framework" />
</platform>
<!-- blackberry10 -->
<!-- <platform name="blackberry10">
<config-file target="www/config.xml" parent="/widget">
<feature name="InAppBrowser" value="InAppBrowser"/>
</config-file>
</platform>
-->
<!-- wp7 -->
<platform name="wp7">
<js-module src="www/inappbrowser.js" name="inappbrowser">
<clobbers target="window.open" />
</js-module>
<config-file target="config.xml" parent="/*">
<feature name="InAppBrowser">
<param name="wp-package" value="InAppBrowser"/>
@ -102,6 +106,9 @@
<!-- wp8 -->
<platform name="wp8">
<js-module src="www/inappbrowser.js" name="inappbrowser">
<clobbers target="window.open" />
</js-module>
<config-file target="config.xml" parent="/*">
<feature name="InAppBrowser">
<param name="wp-package" value="InAppBrowser"/>
@ -113,6 +120,9 @@
<!-- windows8 -->
<platform name="windows8">
<js-module src="www/inappbrowser.js" name="inappbrowser">
<clobbers target="window.open" />
</js-module>
<js-module src="www/windows8/InAppBrowserProxy.js" name="InAppBrowserProxy">
<merges target="" />
</js-module>

View File

@ -30,6 +30,7 @@
@property (nonatomic, retain) CDVInAppBrowserViewController* inAppBrowserViewController;
@property (nonatomic, copy) NSString* callbackId;
@property (nonatomic, copy) NSRegularExpression *callbackIdPattern;
- (void)open:(CDVInvokedUrlCommand*)command;
- (void)close:(CDVInvokedUrlCommand*)command;

View File

@ -47,6 +47,7 @@
self = [super initWithWebView:theWebView];
if (self != nil) {
_previousStatusBarStyle = -1;
_callbackIdPattern = nil;
}
return self;
@ -297,6 +298,23 @@
[self injectDeferredObject:[command argumentAtIndex:0] withWrapper:jsWrapper];
}
- (BOOL)isValidCallbackId:(NSString *)callbackId
{
NSError *err = nil;
// Initialize on first use
if (self.callbackIdPattern == nil) {
self.callbackIdPattern = [NSRegularExpression regularExpressionWithPattern:@"^InAppBrowser[0-9]{1,10}$" options:0 error:&err];
if (err != nil) {
// Couldn't initialize Regex; No is safer than Yes.
return NO;
}
}
if ([self.callbackIdPattern firstMatchInString:callbackId options:0 range:NSMakeRange(0, [callbackId length])]) {
return YES;
}
return NO;
}
/**
* The iframe bridge provided for the InAppBrowser is capable of executing any oustanding callback belonging
* to the InAppBrowser plugin. Care has been taken that other callbacks cannot be triggered, and that no
@ -323,7 +341,7 @@
NSString* scriptCallbackId = [url host];
CDVPluginResult* pluginResult = nil;
if ([scriptCallbackId hasPrefix:@"InAppBrowser"]) {
if ([self isValidCallbackId:scriptCallbackId]) {
NSString* scriptResult = [url path];
NSError* __autoreleasing error = nil;
@ -510,14 +528,14 @@
self.addressLabel.contentStretch = CGRectFromString(@"{{0, 0}, {1, 1}}");
self.addressLabel.enabled = YES;
self.addressLabel.hidden = NO;
self.addressLabel.lineBreakMode = UILineBreakModeTailTruncation;
self.addressLabel.minimumFontSize = 10.000;
self.addressLabel.lineBreakMode = NSLineBreakByTruncatingTail;
self.addressLabel.minimumScaleFactor = 10.000;
self.addressLabel.multipleTouchEnabled = NO;
self.addressLabel.numberOfLines = 1;
self.addressLabel.opaque = NO;
self.addressLabel.shadowOffset = CGSizeMake(0.0, -1.0);
self.addressLabel.text = NSLocalizedString(@"Loading...", nil);
self.addressLabel.textAlignment = UITextAlignmentLeft;
self.addressLabel.textAlignment = NSTextAlignmentLeft;
self.addressLabel.textColor = [UIColor colorWithWhite:1.000 alpha:1.000];
self.addressLabel.userInteractionEnabled = NO;