diff --git a/framework/src/org/apache/cordova/InAppBrowser.java b/framework/src/org/apache/cordova/InAppBrowser.java index 8e78baa2..7a39c5bb 100644 --- a/framework/src/org/apache/cordova/InAppBrowser.java +++ b/framework/src/org/apache/cordova/InAppBrowser.java @@ -69,8 +69,9 @@ public class InAppBrowser extends CordovaPlugin { private static final String SELF = "_self"; private static final String SYSTEM = "_system"; // private static final String BLANK = "_blank"; - private static final String LOCATION = "location"; 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_STOP_EVENT = "loadstop"; private static final String LOAD_ERROR_EVENT = "loaderror"; @@ -80,8 +81,9 @@ public class InAppBrowser extends CordovaPlugin { private Dialog dialog; private WebView inAppWebView; private EditText edittext; - private boolean showLocationBar = true; private CallbackContext callbackContext; + private boolean showLocationBar = true; + private boolean openWindowHidden = false; private String buttonLabel = "Done"; /** @@ -185,6 +187,16 @@ public class InAppBrowser extends CordovaPlugin { } 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 { return false; } @@ -361,11 +373,16 @@ public class InAppBrowser extends CordovaPlugin { public String showWebPage(final String url, HashMap features) { // Determine if we should hide the location bar. showLocationBar = true; + openWindowHidden = false; if (features != null) { Boolean show = features.get(LOCATION); if (show != null) { showLocationBar = show.booleanValue(); } + Boolean hidden = features.get(HIDDEN); + if(hidden != null) { + openWindowHidden = hidden.booleanValue(); + } } final CordovaWebView thatWebView = this.webView; @@ -549,6 +566,11 @@ public class InAppBrowser extends CordovaPlugin { dialog.setContentView(main); dialog.show(); 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);