send URL clicks in conversation view to a browser

Change-Id: If0ce9f5e1ec5e3d209c9d6a10ebe27e076065f0a
diff --git a/src/com/android/mail/ui/ConversationViewFragment.java b/src/com/android/mail/ui/ConversationViewFragment.java
index 0918133..d1cd36b 100644
--- a/src/com/android/mail/ui/ConversationViewFragment.java
+++ b/src/com/android/mail/ui/ConversationViewFragment.java
@@ -22,14 +22,17 @@
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.LoaderManager;
+import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.CursorLoader;
+import android.content.Intent;
 import android.content.Loader;
 import android.database.Cursor;
 import android.database.CursorWrapper;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Handler;
+import android.provider.Browser;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -426,6 +429,28 @@
             }
         }
 
+        @Override
+        public boolean shouldOverrideUrlLoading(WebView view, String url) {
+            boolean result = false;
+            final Uri uri = Uri.parse(url);
+            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
+            intent.putExtra(Browser.EXTRA_APPLICATION_ID, getActivity().getPackageName());
+            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
+
+            // FIXME: give provider a chance to customize url intents?
+            // Utils.addGoogleUriAccountIntentExtras(mContext, uri, mAccount, intent);
+
+            try {
+                mActivity.getActivityContext().startActivity(intent);
+                result = true;
+            } catch (ActivityNotFoundException ex) {
+                // If no application can handle the URL, assume that the
+                // caller can handle it.
+            }
+
+            return result;
+        }
+
     }
 
     /**