From 8dcfd05c588a91392e77b15d9af1dd489244beb0 Mon Sep 17 00:00:00 2001 From: Anthony Restaino Date: Tue, 8 Jul 2014 21:35:13 -0400 Subject: [PATCH] Updated Orbot Preference Handling --- lint.xml | 1 + res/values/strings.xml | 4 ++ .../browser/lightning/BrowserActivity.java | 59 +++++++++++++++++-- .../lightning/PreferenceConstants.java | 1 + .../browser/lightning/SettingsActivity.java | 22 +++++-- 5 files changed, 76 insertions(+), 11 deletions(-) diff --git a/lint.xml b/lint.xml index ee0eead..7edd00c 100644 --- a/lint.xml +++ b/lint.xml @@ -1,3 +1,4 @@ + \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 2b071a3..e148cd0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -159,5 +159,9 @@ AdBlock AdBlock is currently only available in the browser\'s paid version, Lightning Browser+. It is available to download on Google Play. Enable Orbot + It looks like you have Orbot installed. Do you want to use Tor? + Please install Orbot in order to proxy with Tor. + Yes + No \ No newline at end of file diff --git a/src/acr/browser/lightning/BrowserActivity.java b/src/acr/browser/lightning/BrowserActivity.java index 6449d3b..d77e023 100644 --- a/src/acr/browser/lightning/BrowserActivity.java +++ b/src/acr/browser/lightning/BrowserActivity.java @@ -455,12 +455,48 @@ public class BrowserActivity extends Activity implements BrowserController { PreferenceConstants.USE_PROXY, false); OrbotHelper oh = new OrbotHelper(this); - if (oh.isOrbotInstalled() & useProxy == true) { + if (oh.isOrbotInstalled() + && !mPreferences.getBoolean( + PreferenceConstants.INITIAL_CHECK_FOR_TOR, false)) { + mEditPrefs.putBoolean(PreferenceConstants.INITIAL_CHECK_FOR_TOR, + true); + mEditPrefs.apply(); + DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + switch (which) { + case DialogInterface.BUTTON_POSITIVE: + mPreferences + .edit() + .putBoolean(PreferenceConstants.USE_PROXY, true) + .apply(); + + initializeTor(); + break; + case DialogInterface.BUTTON_NEGATIVE: + mPreferences + .edit() + .putBoolean(PreferenceConstants.USE_PROXY, + false).apply(); + break; + } + } + }; + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage(R.string.use_tor_prompt) + .setPositiveButton(R.string.yes, dialogClickListener) + .setNegativeButton(R.string.no, dialogClickListener).show(); + + return true; + } else if (oh.isOrbotInstalled() & useProxy == true) { initializeTor(); return true; + } else { + mEditPrefs.putBoolean(PreferenceConstants.USE_PROXY, false); + mEditPrefs.apply(); + return false; } - - return false; } /* @@ -471,7 +507,7 @@ public class BrowserActivity extends Activity implements BrowserController { OrbotHelper oh = new OrbotHelper(this); if (!oh.isOrbotRunning()) oh.requestOrbotStart(this); - + WebkitProxy wkp = new WebkitProxy(); try { String host = mPreferences.getString( @@ -483,6 +519,7 @@ public class BrowserActivity extends Activity implements BrowserController { } catch (Exception e) { Log.d(Constants.LOGTAG, "error enabling web proxying", e); } + } /* @@ -587,7 +624,17 @@ public class BrowserActivity extends Activity implements BrowserController { } updateCookiePreference(); - + if (mPreferences.getBoolean(PreferenceConstants.USE_PROXY, false)) { + initializeTor(); + } else { + try { + WebkitProxy.resetProxy("acr.browser.lightning.BrowserApp", + getApplicationContext()); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } /* @@ -2415,7 +2462,7 @@ public class BrowserActivity extends Activity implements BrowserController { } } - //Override this, use finish() for Incognito, moveTaskToBack for Main + // Override this, use finish() for Incognito, moveTaskToBack for Main public void closeActivity() { finish(); } diff --git a/src/acr/browser/lightning/PreferenceConstants.java b/src/acr/browser/lightning/PreferenceConstants.java index 948a83d..b2f9844 100644 --- a/src/acr/browser/lightning/PreferenceConstants.java +++ b/src/acr/browser/lightning/PreferenceConstants.java @@ -35,4 +35,5 @@ public class PreferenceConstants { public static final String USE_PROXY = "useProxy"; public static final String USE_PROXY_HOST = "useProxyHost"; public static final String USE_PROXY_PORT = "useProxyPort"; + public static final String INITIAL_CHECK_FOR_TOR = "checkForTor"; } diff --git a/src/acr/browser/lightning/SettingsActivity.java b/src/acr/browser/lightning/SettingsActivity.java index a0f2e8a..ed8009a 100644 --- a/src/acr/browser/lightning/SettingsActivity.java +++ b/src/acr/browser/lightning/SettingsActivity.java @@ -3,6 +3,7 @@ */ package acr.browser.lightning; +import info.guardianproject.onionkit.ui.OrbotHelper; import android.net.Uri; import android.os.Bundle; import android.os.Environment; @@ -230,6 +231,7 @@ public class SettingsActivity extends Activity { } adblock.setChecked(mPreferences.getBoolean( PreferenceConstants.BLOCK_ADS, false)); + orbot.setChecked(mPreferences.getBoolean(PreferenceConstants.USE_PROXY, false)); initSwitch(location, fullScreen, flash, adblock, orbot); clickListenerForSwitches(layoutLocation, layoutFullScreen, layoutFlash, @@ -361,8 +363,9 @@ public class SettingsActivity extends Activity { public void clickListenerForSwitches(RelativeLayout one, RelativeLayout two, RelativeLayout three, - RelativeLayout layoutBlockAds, RelativeLayout layoutOrbot, final Switch loc, final Switch full, - final Switch flash, final Switch adblock, final Switch orbot) { + RelativeLayout layoutBlockAds, RelativeLayout layoutOrbot, + final Switch loc, final Switch full, final Switch flash, + final Switch adblock, final Switch orbot) { layoutBlockAds.setOnClickListener(new OnClickListener() { @Override @@ -405,7 +408,12 @@ public class SettingsActivity extends Activity { @Override public void onClick(View v) { - orbot.setChecked(!orbot.isChecked()); + if (orbot.isEnabled()) { + orbot.setChecked(!orbot.isChecked()); + } else { + Utils.showToast(mContext, + getResources().getString(R.string.install_orbot)); + } } }); @@ -509,13 +517,17 @@ public class SettingsActivity extends Activity { } }); + OrbotHelper oh = new OrbotHelper(this); + if (!oh.isOrbotInstalled()) { + orbot.setEnabled(false); + } + orbot.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - mEditPrefs.putBoolean(PreferenceConstants.USE_PROXY, - isChecked); + mEditPrefs.putBoolean(PreferenceConstants.USE_PROXY, isChecked); mEditPrefs.commit(); }