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