diff --git a/.gitmodules b/.gitmodules index 150f6f998..60ae86f55 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "cordova/cordova-crosswalk-engine"] path = cordova/cordova-crosswalk-engine url = https://github.com/MobileChromeApps/cordova-crosswalk-engine/ +[submodule "cordova/cordova-plugin-inappbrowser"] + path = cordova/cordova-plugin-inappbrowser + url = https://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser.git diff --git a/cca-manifest-logic/src/plugin-maps.js b/cca-manifest-logic/src/plugin-maps.js index 471342729..147337ce5 100644 --- a/cca-manifest-logic/src/plugin-maps.js +++ b/cca-manifest-logic/src/plugin-maps.js @@ -7,7 +7,6 @@ var DEFAULT_PLUGINS = [ 'org.apache.cordova.file', - 'org.apache.cordova.inappbrowser', 'org.apache.cordova.network-information', 'org.apache.cordova.statusbar', 'org.apache.cordova.labs.keyboard', diff --git a/chrome-cordova/plugins/chrome-navigation/src/android/ChromeNavigation.java b/chrome-cordova/plugins/chrome-navigation/src/android/ChromeNavigation.java index 419b76638..b583cb904 100644 --- a/chrome-cordova/plugins/chrome-navigation/src/android/ChromeNavigation.java +++ b/chrome-cordova/plugins/chrome-navigation/src/android/ChromeNavigation.java @@ -5,21 +5,57 @@ package org.chromium; import org.apache.cordova.CordovaPlugin; +import org.apache.cordova.CordovaInterface; +import org.apache.cordova.CordovaWebView; +import org.apache.cordova.ConfigXmlParser; +import android.content.res.XmlResourceParser; + import android.content.Intent; -import android.net.Uri; +import java.net.URL; +import java.net.MalformedURLException; import android.util.Log; public class ChromeNavigation extends CordovaPlugin { private static final String LOG_TAG = "ChromeNavigation"; + private String startUrl = null; private String prevUrl = null; + public void initialize(CordovaInterface cordova, CordovaWebView webView) { + final URL baseURL; + try { + baseURL = new URL("file:///android_asset/www/"); + new ConfigXmlParser(){ + public void handleStartTag(XmlResourceParser xml) { + String strNode = xml.getName(); + if (strNode.equals("content")) { + String src = xml.getAttributeValue(null, "src"); + if (src != null) { + try { + startUrl = new URL(baseURL, src).toString(); + } catch (MalformedURLException err) {} + } + } + } + public void handleEndTag(XmlResourceParser xml) { + } + }.parse(cordova.getActivity()); + } catch (MalformedURLException err) {} + } + + @Override + public Boolean shouldAllowRequest(String url) { + return true; + } + + @Override + public Boolean shouldAllowNavigation(String url) { + return url.equals(startUrl); + } + @Override - public boolean onOverrideUrlLoading(String url) { + public Boolean shouldOpenExternalUrl(String url) { if (url.startsWith("http:") || url.startsWith("https:")) { - Log.i(LOG_TAG, "Opening URL in external browser: " + url); - Intent systemBrowserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - cordova.getActivity().startActivity(systemBrowserIntent); return true; } return false; diff --git a/chrome-cordova/plugins/chrome-navigation/src/ios/ChromeNavigation.m b/chrome-cordova/plugins/chrome-navigation/src/ios/ChromeNavigation.m index ef8dadefb..c2fd3688a 100644 --- a/chrome-cordova/plugins/chrome-navigation/src/ios/ChromeNavigation.m +++ b/chrome-cordova/plugins/chrome-navigation/src/ios/ChromeNavigation.m @@ -113,5 +113,20 @@ - (BOOL)shouldOverrideLoadWithRequest:(NSURLRequest*)request navigationType:(UIW return NO; } +- (BOOL)shouldAllowRequestForURL:(NSURL *)url +{ + return YES; +} + +- (BOOL)shouldAllowNavigationToURL:(NSURL *)url +{ + return [[[url path] stringByDeletingLastPathComponent] hasSuffix:@"/www/plugins/org.chromium.bootstrap"]; +} + +- (BOOL)shouldOpenExternalURL:(NSURL *)url +{ + return ([url.scheme isEqualToString:@"http"] || [url.scheme isEqualToString:@"https:"]); +} + @end diff --git a/cordova/cordova-android b/cordova/cordova-android index fdef0db87..198364afb 160000 --- a/cordova/cordova-android +++ b/cordova/cordova-android @@ -1 +1 @@ -Subproject commit fdef0db87c4436a5ba7997cfab2ef2aed19ab223 +Subproject commit 198364afb9ca25b1fac9545dcf515dca76c65e28 diff --git a/cordova/cordova-crosswalk-engine b/cordova/cordova-crosswalk-engine index 989fbe252..edce7bc9c 160000 --- a/cordova/cordova-crosswalk-engine +++ b/cordova/cordova-crosswalk-engine @@ -1 +1 @@ -Subproject commit 989fbe252ef920c003c83e1367e2a49c1d040a3c +Subproject commit edce7bc9cb0fd46e60d66111937ddc971d10c325 diff --git a/cordova/cordova-ios b/cordova/cordova-ios index 2d8167fb4..960c809e6 160000 --- a/cordova/cordova-ios +++ b/cordova/cordova-ios @@ -1 +1 @@ -Subproject commit 2d8167fb4634833a11bce1968b2190c4ea7b64f0 +Subproject commit 960c809e6ce46c1441e2daf9a5c49dc2e34e3841 diff --git a/cordova/cordova-plugin-inappbrowser b/cordova/cordova-plugin-inappbrowser new file mode 160000 index 000000000..80e4831a7 --- /dev/null +++ b/cordova/cordova-plugin-inappbrowser @@ -0,0 +1 @@ +Subproject commit 80e4831a7fa225b3be7cac41d90bad262d74da64