Fix browser crash on high resolution device while adding bookmark

The bitmap of page was being sent as part of intent. The binder
was throwing an exception due to large size of bitmap. Removed
the bitmap from intent and added a static method in Controller
to expose the bitmap object.

CR-Fixed: SWE-4171

Change-Id: I9000b3ffa83e2846881fef5486bee07479a7b2ce
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 747b779..80a5a42 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -254,6 +254,7 @@
     private String mUpdateMyNavThumbnailUrl;
     private float mLevel = 0.0f;
     private WebView.HitTestResult mResult;
+    private static Bitmap mBookmarkBitmap;
 
     public Controller(Activity browser) {
         mActivity = browser;
@@ -2309,6 +2310,16 @@
         BrowserPreferencesPage.startPreferencesForResult(mActivity, getCurrentTopWebView().getUrl(), PREFERENCES_PAGE);
     }
 
+    // This function is specifically used from AddBookmark Activity.
+    // The bookmark activity clears the bitmap after retrieving it.
+    // The function usage elsewhere will result in breaking bookmark
+    // functionality.
+    public static Bitmap getAndReleaseLastBookmarkBitmapFromIntent() {
+        Bitmap bitmap = mBookmarkBitmap;
+        mBookmarkBitmap = null;
+        return bitmap;
+    }
+
     @Override
     public void bookmarkCurrentPage() {
         WebView w = getCurrentTopWebView();
@@ -2321,7 +2332,7 @@
             new ValueCallback<Bitmap>() {
                 @Override
                     public void onReceiveValue(Bitmap bitmap) {
-                    i.putExtra(BrowserContract.Bookmarks.THUMBNAIL, bitmap);
+                    mBookmarkBitmap = bitmap;
                     mActivity.startActivity(i);
                 }
             });
@@ -2620,7 +2631,6 @@
         if (view == null || width == 0 || height == 0) {
             return;
         }
-
         view.getContentBitmapAsync(
             (float) width / view.getWidth(),
             new Rect(),