void configurePackages(VpnService.Builder builder, Configuration config) { Set<String> allowOnVpn = new HashSet<>(); Set<String> doNotAllowOnVpn = new HashSet<>(); config.whitelist.resolve(vpnService.getPackageManager(), allowOnVpn, doNotAllowOnVpn); if (config.whitelist.defaultMode == Configuration.Whitelist.DEFAULT_MODE_NOT_ON_VPN) { for (String app : allowOnVpn) { try { Log.d(TAG, "configure: Allowing " + app + " to use the DNS VPN"); builder.addAllowedApplication(app); } catch (Exception e) { Log.w(TAG, "configure: Cannot disallow", e); } } } else { for (String app : doNotAllowOnVpn) { try { Log.d(TAG, "configure: Disallowing " + app + " from using the DNS VPN"); builder.addDisallowedApplication(app); } catch (Exception e) { Log.w(TAG, "configure: Cannot disallow", e); } } } }
final List<String> disallowed = new ArrayList<>(); final List<String> allowed = new ArrayList<>(); when(builder.addDisallowedApplication(anyString())).thenAnswer(new Answer<Object>() { @Override public Object answer(InvocationOnMock invocation) throws Throwable {
builder.addDisallowedApplication(name);
builder.addDisallowedApplication(excludedApplication);
builder.addDisallowedApplication(packageName);
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private void setAllowedVpnPackages(Builder builder) { boolean atLeastOneAllowedApp = false; for (String pkg : mProfile.mAllowedAppsVpn) { try { if (mProfile.mAllowedAppsVpnAreDisallowed) { builder.addDisallowedApplication(pkg); } else { builder.addAllowedApplication(pkg); atLeastOneAllowedApp = true; } } catch (PackageManager.NameNotFoundException e) { mProfile.mAllowedAppsVpn.remove(pkg); VpnStatus.logInfo(R.string.app_no_longer_exists, pkg); } } if (!mProfile.mAllowedAppsVpnAreDisallowed && !atLeastOneAllowedApp) { VpnStatus.logDebug(R.string.no_allowed_app, getPackageName()); try { builder.addAllowedApplication(getPackageName()); } catch (PackageManager.NameNotFoundException e) { VpnStatus.logError("This should not happen: " + e.getLocalizedMessage()); } } if (mProfile.mAllowedAppsVpnAreDisallowed) { VpnStatus.logDebug(R.string.disallowed_vpn_apps_info, TextUtils.join(", ", mProfile.mAllowedAppsVpn)); } else { VpnStatus.logDebug(R.string.allowed_vpn_apps_info, TextUtils.join(", ", mProfile.mAllowedAppsVpn)); } }