Updated Orbot Preference Handling

This commit is contained in:
Anthony Restaino 2014-07-08 21:35:13 -04:00
parent 58eec7d871
commit 8dcfd05c58
5 changed files with 76 additions and 11 deletions

View File

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<lint> <lint>
<issue id="NewApi" severity="ignore" />
</lint> </lint>

View File

@ -159,5 +159,9 @@
<string name="title_adblock">AdBlock</string> <string name="title_adblock">AdBlock</string>
<string name="message_adblock">AdBlock is currently only available in the browser\'s paid version, Lightning Browser+. It is available to download on Google Play.</string> <string name="message_adblock">AdBlock is currently only available in the browser\'s paid version, Lightning Browser+. It is available to download on Google Play.</string>
<string name="enable_orbot">Enable Orbot</string> <string name="enable_orbot">Enable Orbot</string>
<string name="use_tor_prompt">It looks like you have Orbot installed. Do you want to use Tor?</string>
<string name="install_orbot">Please install Orbot in order to proxy with Tor.</string>
<string name="yes">Yes</string>
<string name="no">No</string>
</resources> </resources>

View File

@ -455,13 +455,49 @@ public class BrowserActivity extends Activity implements BrowserController {
PreferenceConstants.USE_PROXY, false); PreferenceConstants.USE_PROXY, false);
OrbotHelper oh = new OrbotHelper(this); 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(); initializeTor();
return true; return true;
} } else {
mEditPrefs.putBoolean(PreferenceConstants.USE_PROXY, false);
mEditPrefs.apply();
return false; return false;
} }
}
/* /*
* Initialize WebKit Proxying for Tor * Initialize WebKit Proxying for Tor
@ -483,6 +519,7 @@ public class BrowserActivity extends Activity implements BrowserController {
} catch (Exception e) { } catch (Exception e) {
Log.d(Constants.LOGTAG, "error enabling web proxying", e); Log.d(Constants.LOGTAG, "error enabling web proxying", e);
} }
} }
/* /*
@ -587,7 +624,17 @@ public class BrowserActivity extends Activity implements BrowserController {
} }
updateCookiePreference(); 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();
}
}
} }
/* /*

View File

@ -35,4 +35,5 @@ public class PreferenceConstants {
public static final String USE_PROXY = "useProxy"; public static final String USE_PROXY = "useProxy";
public static final String USE_PROXY_HOST = "useProxyHost"; public static final String USE_PROXY_HOST = "useProxyHost";
public static final String USE_PROXY_PORT = "useProxyPort"; public static final String USE_PROXY_PORT = "useProxyPort";
public static final String INITIAL_CHECK_FOR_TOR = "checkForTor";
} }

View File

@ -3,6 +3,7 @@
*/ */
package acr.browser.lightning; package acr.browser.lightning;
import info.guardianproject.onionkit.ui.OrbotHelper;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
@ -230,6 +231,7 @@ public class SettingsActivity extends Activity {
} }
adblock.setChecked(mPreferences.getBoolean( adblock.setChecked(mPreferences.getBoolean(
PreferenceConstants.BLOCK_ADS, false)); PreferenceConstants.BLOCK_ADS, false));
orbot.setChecked(mPreferences.getBoolean(PreferenceConstants.USE_PROXY, false));
initSwitch(location, fullScreen, flash, adblock, orbot); initSwitch(location, fullScreen, flash, adblock, orbot);
clickListenerForSwitches(layoutLocation, layoutFullScreen, layoutFlash, clickListenerForSwitches(layoutLocation, layoutFullScreen, layoutFlash,
@ -361,8 +363,9 @@ public class SettingsActivity extends Activity {
public void clickListenerForSwitches(RelativeLayout one, public void clickListenerForSwitches(RelativeLayout one,
RelativeLayout two, RelativeLayout three, RelativeLayout two, RelativeLayout three,
RelativeLayout layoutBlockAds, RelativeLayout layoutOrbot, final Switch loc, final Switch full, RelativeLayout layoutBlockAds, RelativeLayout layoutOrbot,
final Switch flash, final Switch adblock, final Switch orbot) { final Switch loc, final Switch full, final Switch flash,
final Switch adblock, final Switch orbot) {
layoutBlockAds.setOnClickListener(new OnClickListener() { layoutBlockAds.setOnClickListener(new OnClickListener() {
@Override @Override
@ -405,7 +408,12 @@ public class SettingsActivity extends Activity {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (orbot.isEnabled()) {
orbot.setChecked(!orbot.isChecked()); 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() { orbot.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(CompoundButton buttonView, public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) { boolean isChecked) {
mEditPrefs.putBoolean(PreferenceConstants.USE_PROXY, mEditPrefs.putBoolean(PreferenceConstants.USE_PROXY, isChecked);
isChecked);
mEditPrefs.commit(); mEditPrefs.commit();
} }