updated inappbrowser with latest native + js code
This commit is contained in:
parent
9f8af5f464
commit
8c0c36d5bf
@ -21,6 +21,7 @@ package org.apache.cordova.core;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.StringTokenizer;
|
import java.util.StringTokenizer;
|
||||||
|
|
||||||
|
|
||||||
import org.apache.cordova.Config;
|
import org.apache.cordova.Config;
|
||||||
import org.apache.cordova.CordovaWebView;
|
import org.apache.cordova.CordovaWebView;
|
||||||
import org.apache.cordova.api.CallbackContext;
|
import org.apache.cordova.api.CallbackContext;
|
||||||
@ -71,8 +72,9 @@ public class InAppBrowser extends CordovaPlugin {
|
|||||||
private static final String SELF = "_self";
|
private static final String SELF = "_self";
|
||||||
private static final String SYSTEM = "_system";
|
private static final String SYSTEM = "_system";
|
||||||
// private static final String BLANK = "_blank";
|
// private static final String BLANK = "_blank";
|
||||||
private static final String LOCATION = "location";
|
|
||||||
private static final String EXIT_EVENT = "exit";
|
private static final String EXIT_EVENT = "exit";
|
||||||
|
private static final String LOCATION = "location";
|
||||||
|
private static final String HIDDEN = "hidden";
|
||||||
private static final String LOAD_START_EVENT = "loadstart";
|
private static final String LOAD_START_EVENT = "loadstart";
|
||||||
private static final String LOAD_STOP_EVENT = "loadstop";
|
private static final String LOAD_STOP_EVENT = "loadstop";
|
||||||
private static final String LOAD_ERROR_EVENT = "loaderror";
|
private static final String LOAD_ERROR_EVENT = "loaderror";
|
||||||
@ -82,8 +84,9 @@ public class InAppBrowser extends CordovaPlugin {
|
|||||||
private Dialog dialog;
|
private Dialog dialog;
|
||||||
private WebView inAppWebView;
|
private WebView inAppWebView;
|
||||||
private EditText edittext;
|
private EditText edittext;
|
||||||
private boolean showLocationBar = true;
|
|
||||||
private CallbackContext callbackContext;
|
private CallbackContext callbackContext;
|
||||||
|
private boolean showLocationBar = true;
|
||||||
|
private boolean openWindowHidden = false;
|
||||||
private String buttonLabel = "Done";
|
private String buttonLabel = "Done";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -187,6 +190,16 @@ public class InAppBrowser extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
injectDeferredObject(args.getString(0), jsWrapper);
|
injectDeferredObject(args.getString(0), jsWrapper);
|
||||||
}
|
}
|
||||||
|
else if (action.equals("show")) {
|
||||||
|
Runnable runnable = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
this.cordova.getActivity().runOnUiThread(runnable);
|
||||||
|
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -363,11 +376,16 @@ public class InAppBrowser extends CordovaPlugin {
|
|||||||
public String showWebPage(final String url, HashMap<String, Boolean> features) {
|
public String showWebPage(final String url, HashMap<String, Boolean> features) {
|
||||||
// Determine if we should hide the location bar.
|
// Determine if we should hide the location bar.
|
||||||
showLocationBar = true;
|
showLocationBar = true;
|
||||||
|
openWindowHidden = false;
|
||||||
if (features != null) {
|
if (features != null) {
|
||||||
Boolean show = features.get(LOCATION);
|
Boolean show = features.get(LOCATION);
|
||||||
if (show != null) {
|
if (show != null) {
|
||||||
showLocationBar = show.booleanValue();
|
showLocationBar = show.booleanValue();
|
||||||
}
|
}
|
||||||
|
Boolean hidden = features.get(HIDDEN);
|
||||||
|
if(hidden != null) {
|
||||||
|
openWindowHidden = hidden.booleanValue();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final CordovaWebView thatWebView = this.webView;
|
final CordovaWebView thatWebView = this.webView;
|
||||||
@ -551,6 +569,11 @@ public class InAppBrowser extends CordovaPlugin {
|
|||||||
dialog.setContentView(main);
|
dialog.setContentView(main);
|
||||||
dialog.show();
|
dialog.show();
|
||||||
dialog.getWindow().setAttributes(lp);
|
dialog.getWindow().setAttributes(lp);
|
||||||
|
// the goal of openhidden is to load the url and not display it
|
||||||
|
// Show() needs to be called to cause the URL to be loaded
|
||||||
|
if(openWindowHidden) {
|
||||||
|
dialog.hide();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
this.cordova.getActivity().runOnUiThread(runnable);
|
this.cordova.getActivity().runOnUiThread(runnable);
|
||||||
|
@ -34,6 +34,7 @@
|
|||||||
- (void)open:(CDVInvokedUrlCommand*)command;
|
- (void)open:(CDVInvokedUrlCommand*)command;
|
||||||
- (void)close:(CDVInvokedUrlCommand*)command;
|
- (void)close:(CDVInvokedUrlCommand*)command;
|
||||||
- (void)injectScriptCode:(CDVInvokedUrlCommand*)command;
|
- (void)injectScriptCode:(CDVInvokedUrlCommand*)command;
|
||||||
|
- (void)show:(CDVInvokedUrlCommand*)command;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@ -81,6 +82,7 @@
|
|||||||
@property (nonatomic, assign) BOOL allowinlinemediaplayback;
|
@property (nonatomic, assign) BOOL allowinlinemediaplayback;
|
||||||
@property (nonatomic, assign) BOOL keyboarddisplayrequiresuseraction;
|
@property (nonatomic, assign) BOOL keyboarddisplayrequiresuseraction;
|
||||||
@property (nonatomic, assign) BOOL suppressesincrementalrendering;
|
@property (nonatomic, assign) BOOL suppressesincrementalrendering;
|
||||||
|
@property (nonatomic, assign) BOOL hidden;
|
||||||
|
|
||||||
+ (CDVInAppBrowserOptions*)parseOptions:(NSString*)options;
|
+ (CDVInAppBrowserOptions*)parseOptions:(NSString*)options;
|
||||||
|
|
||||||
|
@ -101,13 +101,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CDVInAppBrowserOptions* browserOptions = [CDVInAppBrowserOptions parseOptions:options];
|
CDVInAppBrowserOptions* browserOptions = [CDVInAppBrowserOptions parseOptions:options];
|
||||||
[self.inAppBrowserViewController showLocationBar:browserOptions.location];
|
[self.inAppBrowserViewController showLocationBar:browserOptions.location];
|
||||||
[self.inAppBrowserViewController showToolBar:browserOptions.toolbar];
|
[self.inAppBrowserViewController showToolBar:browserOptions.toolbar];
|
||||||
if (browserOptions.closebuttoncaption != nil) {
|
if (browserOptions.closebuttoncaption != nil) {
|
||||||
[self.inAppBrowserViewController setCloseButtonTitle:browserOptions.closebuttoncaption];
|
[self.inAppBrowserViewController setCloseButtonTitle:browserOptions.closebuttoncaption];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set Presentation Style
|
// Set Presentation Style
|
||||||
UIModalPresentationStyle presentationStyle = UIModalPresentationFullScreen; // default
|
UIModalPresentationStyle presentationStyle = UIModalPresentationFullScreen; // default
|
||||||
if (browserOptions.presentationstyle != nil) {
|
if (browserOptions.presentationstyle != nil) {
|
||||||
@ -130,6 +130,7 @@
|
|||||||
}
|
}
|
||||||
self.inAppBrowserViewController.modalTransitionStyle = transitionStyle;
|
self.inAppBrowserViewController.modalTransitionStyle = transitionStyle;
|
||||||
|
|
||||||
|
|
||||||
// UIWebView options
|
// UIWebView options
|
||||||
self.inAppBrowserViewController.webView.scalesPageToFit = browserOptions.enableviewportscale;
|
self.inAppBrowserViewController.webView.scalesPageToFit = browserOptions.enableviewportscale;
|
||||||
self.inAppBrowserViewController.webView.mediaPlaybackRequiresUserAction = browserOptions.mediaplaybackrequiresuseraction;
|
self.inAppBrowserViewController.webView.mediaPlaybackRequiresUserAction = browserOptions.mediaplaybackrequiresuseraction;
|
||||||
@ -138,13 +139,20 @@
|
|||||||
self.inAppBrowserViewController.webView.keyboardDisplayRequiresUserAction = browserOptions.keyboarddisplayrequiresuseraction;
|
self.inAppBrowserViewController.webView.keyboardDisplayRequiresUserAction = browserOptions.keyboarddisplayrequiresuseraction;
|
||||||
self.inAppBrowserViewController.webView.suppressesIncrementalRendering = browserOptions.suppressesincrementalrendering;
|
self.inAppBrowserViewController.webView.suppressesIncrementalRendering = browserOptions.suppressesincrementalrendering;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self.viewController.modalViewController != self.inAppBrowserViewController) {
|
if (! browserOptions.hidden) {
|
||||||
|
if (self.viewController.modalViewController != self.inAppBrowserViewController) {
|
||||||
[self.viewController presentModalViewController:self.inAppBrowserViewController animated:YES];
|
[self.viewController presentModalViewController:self.inAppBrowserViewController animated:YES];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
[self.inAppBrowserViewController navigateTo:url];
|
[self.inAppBrowserViewController navigateTo:url];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)show:(CDVInvokedUrlCommand*)command
|
||||||
|
{
|
||||||
|
[self.viewController presentModalViewController:self.inAppBrowserViewController animated:YES];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)openInCordovaWebView:(NSURL*)url withOptions:(NSString*)options
|
- (void)openInCordovaWebView:(NSURL*)url withOptions:(NSString*)options
|
||||||
{
|
{
|
||||||
if ([self.commandDelegate URLIsWhitelisted:url]) {
|
if ([self.commandDelegate URLIsWhitelisted:url]) {
|
||||||
@ -764,6 +772,7 @@
|
|||||||
self.allowinlinemediaplayback = NO;
|
self.allowinlinemediaplayback = NO;
|
||||||
self.keyboarddisplayrequiresuseraction = YES;
|
self.keyboarddisplayrequiresuseraction = YES;
|
||||||
self.suppressesincrementalrendering = NO;
|
self.suppressesincrementalrendering = NO;
|
||||||
|
self.hidden = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -41,6 +41,9 @@ InAppBrowser.prototype = {
|
|||||||
close: function (eventname) {
|
close: function (eventname) {
|
||||||
exec(null, null, "InAppBrowser", "close", []);
|
exec(null, null, "InAppBrowser", "close", []);
|
||||||
},
|
},
|
||||||
|
show: function (eventname) {
|
||||||
|
exec(null, null, "InAppBrowser", "show", []);
|
||||||
|
},
|
||||||
addEventListener: function (eventname,f) {
|
addEventListener: function (eventname,f) {
|
||||||
if (eventname in this.channels) {
|
if (eventname in this.channels) {
|
||||||
this.channels[eventname].subscribe(f);
|
this.channels[eventname].subscribe(f);
|
||||||
|
Loading…
Reference in New Issue
Block a user