1 package android.app; 2 3 import static android.os.Build.VERSION_CODES.R; 4 import static android.os.Build.VERSION_CODES.TIRAMISU; 5 import static com.google.common.truth.Truth.assertThat; 6 7 import android.net.VpnManager; 8 import android.net.VpnProfileState; 9 import androidx.test.core.app.ActivityScenario; 10 import androidx.test.core.app.ApplicationProvider; 11 import androidx.test.ext.junit.runners.AndroidJUnit4; 12 import androidx.test.filters.SdkSuppress; 13 import org.junit.Test; 14 import org.junit.runner.RunWith; 15 import org.robolectric.testapp.TestActivity; 16 17 /** Compatibility test for {@link VpnManager}. */ 18 @RunWith(AndroidJUnit4.class) 19 @SdkSuppress(minSdkVersion = R) 20 public class VpnManagerTest { 21 22 @Test vpnManager_applicationInstance_isNotSameAsActivityInstance()23 public void vpnManager_applicationInstance_isNotSameAsActivityInstance() { 24 VpnManager applicationVpnManager = 25 ApplicationProvider.getApplicationContext().getSystemService(VpnManager.class); 26 try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) { 27 scenario.onActivity( 28 activity -> { 29 VpnManager activityVpnManager = activity.getSystemService(VpnManager.class); 30 assertThat(applicationVpnManager).isNotSameInstanceAs(activityVpnManager); 31 }); 32 } 33 } 34 35 @Test vpnManager_activityInstance_isSameAsActivityInstance()36 public void vpnManager_activityInstance_isSameAsActivityInstance() { 37 try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) { 38 scenario.onActivity( 39 activity -> { 40 VpnManager activityVpnManager = activity.getSystemService(VpnManager.class); 41 VpnManager anotherActivityVpnManager = activity.getSystemService(VpnManager.class); 42 assertThat(anotherActivityVpnManager).isSameInstanceAs(activityVpnManager); 43 }); 44 } 45 } 46 47 @Test 48 @SdkSuppress(minSdkVersion = TIRAMISU) vpnManager_instance_retrievesSameProfileState()49 public void vpnManager_instance_retrievesSameProfileState() { 50 VpnManager applicationVpnManager = 51 ApplicationProvider.getApplicationContext().getSystemService(VpnManager.class); 52 try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) { 53 scenario.onActivity( 54 activity -> { 55 VpnManager activityVpnManager = activity.getSystemService(VpnManager.class); 56 57 VpnProfileState applicationProfileState = 58 applicationVpnManager.getProvisionedVpnProfileState(); 59 VpnProfileState activityProfileState = 60 activityVpnManager.getProvisionedVpnProfileState(); 61 62 assertThat(activityProfileState).isEqualTo(applicationProfileState); 63 }); 64 } 65 } 66 } 67