From 984aa133ece036119d33e02abb0f34dc8602ab4a Mon Sep 17 00:00:00 2001 From: Anthony Restaino Date: Mon, 4 Apr 2016 21:59:35 -0400 Subject: [PATCH] Fixed null pointer exception, fixed threading bug on ICS, upgraded leak canary version --- app/build.gradle | 4 ++-- .../lightning/activity/BrowserActivity.java | 7 +++++-- .../lightning/async/ImageDownloadTask.java | 15 +++++++++++++-- .../lightning/fragment/BookmarksFragment.java | 2 +- .../browser/lightning/object/SearchAdapter.java | 2 +- .../lightning/view/LightningChromeClient.java | 6 +++--- 6 files changed, 25 insertions(+), 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9f1ce7a..55b9cfb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -101,7 +101,7 @@ dependencies { compile project(':libnetcipher') // memory leak analysis - debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta1' - releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1' + debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2' + releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' provided 'javax.annotation:jsr250-api:1.0' } \ No newline at end of file diff --git a/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java b/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java index 83c763e..b33a653 100644 --- a/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java +++ b/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java @@ -1752,6 +1752,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements } mCustomViewCallback = null; setRequestedOrientation(mOriginalOrientation); + setTabHeight(); } private class VideoCompletionListener implements MediaPlayer.OnCompletionListener, @@ -1795,8 +1796,6 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements Window window = getWindow(); View decor = window.getDecorView(); if (enabled) { - window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, - WindowManager.LayoutParams.FLAG_FULLSCREEN); if (immersive) { decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION @@ -1804,7 +1803,11 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); + } else { + decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); } + window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); } else { window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); diff --git a/app/src/main/java/acr/browser/lightning/async/ImageDownloadTask.java b/app/src/main/java/acr/browser/lightning/async/ImageDownloadTask.java index aeb108a..e229e8f 100644 --- a/app/src/main/java/acr/browser/lightning/async/ImageDownloadTask.java +++ b/app/src/main/java/acr/browser/lightning/async/ImageDownloadTask.java @@ -1,5 +1,6 @@ package acr.browser.lightning.async; +import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; @@ -141,9 +142,19 @@ public class ImageDownloadTask extends AsyncTask { super.onPostExecute(bitmap); AsyncExecutor.getInstance().notifyThreadFinish(); final Bitmap fav = Utils.padFavicon(bitmap); - ImageView view = mFaviconImage.get(); + final ImageView view = mFaviconImage.get(); if (view != null && view.getTag().equals(mWeb.getUrl().hashCode())) { - view.setImageBitmap(fav); + Context context = view.getContext(); + if (context instanceof Activity) { + ((Activity) context).runOnUiThread(new Runnable() { + @Override + public void run() { + view.setImageBitmap(fav); + } + }); + } else { + view.setImageBitmap(fav); + } } mWeb.setBitmap(fav); } diff --git a/app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java b/app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java index feaa6db..1614508 100644 --- a/app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java +++ b/app/src/main/java/acr/browser/lightning/fragment/BookmarksFragment.java @@ -100,7 +100,7 @@ public class BookmarksFragment extends Fragment implements View.OnClickListener, public void onSubscribe(@NonNull Subscriber subscriber) { Context context = getContext(); if (context != null) { - mBookmarkAdapter = new BookmarkViewAdapter(getContext(), mBookmarks); + mBookmarkAdapter = new BookmarkViewAdapter(context, mBookmarks); setBookmarkDataSet(mBookmarkManager.getBookmarksFromFolder(null, true), false); subscriber.onNext(mBookmarkAdapter); } diff --git a/app/src/main/java/acr/browser/lightning/object/SearchAdapter.java b/app/src/main/java/acr/browser/lightning/object/SearchAdapter.java index 9a185b9..370d5ff 100644 --- a/app/src/main/java/acr/browser/lightning/object/SearchAdapter.java +++ b/app/src/main/java/acr/browser/lightning/object/SearchAdapter.java @@ -417,7 +417,7 @@ public class SearchAdapter extends BaseAdapter implements Filterable { connection.disconnect(); cacheFile.setLastModified(System.currentTimeMillis()); } catch (Exception e) { - e.printStackTrace(); + Log.w(TAG, "Problem getting search suggestions", e); } finally { Utils.close(in); Utils.close(fos); diff --git a/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java b/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java index bc04014..0bbef7e 100644 --- a/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java +++ b/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java @@ -64,8 +64,8 @@ class LightningChromeClient extends WebChromeClient { * * @param icon the icon to cache */ - private static void cacheFavicon(final String url, @Nullable final Bitmap icon, @NonNull final Context context) { - if (icon == null) return; + private static void cacheFavicon(@Nullable final String url, @Nullable final Bitmap icon, @NonNull final Context context) { + if (icon == null || url == null) return; final Uri uri = Uri.parse(url); if (uri.getHost() == null) { return; @@ -82,7 +82,7 @@ class LightningChromeClient extends WebChromeClient { mLightningView.getTitleInfo().setTitle(mActivity.getString(R.string.untitled)); } mUIController.tabChanged(mLightningView); - if (view != null) { + if (view != null && view.getUrl() != null) { mUIController.updateHistory(title, view.getUrl()); } }