MDM Adjust bookmarks implementation for new UI

Recent UI changes to bookmarks broke the MDM overlay functionality
because the new Tile based containers do not have a way to get
pre-layout continer metrics.

The solution is to get the metrics from dimen resource (xml).

I also refactored overlayBookmarkBitmap() to take container metrics
as input and perform all pre-scaling calculations internally, which
simplifies calling code.  Also added an overlayMarginX parameter, which
allows side-to side adjustment of the overlay.

Change-Id: I17ea1ea6ca9412d8ab960fdfc4e9ca5fbe5c30c3
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 05bd248..59d4a68 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -333,19 +333,31 @@
                 || type == BrowserContract.Bookmarks.BOOKMARK_TYPE_FOLDER;
     }
 
-    public static Bitmap overlayBookmarkBitmap(Bitmap origImage, int overlayResId, Context context,
-                                               float overlayScaleFactor, int overlayOffsetY) {
+    public static Bitmap overlayBookmarkBitmap(Context context, Bitmap origImage, int overlayResId,
+                                               int containerWidth, int containerHeight,
+                                               float overlayScale, int overlayOffsetY,
+                                               int overlayMarginX) {
         if (origImage == null) {
             Log.e(TAG, "Orig Image is null!");
             return origImage;
         }
+
         // Get metrics for incoming bitmap
         int origWidth = origImage.getWidth();
         int origHeight = origImage.getHeight();
 
+        // Compute final overlay scale factor based on container size
+        float willScale, overlayScaleFactor;
+        if (Math.abs(containerWidth - origWidth) > Math.abs(containerHeight - origHeight)) {
+            willScale = (float) containerWidth / (float) origWidth;
+        }
+        else {
+            willScale = (float) containerHeight / (float) origHeight;
+        }
+        overlayScaleFactor = overlayScale / willScale;
+
         // Load the bitmap for the badge
         Bitmap srcOverlay = BitmapFactory.decodeResource(context.getResources(), overlayResId);
-
         if (srcOverlay == null) {
             Log.e(TAG, "Overlay bitmap creation failed");
             return origImage;
@@ -376,11 +388,11 @@
         Canvas comboImage = new Canvas(overlaid);
         comboImage.drawBitmap(origImage, 0, 0, null);
 
-        // align overlay to right edge. Vertical alingment
+        // align overlay to right edge. Vertical alignment
         // determined by overlayOffsetY
         comboImage.drawBitmap(scaledOverlay,
-                origWidth  - scaledOverlay.getWidth(),
-                overlayOffsetY,
+                (origWidth  - scaledOverlay.getWidth()) - (overlayMarginX / willScale),
+                (overlayOffsetY / willScale),
                 null);
 
         // Clean up our bitmaps
@@ -411,22 +423,19 @@
             }
         }
 
-        // if mdm element or edit bookmak restriction enforced, overlay an indicator
-        int containerWidth = item.getFavIconIntrinsicWidth();
-        if (containerWidth != 0 &&
-                (isMdmElem || EditBookmarksRestriction.getInstance().isEnabled())) {
-            float willScale = (float) containerWidth / (float) bitmap.getWidth();
+        // if mdm element or edit bookmark restriction enforced, overlay an indicator
+        if (isMdmElem || EditBookmarksRestriction.getInstance().isEnabled()) {
+            int containerSize = getResources().
+                    getDimensionPixelSize(R.dimen.bookmark_widget_favicon_size);  // it's square!
             if (isMdmElem) {
-                float overlayscale = 0.3f;
-                float overlayVertPos = 50f;
-                bitmap = overlayBookmarkBitmap(bitmap, R.drawable.img_deco_mdm_badge_bright,
-                        getActivity(), overlayscale / willScale, (int) (overlayVertPos/willScale));
+                bitmap = overlayBookmarkBitmap(getActivity(), bitmap,
+                        R.drawable.img_deco_mdm_badge_bright,
+                        containerSize, containerSize, 0.25f, 40, 0);
             }
             else if (EditBookmarksRestriction.getInstance().isEnabled()) {
-                float overlayscale = 1.3f;
-                float overlayVertPos = -25f;
-                bitmap = overlayBookmarkBitmap(bitmap, R.drawable.ic_deco_secure,
-                        getActivity(), overlayscale / willScale, (int) (overlayVertPos/willScale));
+                bitmap = overlayBookmarkBitmap(getActivity(), bitmap,
+                        R.drawable.ic_deco_secure,
+                        containerSize, containerSize, 0.75f, 0, 0);
             }
         }