diff --git a/app/src/LightningLite/java/acr/browser/lightning/utils/ProxyUtils.java b/app/src/LightningLite/java/acr/browser/lightning/utils/ProxyUtils.java deleted file mode 100644 index 67c681a..0000000 --- a/app/src/LightningLite/java/acr/browser/lightning/utils/ProxyUtils.java +++ /dev/null @@ -1,210 +0,0 @@ -package acr.browser.lightning.utils; - -import android.app.Activity; -import android.content.DialogInterface; -import android.support.v7.app.AlertDialog; -import android.util.Log; - -import net.i2p.android.ui.I2PAndroidHelper; - -import javax.inject.Inject; -import javax.inject.Singleton; - -import acr.browser.lightning.R; -import acr.browser.lightning.app.BrowserApp; -import acr.browser.lightning.bus.BrowserEvents; -import acr.browser.lightning.constant.Constants; -import acr.browser.lightning.preference.PreferenceManager; -import info.guardianproject.netcipher.proxy.OrbotHelper; -import info.guardianproject.netcipher.web.WebkitProxy; - -@Singleton -public class ProxyUtils { - // Helper - private static boolean mI2PHelperBound; - private static boolean mI2PProxyInitialized; - - @Inject PreferenceManager mPreferences; - @Inject I2PAndroidHelper mI2PHelper; - - @Inject - public ProxyUtils() { - BrowserApp.getAppComponent().inject(this); - } - - /* - * If Orbot/Tor or I2P is installed, prompt the user if they want to enable - * proxying for this session - */ - public void checkForProxy(final Activity activity) { - boolean useProxy = mPreferences.getUseProxy(); - - final boolean orbotInstalled = OrbotHelper.isOrbotInstalled(activity); - boolean orbotChecked = mPreferences.getCheckedForTor(); - boolean orbot = orbotInstalled && !orbotChecked; - - boolean i2pInstalled = mI2PHelper.isI2PAndroidInstalled(); - boolean i2pChecked = mPreferences.getCheckedForI2P(); - boolean i2p = i2pInstalled && !i2pChecked; - - // TODO Is the idea to show this per-session, or only once? - if (!useProxy && (orbot || i2p)) { - if (orbot) mPreferences.setCheckedForTor(true); - if (i2p) mPreferences.setCheckedForI2P(true); - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - - if (orbotInstalled && i2pInstalled) { - String[] proxyChoices = activity.getResources().getStringArray(R.array.proxy_choices_array); - builder.setTitle(activity.getResources().getString(R.string.http_proxy)) - .setSingleChoiceItems(proxyChoices, mPreferences.getProxyChoice(), - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - mPreferences.setProxyChoice(which); - } - }) - .setNeutralButton(activity.getResources().getString(R.string.action_ok), - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (mPreferences.getUseProxy()) - initializeProxy(activity); - } - }); - } else { - DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - switch (which) { - case DialogInterface.BUTTON_POSITIVE: - mPreferences.setProxyChoice(orbotInstalled ? - Constants.PROXY_ORBOT : Constants.PROXY_I2P); - initializeProxy(activity); - break; - case DialogInterface.BUTTON_NEGATIVE: - mPreferences.setProxyChoice(Constants.NO_PROXY); - break; - } - } - }; - - builder.setMessage(orbotInstalled ? R.string.use_tor_prompt : R.string.use_i2p_prompt) - .setPositiveButton(R.string.yes, dialogClickListener) - .setNegativeButton(R.string.no, dialogClickListener); - } - builder.show(); - } - } - - /* - * Initialize WebKit Proxying - */ - private void initializeProxy(Activity activity) { - String host; - int port; - - switch (mPreferences.getProxyChoice()) { - case Constants.NO_PROXY: - // We shouldn't be here - return; - - case Constants.PROXY_ORBOT: - if (!OrbotHelper.isOrbotRunning(activity)) - OrbotHelper.requestStartTor(activity); - host = "localhost"; - port = 8118; - break; - - case Constants.PROXY_I2P: - mI2PProxyInitialized = true; - if (mI2PHelperBound && !mI2PHelper.isI2PAndroidRunning()) { - mI2PHelper.requestI2PAndroidStart(activity); - } - host = "localhost"; - port = 4444; - break; - - default: - host = mPreferences.getProxyHost(); - port = mPreferences.getProxyPort(); - } - - try { - WebkitProxy.setProxy(BrowserApp.class.getName(), activity.getApplicationContext(), null, host, port); - } catch (Exception e) { - Log.d(Constants.TAG, "error enabling web proxying", e); - } - - } - - public boolean isProxyReady() { - if (mPreferences.getProxyChoice() == Constants.PROXY_I2P) { - if (!mI2PHelper.isI2PAndroidRunning()) { - BrowserApp.getBus() - .post(new BrowserEvents.ShowSnackBarMessage(R.string.i2p_not_running)); - return false; - } else if (!mI2PHelper.areTunnelsActive()) { - BrowserApp.getBus() - .post(new BrowserEvents.ShowSnackBarMessage(R.string.i2p_tunnels_not_ready)); - return false; - } - } - - return true; - } - - public void updateProxySettings(Activity activity) { - if (mPreferences.getUseProxy()) { - initializeProxy(activity); - } else { - try { - WebkitProxy.resetProxy(BrowserApp.class.getName(), activity.getApplicationContext()); - } catch (Exception e) { - e.printStackTrace(); - } - - mI2PProxyInitialized = false; - } - } - - public void onStop() { - mI2PHelper.unbind(); - mI2PHelperBound = false; - } - - public void onStart(final Activity activity) { - if (mPreferences.getProxyChoice() == Constants.PROXY_I2P) { - // Try to bind to I2P Android - mI2PHelper.bind(new I2PAndroidHelper.Callback() { - @Override - public void onI2PAndroidBound() { - mI2PHelperBound = true; - if (mI2PProxyInitialized && !mI2PHelper.isI2PAndroidRunning()) - mI2PHelper.requestI2PAndroidStart(activity); - } - }); - } - } - - public static int setProxyChoice(int choice, Activity activity) { - switch (choice) { - case Constants.PROXY_ORBOT: - if (!OrbotHelper.isOrbotInstalled(activity)) { - choice = Constants.NO_PROXY; - Utils.showSnackbar(activity, R.string.install_orbot); - } - break; - - case Constants.PROXY_I2P: - I2PAndroidHelper ih = new I2PAndroidHelper(BrowserApp.getContext()); - if (!ih.isI2PAndroidInstalled()) { - choice = Constants.NO_PROXY; - ih.promptToInstall(activity); - } - break; - case Constants.PROXY_MANUAL: - break; - } - return choice; - } -} 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 2e02d5f..aabab80 100644 --- a/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java +++ b/app/src/main/java/acr/browser/lightning/activity/BrowserActivity.java @@ -183,7 +183,7 @@ public abstract class BrowserActivity extends ThemableBrowserActivity implements // Event bus @Inject Bus mEventBus; - @Inject LightningDialogBuilder bookmarksDialogBuilder; + @Inject LightningDialogBuilder mBookmarksDialogBuilder; @Inject TabsManager mTabsManager; diff --git a/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java b/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java index af21b40..b67411c 100644 --- a/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java +++ b/app/src/main/java/acr/browser/lightning/activity/SettingsActivity.java @@ -21,7 +21,7 @@ import acr.browser.lightning.R; public class SettingsActivity extends ThemableSettingsActivity { - private static final List fragments = new ArrayList<>(); + private static final List mFragments = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { @@ -44,19 +44,19 @@ public class SettingsActivity extends ThemableSettingsActivity { @Override public void onBuildHeaders(List
target) { loadHeadersFromResource(R.xml.preferences_headers, target); - fragments.clear(); + mFragments.clear(); for (Header header : target) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { // Workaround for bug in the AppCompat support library header.iconRes = R.drawable.empty; } - fragments.add(header.fragment); + mFragments.add(header.fragment); } } @Override protected boolean isValidFragment(String fragmentName) { - return fragments.contains(fragmentName); + return mFragments.contains(fragmentName); } @Override diff --git a/app/src/main/java/acr/browser/lightning/activity/TabsManager.java b/app/src/main/java/acr/browser/lightning/activity/TabsManager.java index fc34eed..e21982e 100644 --- a/app/src/main/java/acr/browser/lightning/activity/TabsManager.java +++ b/app/src/main/java/acr/browser/lightning/activity/TabsManager.java @@ -34,11 +34,8 @@ public class TabsManager { private final List mWebViewList = new ArrayList<>(); private LightningView mCurrentTab; - @Inject - PreferenceManager mPreferenceManager; - - @Inject - Bus mEventBus; + @Inject PreferenceManager mPreferenceManager; + @Inject Bus mEventBus; @Inject public TabsManager() {} diff --git a/app/src/main/java/acr/browser/lightning/app/AppModule.java b/app/src/main/java/acr/browser/lightning/app/AppModule.java index bed1d9a..93959c3 100644 --- a/app/src/main/java/acr/browser/lightning/app/AppModule.java +++ b/app/src/main/java/acr/browser/lightning/app/AppModule.java @@ -14,34 +14,28 @@ import dagger.Provides; @Module public class AppModule { - private final BrowserApp app; - private final Bus bus; + private final BrowserApp mApp; + private final Bus mBus; public AppModule(BrowserApp app) { - this.app = app; - this.bus = new Bus(); + this.mApp = app; + this.mBus = new Bus(); } @Provides public Context provideContext() { - return app.getApplicationContext(); - } - - @Provides - @Singleton - public BookmarkManager provideBookmarkManager() { - return new BookmarkManager(app.getApplicationContext()); + return mApp.getApplicationContext(); } @Provides public Bus provideBus() { - return bus; + return mBus; } @Provides @Singleton public I2PAndroidHelper provideI2PAndroidHelper() { - return new I2PAndroidHelper(app.getApplicationContext()); + return new I2PAndroidHelper(mApp.getApplicationContext()); } } diff --git a/app/src/main/java/acr/browser/lightning/app/BrowserApp.java b/app/src/main/java/acr/browser/lightning/app/BrowserApp.java index 92b38ff..be3905f 100644 --- a/app/src/main/java/acr/browser/lightning/app/BrowserApp.java +++ b/app/src/main/java/acr/browser/lightning/app/BrowserApp.java @@ -11,22 +11,18 @@ import java.util.concurrent.Executors; import javax.inject.Inject; -import acr.browser.lightning.constant.BookmarkPage; -import acr.browser.lightning.database.HistoryDatabase; -import acr.browser.lightning.preference.PreferenceManager; - public class BrowserApp extends Application { - private static AppComponent appComponent; + private static AppComponent mAppComponent; private static final Executor mIOThread = Executors.newSingleThreadExecutor(); - @Inject Bus bus; + @Inject Bus mBus; @Override public void onCreate() { super.onCreate(); - appComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build(); - appComponent.inject(this); + mAppComponent = DaggerAppComponent.builder().appModule(new AppModule(this)).build(); + mAppComponent.inject(this); LeakCanary.install(this); } @@ -35,7 +31,7 @@ public class BrowserApp extends Application { } public static AppComponent getAppComponent() { - return appComponent; + return mAppComponent; } public static Executor getIOThread() { @@ -43,7 +39,7 @@ public class BrowserApp extends Application { } public static Bus getBus(Context context) { - return get(context).bus; + return get(context).mBus; } } 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 232c23c..23aafdb 100644 --- a/app/src/main/java/acr/browser/lightning/async/ImageDownloadTask.java +++ b/app/src/main/java/acr/browser/lightning/async/ImageDownloadTask.java @@ -25,7 +25,7 @@ public class ImageDownloadTask extends AsyncTask { private static final String TAG = ImageDownloadTask.class.getSimpleName(); private final File mCacheDir; - private final WeakReference bmImage; + private final WeakReference mFaviconImage; private final HistoryItem mWeb; private final String mUrl; private final Bitmap mDefaultBitmap; @@ -37,7 +37,7 @@ public class ImageDownloadTask extends AsyncTask { // Set a tag on the ImageView so we know if the view // has gone out of scope and should not be used bmImage.setTag(web.getUrl().hashCode()); - this.bmImage = new WeakReference<>(bmImage); + this.mFaviconImage = new WeakReference<>(bmImage); this.mWeb = web; this.mUrl = web.getUrl(); this.mDefaultBitmap = defaultBitmap; @@ -135,7 +135,7 @@ public class ImageDownloadTask extends AsyncTask { super.onPostExecute(bitmap); AsyncExecutor.getInstance().notifyThreadFinish(); final Bitmap fav = Utils.padFavicon(bitmap); - ImageView view = bmImage.get(); + ImageView view = mFaviconImage.get(); if (view != null && view.getTag().equals(mWeb.getUrl().hashCode())) { view.setImageBitmap(fav); } diff --git a/app/src/main/java/acr/browser/lightning/database/BookmarkManager.java b/app/src/main/java/acr/browser/lightning/database/BookmarkManager.java index 81777a6..82655b4 100644 --- a/app/src/main/java/acr/browser/lightning/database/BookmarkManager.java +++ b/app/src/main/java/acr/browser/lightning/database/BookmarkManager.java @@ -32,6 +32,7 @@ import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import javax.inject.Inject; import javax.inject.Singleton; import acr.browser.lightning.R; @@ -52,12 +53,12 @@ public class BookmarkManager { private final String DEFAULT_BOOKMARK_TITLE; private Map mBookmarksMap; - // private final List mBookmarkList = new ArrayList<>(); private String mCurrentFolder = ""; private final ExecutorService mExecutor; private boolean mReady = false; private final File mFilesDir; + @Inject public BookmarkManager(Context context) { mExecutor = Executors.newSingleThreadExecutor(); mFilesDir = context.getFilesDir(); diff --git a/app/src/main/java/acr/browser/lightning/dialog/LightningDialogBuilder.java b/app/src/main/java/acr/browser/lightning/dialog/LightningDialogBuilder.java index 77a0cfb..e86d3cb 100644 --- a/app/src/main/java/acr/browser/lightning/dialog/LightningDialogBuilder.java +++ b/app/src/main/java/acr/browser/lightning/dialog/LightningDialogBuilder.java @@ -40,11 +40,8 @@ import acr.browser.lightning.utils.Utils; public class LightningDialogBuilder { @Inject BookmarkManager mBookmarkManager; - @Inject PreferenceManager mPreferenceManager; - @Inject HistoryDatabase mHistoryDatabase; - @Inject Bus mEventBus; @Inject diff --git a/app/src/main/java/acr/browser/lightning/fragment/TabsFragment.java b/app/src/main/java/acr/browser/lightning/fragment/TabsFragment.java index 8377c1f..a915f21 100644 --- a/app/src/main/java/acr/browser/lightning/fragment/TabsFragment.java +++ b/app/src/main/java/acr/browser/lightning/fragment/TabsFragment.java @@ -73,14 +73,9 @@ public class TabsFragment extends Fragment implements View.OnClickListener, View private LightningViewAdapter mTabsAdapter; private UIController mUiController; - @Inject - TabsManager tabsManager; - - @Inject - Bus mBus; - - @Inject - PreferenceManager mPreferences; + @Inject TabsManager tabsManager; + @Inject Bus mBus; + @Inject PreferenceManager mPreferences; public TabsFragment() { BrowserApp.getAppComponent().inject(this); diff --git a/app/src/main/java/acr/browser/lightning/receiver/NetworkReceiver.java b/app/src/main/java/acr/browser/lightning/receiver/NetworkReceiver.java index 3c39475..2759353 100644 --- a/app/src/main/java/acr/browser/lightning/receiver/NetworkReceiver.java +++ b/app/src/main/java/acr/browser/lightning/receiver/NetworkReceiver.java @@ -9,8 +9,7 @@ import android.net.NetworkInfo; public class NetworkReceiver extends BroadcastReceiver { @Override - public void onReceive(Context context, Intent intent) { - } + public void onReceive(Context context, Intent intent) {} public static boolean isConnected(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); diff --git a/app/src/main/java/acr/browser/lightning/utils/AdBlock.java b/app/src/main/java/acr/browser/lightning/utils/AdBlock.java index 9b4661c..a568d1e 100644 --- a/app/src/main/java/acr/browser/lightning/utils/AdBlock.java +++ b/app/src/main/java/acr/browser/lightning/utils/AdBlock.java @@ -14,11 +14,13 @@ import java.util.Locale; import java.util.Set; import javax.inject.Inject; +import javax.inject.Singleton; import acr.browser.lightning.app.BrowserApp; import acr.browser.lightning.constant.Constants; import acr.browser.lightning.preference.PreferenceManager; +@Singleton public class AdBlock { private static final String TAG = "AdBlock"; @@ -34,18 +36,11 @@ public class AdBlock { private final Set mBlockedDomainsList = new HashSet<>(); private boolean mBlockAds; private static final Locale mLocale = Locale.getDefault(); - private static AdBlock mInstance; @Inject PreferenceManager mPreferenceManager; - public static AdBlock getInstance(Context context) { - if (mInstance == null) { - mInstance = new AdBlock(context); - } - return mInstance; - } - - private AdBlock(Context context) { + @Inject + public AdBlock(Context context) { BrowserApp.getAppComponent().inject(this); if (mBlockedDomainsList.isEmpty() && Constants.FULL_VERSION) { loadHostsFile(context); diff --git a/app/src/LightningPlus/java/acr/browser/lightning/utils/ProxyUtils.java b/app/src/main/java/acr/browser/lightning/utils/ProxyUtils.java similarity index 100% rename from app/src/LightningPlus/java/acr/browser/lightning/utils/ProxyUtils.java rename to app/src/main/java/acr/browser/lightning/utils/ProxyUtils.java diff --git a/app/src/main/java/acr/browser/lightning/view/IconCacheTask.java b/app/src/main/java/acr/browser/lightning/view/IconCacheTask.java index 94c915d..c7b08ff 100644 --- a/app/src/main/java/acr/browser/lightning/view/IconCacheTask.java +++ b/app/src/main/java/acr/browser/lightning/view/IconCacheTask.java @@ -1,5 +1,6 @@ package acr.browser.lightning.view; +import android.app.Application; import android.content.Context; import android.graphics.Bitmap; import android.net.Uri; @@ -16,12 +17,12 @@ import acr.browser.lightning.utils.Utils; class IconCacheTask implements Runnable { private final Uri uri; private final Bitmap icon; - private final Context context; + private final Application app; - public IconCacheTask(final Uri uri, final Bitmap icon, final Context context) { + public IconCacheTask(final Uri uri, final Bitmap icon, final Application app) { this.uri = uri; this.icon = icon; - this.context = BrowserApp.get(context); + this.app = app; } @Override @@ -30,7 +31,7 @@ class IconCacheTask implements Runnable { Log.d(Constants.TAG, "Caching icon for " + uri.getHost()); FileOutputStream fos = null; try { - File image = new File(context.getCacheDir(), hash + ".png"); + File image = new File(app.getCacheDir(), hash + ".png"); fos = new FileOutputStream(image); icon.compress(Bitmap.CompressFormat.PNG, 100, fos); fos.flush(); 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 2a5aacf..9d8dfed 100644 --- a/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java +++ b/app/src/main/java/acr/browser/lightning/view/LightningChromeClient.java @@ -80,7 +80,7 @@ class LightningChromeClient extends WebChromeClient { if (uri.getHost() == null) { return; } - BrowserApp.getIOThread().execute(new IconCacheTask(uri, icon, context)); + BrowserApp.getIOThread().execute(new IconCacheTask(uri, icon, BrowserApp.get(context))); } diff --git a/app/src/main/java/acr/browser/lightning/view/LightningViewTitle.java b/app/src/main/java/acr/browser/lightning/view/LightningViewTitle.java index 84e922e..697455a 100644 --- a/app/src/main/java/acr/browser/lightning/view/LightningViewTitle.java +++ b/app/src/main/java/acr/browser/lightning/view/LightningViewTitle.java @@ -18,10 +18,8 @@ class LightningViewTitle { private static Bitmap DEFAULT_ICON = null; - @NonNull - private Bitmap mFavicon; - @NonNull - private String mTitle; + @NonNull private Bitmap mFavicon; + @NonNull private String mTitle; public LightningViewTitle(@NonNull Context context, boolean darkTheme) { if (DEFAULT_ICON == null) { diff --git a/app/src/main/java/acr/browser/lightning/view/LightningWebClient.java b/app/src/main/java/acr/browser/lightning/view/LightningWebClient.java index 368811f..efab798 100644 --- a/app/src/main/java/acr/browser/lightning/view/LightningWebClient.java +++ b/app/src/main/java/acr/browser/lightning/view/LightningWebClient.java @@ -50,18 +50,17 @@ public class LightningWebClient extends WebViewClient { private final Activity mActivity; private final LightningView mLightningView; private final UIController mUIController; - private final AdBlock mAdBlock; private final Bus mEventBus; private final IntentUtils mIntentUtils; @Inject ProxyUtils mProxyUtils; + @Inject AdBlock mAdBlock; LightningWebClient(Activity activity, LightningView lightningView) { BrowserApp.getAppComponent().inject(this); mActivity = activity; mUIController = (UIController) activity; mLightningView = lightningView; - mAdBlock = AdBlock.getInstance(activity); mAdBlock.updatePreference(); mEventBus = BrowserApp.getBus(activity); mIntentUtils = new IntentUtils(activity);