Browse Source

Fixing potential null pointers

master
anthony restaino 8 years ago
parent
commit
63e77995ac
  1. 49
      app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java
  2. 1
      app/src/main/java/acr/browser/lightning/dialog/LightningDialogBuilder.java
  3. 25
      app/src/main/java/acr/browser/lightning/favicon/ImageFetcher.java
  4. 8
      app/src/main/java/acr/browser/lightning/search/BaseSuggestionsModel.java

49
app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java

@ -750,7 +750,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
public boolean dispatchKeyEvent(KeyEvent event) { public boolean dispatchKeyEvent(KeyEvent event) {
// Keyboard shortcuts // Keyboard shortcuts
if (event.isCtrlPressed() && event.getAction() == KeyEvent.ACTION_DOWN) { if (event.isCtrlPressed() && event.getAction() == KeyEvent.ACTION_DOWN) {
switch(event.getKeyCode()) { switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_T: case KeyEvent.KEYCODE_T:
// Open new tab // Open new tab
newTab(null, true); newTab(null, true);
@ -765,23 +765,32 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
return true; return true;
case KeyEvent.KEYCODE_R: case KeyEvent.KEYCODE_R:
// Refresh current tab // Refresh current tab
mTabsManager.getCurrentTab().reload(); LightningView currentTab = mTabsManager.getCurrentTab();
if (currentTab != null) {
currentTab.reload();
}
return true; return true;
case KeyEvent.KEYCODE_TAB: case KeyEvent.KEYCODE_TAB:
int nextIndex = 0; int nextIndex = 0;
if(event.isShiftPressed()) { if (event.isShiftPressed()) {
// Go back one tab // Go back one tab
if(mTabsManager.indexOfCurrentTab() > 0) nextIndex = mTabsManager.indexOfCurrentTab() - 1; if (mTabsManager.indexOfCurrentTab() > 0) {
else nextIndex = mTabsManager.last(); nextIndex = mTabsManager.indexOfCurrentTab() - 1;
} else {
nextIndex = mTabsManager.last();
}
} else { } else {
// Go forward one tab // Go forward one tab
if(mTabsManager.indexOfCurrentTab() < mTabsManager.last()) nextIndex = mTabsManager.indexOfCurrentTab() + 1; if (mTabsManager.indexOfCurrentTab() < mTabsManager.last()) {
else nextIndex = 0; nextIndex = mTabsManager.indexOfCurrentTab() + 1;
} else {
nextIndex = 0;
}
} }
mPresenter.tabChanged(nextIndex); mPresenter.tabChanged(nextIndex);
return true; return true;
} }
} else if(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_SEARCH) { } else if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_SEARCH) {
// Highlight search field // Highlight search field
mSearch.requestFocus(); mSearch.requestFocus();
mSearch.selectAll(); mSearch.selectAll();
@ -1648,18 +1657,18 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
private void openDownloads() { private void openDownloads() {
new DownloadsPage().getDownloadsPage() new DownloadsPage().getDownloadsPage()
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(Schedulers.main()) .observeOn(Schedulers.main())
.subscribe(new SingleOnSubscribe<String>() { .subscribe(new SingleOnSubscribe<String>() {
@Override @Override
public void onItem(@Nullable String item) { public void onItem(@Nullable String item) {
Preconditions.checkNonNull(item); Preconditions.checkNonNull(item);
LightningView view = mTabsManager.getCurrentTab(); LightningView view = mTabsManager.getCurrentTab();
if (view != null) { if (view != null) {
view.loadUrl(item); view.loadUrl(item);
}
} }
}); }
});
} }
private View getBookmarkDrawer() { private View getBookmarkDrawer() {
@ -2178,7 +2187,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements
public void handleDownloadDeleted() { public void handleDownloadDeleted() {
final LightningView currentTab = mTabsManager.getCurrentTab(); final LightningView currentTab = mTabsManager.getCurrentTab();
if (currentTab != null && currentTab.getUrl().startsWith(Constants.FILE) if (currentTab != null && currentTab.getUrl().startsWith(Constants.FILE)
&& currentTab.getUrl().endsWith(DownloadsPage.FILENAME)) { && currentTab.getUrl().endsWith(DownloadsPage.FILENAME)) {
currentTab.loadDownloadspage(); currentTab.loadDownloadspage();
} }
if (currentTab != null) { if (currentTab != null) {

1
app/src/main/java/acr/browser/lightning/dialog/LightningDialogBuilder.java

@ -16,7 +16,6 @@ import android.widget.AutoCompleteTextView;
import android.widget.EditText; import android.widget.EditText;
import com.anthonycr.bonsai.CompletableOnSubscribe; import com.anthonycr.bonsai.CompletableOnSubscribe;
import com.anthonycr.bonsai.CompletableSubscriber;
import com.anthonycr.bonsai.Schedulers; import com.anthonycr.bonsai.Schedulers;
import com.anthonycr.bonsai.SingleOnSubscribe; import com.anthonycr.bonsai.SingleOnSubscribe;

25
app/src/main/java/acr/browser/lightning/favicon/ImageFetcher.java

@ -8,12 +8,14 @@ import android.support.annotation.Nullable;
import android.util.Log; import android.util.Log;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import acr.browser.lightning.utils.Utils; import acr.browser.lightning.utils.Utils;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
import okhttp3.ResponseBody;
/** /**
* An image fetcher that creates image * An image fetcher that creates image
@ -65,11 +67,17 @@ class ImageFetcher {
Request imageRequest = new Request.Builder().url(url).build(); Request imageRequest = new Request.Builder().url(url).build();
Response boundsResponse = mHttpClient.newCall(imageRequest).execute(); Response boundsResponse = mHttpClient.newCall(imageRequest).execute();
boundsStream = boundsResponse.body().byteStream(); ResponseBody boundsBody = boundsResponse.body();
if (boundsBody == null) {
return null;
}
boundsStream = boundsBody.byteStream();
BitmapFactory.decodeStream(boundsStream, null, mLoaderOptions); BitmapFactory.decodeStream(boundsStream, null, mLoaderOptions);
boundsResponse.body().close(); boundsBody.close();
int size = Utils.dpToPx(24); int size = Utils.dpToPx(24);
@ -77,12 +85,19 @@ class ImageFetcher {
mLoaderOptions.inJustDecodeBounds = false; mLoaderOptions.inJustDecodeBounds = false;
Response imageResponse = mHttpClient.newCall(imageRequest).execute(); Response imageResponse = mHttpClient.newCall(imageRequest).execute();
iconStream = imageResponse.body().byteStream();
ResponseBody imageBody = imageResponse.body();
if (imageBody == null) {
return null;
}
iconStream = imageBody.byteStream();
icon = BitmapFactory.decodeStream(iconStream, null, mLoaderOptions); icon = BitmapFactory.decodeStream(iconStream, null, mLoaderOptions);
imageResponse.body().close(); imageBody.close();
} catch (Exception e) { } catch (IOException exception) {
Log.d(TAG, "Unable to download icon: " + url); Log.d(TAG, "Unable to download icon: " + url);
} finally { } finally {
Utils.close(boundsStream); Utils.close(boundsStream);

8
app/src/main/java/acr/browser/lightning/search/BaseSuggestionsModel.java

@ -26,6 +26,7 @@ import okhttp3.Interceptor;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.Request; import okhttp3.Request;
import okhttp3.Response; import okhttp3.Response;
import okhttp3.ResponseBody;
abstract class BaseSuggestionsModel { abstract class BaseSuggestionsModel {
@ -112,9 +113,10 @@ abstract class BaseSuggestionsModel {
Response suggestionsResponse = mHttpClient.newCall(suggestionsRequest).execute(); Response suggestionsResponse = mHttpClient.newCall(suggestionsRequest).execute();
return suggestionsResponse.body().byteStream(); ResponseBody responseBody = suggestionsResponse.body();
} catch (Exception e) { return responseBody != null ? responseBody.byteStream() : null;
Log.e(TAG, "Problem getting search suggestions", e); } catch (IOException exception) {
Log.e(TAG, "Problem getting search suggestions", exception);
} }
return null; return null;

Loading…
Cancel
Save