From 409adff3f732f368f37078537c022c5b826ab6af Mon Sep 17 00:00:00 2001 From: Lucas Rocha Date: Mon, 8 Jul 2013 23:02:02 +0100 Subject: [PATCH] Bug 882716 - Add getFaviconBytesForUrl() to BrowserDB (r=wesj) --- mobile/android/base/db/BrowserDB.java | 6 +++ mobile/android/base/db/LocalBrowserDB.java | 44 ++++++++++++++-------- 2 files changed, 35 insertions(+), 15 deletions(-) diff --git a/mobile/android/base/db/BrowserDB.java b/mobile/android/base/db/BrowserDB.java index 22dc4b2b208..0a72926941a 100644 --- a/mobile/android/base/db/BrowserDB.java +++ b/mobile/android/base/db/BrowserDB.java @@ -87,6 +87,8 @@ public class BrowserDB { public Bitmap getFaviconForUrl(ContentResolver cr, String uri); + public byte[] getFaviconBytesForUrl(ContentResolver cr, String uri); + public Cursor getFaviconsForUrls(ContentResolver cr, List urls); public String getFaviconUrlForHistoryUrl(ContentResolver cr, String url); @@ -237,6 +239,10 @@ public class BrowserDB { return sDb.getFaviconForUrl(cr, uri); } + public static byte[] getFaviconBytesForUrl(ContentResolver cr, String uri) { + return sDb.getFaviconBytesForUrl(cr, uri); + } + public static Cursor getFaviconsForUrls(ContentResolver cr, List urls) { return sDb.getFaviconsForUrls(cr, urls); } diff --git a/mobile/android/base/db/LocalBrowserDB.java b/mobile/android/base/db/LocalBrowserDB.java index 9d48955fb6a..2a8b2b9de35 100644 --- a/mobile/android/base/db/LocalBrowserDB.java +++ b/mobile/android/base/db/LocalBrowserDB.java @@ -686,27 +686,41 @@ public class LocalBrowserDB implements BrowserDB.BrowserDBIface { @Override public Bitmap getFaviconForUrl(ContentResolver cr, String uri) { - Cursor c = cr.query(mCombinedUriWithProfile, - new String[] { Combined.FAVICON }, - Combined.URL + " = ?", - new String[] { uri }, - null); - - if (!c.moveToFirst()) { - c.close(); + final byte[] b = getFaviconBytesForUrl(cr, uri); + if (b == null || b.length == 0) { return null; } - int faviconIndex = c.getColumnIndexOrThrow(Combined.FAVICON); - byte[] b = c.getBlob(faviconIndex); - c.close(); - - if (b == null || b.length == 0) - return null; - return BitmapUtils.decodeByteArray(b); } + @Override + public byte[] getFaviconBytesForUrl(ContentResolver cr, String uri) { + Cursor c = null; + byte[] b = null; + + try { + c = cr.query(mCombinedUriWithProfile, + new String[] { Combined.FAVICON }, + Combined.URL + " = ?", + new String[] { uri }, + null); + + if (!c.moveToFirst()) { + return null; + } + + final int faviconIndex = c.getColumnIndexOrThrow(Combined.FAVICON); + b = c.getBlob(faviconIndex); + } finally { + if (c != null) { + c.close(); + } + } + + return b; + } + @Override public String getFaviconUrlForHistoryUrl(ContentResolver cr, String uri) { Cursor c = cr.query(mHistoryUriWithProfile,