[tor-commits] [orbot/master] Fixes VPN Request Cancel Bugs

n8fr8 at torproject.org n8fr8 at torproject.org
Fri Jul 5 12:40:01 UTC 2019


commit 2ebd338483d29588beba30323bed0ad22ed11fcb
Author: bim <dsnake at protonmail.com>
Date:   Wed Jun 26 23:12:53 2019 -0400

    Fixes VPN Request Cancel Bugs
    
    - Cancelling the VPN Permission Request left the user on a blank screen. This happened on the main activity and in the onboarding flow
    - If on the main screen you enable VPN but then deny the permission, the switch was previously activiated despite VPN permissions being
      denied.
---
 .../org/torproject/android/OrbotMainActivity.java  |  5 +-
 .../torproject/android/vpn/VPNEnableActivity.java  | 53 +++++++++-------------
 2 files changed, 25 insertions(+), 33 deletions(-)

diff --git a/app/src/main/java/org/torproject/android/OrbotMainActivity.java b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
index 59a6d89b..e280147e 100644
--- a/app/src/main/java/org/torproject/android/OrbotMainActivity.java
+++ b/app/src/main/java/org/torproject/android/OrbotMainActivity.java
@@ -602,7 +602,7 @@ public class OrbotMainActivity extends AppCompatActivity
         Prefs.putUseVpn(enable);
 
         if (enable) {
-            startActivity(new Intent(OrbotMainActivity.this, VPNEnableActivity.class));
+            startActivityForResult(new Intent(OrbotMainActivity.this, VPNEnableActivity.class), REQUEST_VPN);
         } else
             stopVpnService();
 
@@ -952,8 +952,9 @@ public class OrbotMainActivity extends AppCompatActivity
 			if (response == RESULT_OK) {
                 sendIntentToService(TorServiceConstants.CMD_VPN);
             }
-			else
+			else if (response == VPNEnableActivity.ACTIVITY_RESULT_VPN_DENIED)
 			{
+			    mBtnVPN.setChecked(false);
 				Prefs.putUseVpn(false);
 			}
         }
diff --git a/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java b/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java
index e883913f..c1b30c50 100644
--- a/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java
+++ b/app/src/main/java/org/torproject/android/vpn/VPNEnableActivity.java
@@ -24,20 +24,15 @@ public class VPNEnableActivity extends AppCompatActivity {
 	private Handler h = new Handler();
 	
 	@Override
-	public void onCreate( Bundle icicle ) {
-		
+	public void onCreate(Bundle icicle ) {
 		requestWindowFeature(Window.FEATURE_NO_TITLE);
-        //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 
 		super.onCreate( icicle );
 
 		Log.d("VPNEnableActivity","prompting user to start Orbot VPN");
-
-		
 	}
 	
-	public void onResume ()
-	{
+	public void onResume() {
 		super.onResume();
 		
 		if (checkVpn)
@@ -53,10 +48,9 @@ public class VPNEnableActivity extends AppCompatActivity {
 		}
 	}
 	
-	public void promptStartVpnService ()
-    {
+	public void promptStartVpnService () {
+		// todo no actual prompting happens here and this should be refactored
 		startVpnService();
-         
     }
 	 
 	private void startVpnService ()
@@ -88,27 +82,27 @@ public class VPNEnableActivity extends AppCompatActivity {
    		}
 
 	}
-	
-	  @Override
-	    protected void onActivityResult(int request, int response, Intent data) {
-	        super.onActivityResult(request, response, data);
+
+	public static final int ACTIVITY_RESULT_VPN_DENIED = 63;
+
+	@Override
+	protected void onActivityResult(int request, int response, Intent data) {
+		super.onActivityResult(request, response, data);
 	        
-	        if (request == REQUEST_VPN && response == RESULT_OK)
-	        {
-	            sendIntentToService(TorServiceConstants.CMD_VPN);	    
-	            
-	            h.postDelayed(new Runnable () {
-	            	
-	            	public void run ()
-	            	{
-	            		sendIntentToService(TorServiceConstants.ACTION_START);		
-	            		 finish();
+		if (request == REQUEST_VPN && response == RESULT_OK) {
+			sendIntentToService(TorServiceConstants.CMD_VPN);
+			h.postDelayed(new Runnable () {
+	            	@Override
+	            	public void run () {
+	            		sendIntentToService(TorServiceConstants.ACTION_START);
+	            		finish();
 	            	}
 	            }, 1000);
-	            
-	           
-	            
-	        }
+		}
+		else if (request == REQUEST_VPN && response == RESULT_CANCELED) {
+			setResult(ACTIVITY_RESULT_VPN_DENIED);
+			finish();
+		}
 	  }
 	  
 
@@ -122,8 +116,5 @@ public class VPNEnableActivity extends AppCompatActivity {
 			{
 				startService(torService);
 			}
-
-
 		}
-    
 }





More information about the tor-commits mailing list