Fix tel: protocol to handle special character

Change-Id: I866ff02f85bb09e8a13bf095c4a136b0b833a86b
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 4d75a5f..457b1c4 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1579,7 +1579,7 @@
                 menu.setHeaderTitle(Uri.decode(extra));
                 menu.findItem(R.id.dial_context_menu_id).setIntent(
                         new Intent(Intent.ACTION_VIEW, Uri
-                                .parse(WebView.SCHEME_TEL + extra)));
+                                .parse(WebView.SCHEME_TEL + Uri.encode(extra))));
                 Intent addIntent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
                 addIntent.putExtra(Insert.PHONE, Uri.decode(extra));
                 addIntent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);
diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java
index dfdc3bf..eb8dc53 100644
--- a/src/com/android/browser/NavigationBarBase.java
+++ b/src/com/android/browser/NavigationBarBase.java
@@ -580,7 +580,7 @@
         if (url.startsWith(UrlHandler.SCHEME_WTAI_MC)) {
             Intent intent = new Intent(Intent.ACTION_VIEW,
                     Uri.parse(WebView.SCHEME_TEL +
-                    url.substring(UrlHandler.SCHEME_WTAI_MC.length())));
+                    Uri.encode(url.substring(UrlHandler.SCHEME_WTAI_MC.length()))));
             getContext().startActivity(intent);
             // before leaving BrowserActivity, close the empty child tab.
             // If a new tab is created through JavaScript open to load this
diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java
index 8ecffe4..40f08f0 100755
--- a/src/com/android/browser/UrlHandler.java
+++ b/src/com/android/browser/UrlHandler.java
@@ -60,13 +60,20 @@
             return false;
         }
 
+        if (url.startsWith(WebView.SCHEME_TEL)) {
+            Intent intent = new Intent(Intent.ACTION_VIEW,
+                    Uri.parse(WebView.SCHEME_TEL +
+                    Uri.encode(url.substring(WebView.SCHEME_TEL.length()))));
+            mActivity.startActivity(intent);
+            return true;
+        }
         if (url.startsWith(SCHEME_WTAI)) {
             // wtai://wp/mc;number
             // number=string(phone-number)
             if (url.startsWith(SCHEME_WTAI_MC)) {
                 Intent intent = new Intent(Intent.ACTION_VIEW,
                         Uri.parse(WebView.SCHEME_TEL +
-                        url.substring(SCHEME_WTAI_MC.length())));
+                        Uri.encode(url.substring(SCHEME_WTAI_MC.length()))));
                 mActivity.startActivity(intent);
                 // before leaving BrowserActivity, close the empty child tab.
                 // If a new tab is created through JavaScript open to load this