]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/helpers/OrbotProxyHelper.java
Wait for Orbot to connect when proxying though Orbot before trying to load a URL.
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / helpers / OrbotProxyHelper.java
index 87db7ea6c799ce24710181ba88286a98aa4378f0..8d0e408262fc8d993b3660466d3a1d1bd654c7e8 100644 (file)
@@ -39,6 +39,7 @@ import java.lang.reflect.Method;
 
 public class OrbotProxyHelper {
     public static void setProxy(Context privacyBrowserContext, Activity parentActivity, String proxyHost, String proxyPort) {
+
         // Set the proxy values
         System.setProperty("http.proxyHost", proxyHost);
         System.setProperty("http.proxyPort", proxyPort);
@@ -83,10 +84,20 @@ public class OrbotProxyHelper {
                 PackageManager packageManager = privacyBrowserContext.getPackageManager();
                 packageManager.getPackageInfo("org.torproject.android", PackageManager.GET_ACTIVITIES);
 
-                // Send an `intent` to start Orbot.  The intent will be ignored if it is already running.
-                Intent orbotIntent = new Intent("org.torproject.android.intent.action.START");
-                orbotIntent.setPackage("org.torproject.android");
-                privacyBrowserContext.sendBroadcast(orbotIntent);
+                // Ask Orbot to connect if its current status is not "ON".
+                if (!MainWebView.orbotStatus.equals("ON")) {
+                    // Request Orbot to start.
+                    Intent orbotIntent = new Intent("org.torproject.android.intent.action.START");
+
+                    // Send the intent to the Orbot package.
+                    orbotIntent.setPackage("org.torproject.android");
+
+                    // Request a status response be sent back to this package.
+                    orbotIntent.putExtra("org.torproject.android.intent.extra.PACKAGE_NAME", privacyBrowserContext.getPackageName());
+
+                    // Make it so.
+                    privacyBrowserContext.sendBroadcast(orbotIntent);
+                }
             } catch (PackageManager.NameNotFoundException exception){  // If an exception is thrown, Orbot is not installed.
                 // Build an `AlertDialog`.  `R.style.LightAlertDialog` formats the color of the button text.
                 AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(parentActivity, R.style.LightAlertDialog);