From 201eee38edbb3aa00f87ce7c52664f2fccbe5097 Mon Sep 17 00:00:00 2001 From: Chris Kitching Date: Mon, 14 Oct 2013 10:37:03 -0700 Subject: [PATCH] Bug 926497 - Prevent the favicon cache from throwing NPEs at odd moments. r=rnewman --- mobile/android/base/favicons/Favicons.java | 1 + mobile/android/base/favicons/LoadFaviconTask.java | 4 ++++ mobile/android/base/favicons/cache/FaviconCache.java | 6 +++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/mobile/android/base/favicons/Favicons.java b/mobile/android/base/favicons/Favicons.java index 00482ef61094..f34cc5071c1f 100644 --- a/mobile/android/base/favicons/Favicons.java +++ b/mobile/android/base/favicons/Favicons.java @@ -351,6 +351,7 @@ public class Favicons { "/favicon.ico", null, null).toString(); } catch (URISyntaxException e) { + Log.e(LOGTAG, "URISyntaxException getting default favicon URL", e); return null; } } diff --git a/mobile/android/base/favicons/LoadFaviconTask.java b/mobile/android/base/favicons/LoadFaviconTask.java index 14e8e57f20fa..e68d7fd79bb5 100644 --- a/mobile/android/base/favicons/LoadFaviconTask.java +++ b/mobile/android/base/favicons/LoadFaviconTask.java @@ -234,6 +234,10 @@ public class LoadFaviconTask extends UiAsyncTask { } else { // If we don't have a stored one, fall back to the default. mFaviconUrl = Favicons.guessDefaultFaviconURL(mPageUrl); + + if (TextUtils.isEmpty(mFaviconUrl)) { + return null; + } isUsingDefaultURL = true; } } diff --git a/mobile/android/base/favicons/cache/FaviconCache.java b/mobile/android/base/favicons/cache/FaviconCache.java index a1c54a336cb3..8c9ec411a07c 100644 --- a/mobile/android/base/favicons/cache/FaviconCache.java +++ b/mobile/android/base/favicons/cache/FaviconCache.java @@ -205,6 +205,10 @@ public class FaviconCache { * @return true if this favicon is blacklisted, false otherwise. */ public boolean isFailedFavicon(String faviconURL) { + if (faviconURL == null) { + return true; + } + startRead(); boolean isExpired = false; @@ -241,7 +245,7 @@ public class FaviconCache { // Flag to prevent finally from doubly-unlocking. isAborting = true; Log.e(LOGTAG, "FaviconCache exception!", unhandled); - return false; + return true; } finally { if (!isAborting) { if (isExpired) {