Fix issues with shouldOverrideUrlLoading
- Add support for support deeplinking fallback
- Fix lookup of item based on package name directly on play store
- Fix mailto protocol to return true always
- Fix log tags
Change-Id: I1abd30b12df3dd5c7077097834a2ce284f2d7a36
CR-Fixed: SWE-6553
diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java
index 40f08f0..d372ec3 100755
--- a/src/com/android/browser/UrlHandler.java
+++ b/src/com/android/browser/UrlHandler.java
@@ -34,6 +34,7 @@
import java.util.regex.Matcher;
import org.codeaurora.swe.WebView;
+import org.codeaurora.swe.util.SWEUrlUtils;
public class UrlHandler {
@@ -45,6 +46,7 @@
/* package */ final static String SCHEME_WTAI_SD = "wtai://wp/sd;";
/* package */ final static String SCHEME_WTAI_AP = "wtai://wp/ap;";
/* package */ final static String SCHEME_MAILTO = "mailto:";
+ public static final String EXTRA_BROWSER_FALLBACK_URL = "browser_fallback_url";
Controller mController;
Activity mActivity;
@@ -139,11 +141,10 @@
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
mActivity.startActivity(intent);
} catch (URISyntaxException ex) {
- Log.w("Browser", "Bad URI " + url + ": " + ex.getMessage());
+ Log.w(TAG, "Bad URI " + url + ": " + ex.getMessage());
return false;
} catch (ActivityNotFoundException ex) {
- Log.w("Browser", "No Activity Found for " + url);
- return false;
+ Log.w(TAG, "No Activity Found for " + url);
}
return true;
@@ -168,7 +169,7 @@
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
mActivity.startActivity(intent);
} catch (URISyntaxException ex) {
- Log.w("Browser", "Bad URI " + url + ": " + ex.getMessage());
+ Log.w(TAG, "Bad URI " + url + ": " + ex.getMessage());
return false;
} catch (ActivityNotFoundException ex) {
String downloadUrl = mActivity.getResources().getString(R.string.estore_homepage);
@@ -186,10 +187,19 @@
try {
intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
} catch (URISyntaxException ex) {
- Log.w("Browser", "Bad URI " + url + ": " + ex.getMessage());
+ Log.w(TAG, "Bad URI " + url + ": " + ex.getMessage());
return false;
}
+ // handle fallback url for deep linking apps
+ String browserFallbackUrl = intent.getStringExtra(EXTRA_BROWSER_FALLBACK_URL);
+ if (browserFallbackUrl != null
+ && SWEUrlUtils.isValidForIntentFallbackNavigation(browserFallbackUrl)) {
+ mController.loadUrl(mController.getCurrentTab(), browserFallbackUrl);
+ mController.closeEmptyTab();
+ return true;
+ }
+
// check whether the intent can be resolved. If not, we will see
// whether we can download it from the Market.
if (mActivity.getPackageManager().resolveActivity(intent, 0) == null) {
@@ -197,9 +207,11 @@
if (packagename != null) {
try {
intent = new Intent(Intent.ACTION_VIEW, Uri
- .parse("market://search?q=pname:" + packagename));
+ .parse("market://details?id=" + packagename));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
+ intent.setPackage("com.android.vending");
mActivity.startActivity(intent);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// before leaving BrowserActivity, close the empty child tab.
// If a new tab is created through JavaScript open to load this
// url, we would like to close it as we will load this url in a