Add new api for host with region precision

Update existing changes to include host related changes
This commit is contained in:
deeppandya
2024-09-06 03:22:51 +05:30
parent 068ca7cfc4
commit 59a9881828
19 changed files with 156 additions and 30 deletions
@@ -127,8 +127,9 @@ public class BraveVpnNativeWorker {
BraveVpnNativeWorkerJni.get().getTimezonesForRegions(mNativeBraveVpnNativeWorker);
}
public void getHostnamesForRegion(String region) {
BraveVpnNativeWorkerJni.get().getHostnamesForRegion(mNativeBraveVpnNativeWorker, region);
public void getHostnamesForRegion(String region, String regionPrecision) {
BraveVpnNativeWorkerJni.get()
.getHostnamesForRegion(mNativeBraveVpnNativeWorker, region, regionPrecision);
}
public void getWireguardProfileCredentials(
@@ -191,7 +192,8 @@ public class BraveVpnNativeWorker {
void getTimezonesForRegions(long nativeBraveVpnNativeWorker);
void getHostnamesForRegion(long nativeBraveVpnNativeWorker, String region);
void getHostnamesForRegion(
long nativeBraveVpnNativeWorker, String region, String regionPrecision);
void getWireguardProfileCredentials(
long nativeBraveVpnNativeWorker,
@@ -185,7 +185,6 @@ public abstract class BraveVpnParentActivity
@Override
public void onGetHostnamesForRegion(String jsonHostNames, boolean isSuccess) {
Log.e("brave_vpn", "jsonHostNames : " + jsonHostNames);
KeyPair keyPair = new KeyPair();
mBraveVpnPrefModel.setClientPrivateKey(keyPair.getPrivateKey().toBase64());
mBraveVpnPrefModel.setClientPublicKey(keyPair.getPublicKey().toBase64());
@@ -60,6 +60,12 @@ public class VpnPaywallActivity extends BraveVpnParentActivity {
private SelectedPlanType mSelectedPlanType = SelectedPlanType.YEARLY;
private ProductDetails mProductDetails;
@Override
public void onResumeWithNative() {
super.onResumeWithNative();
BraveVpnUtils.dismissProgressDialog();
}
private void initializeViews() {
setContentView(R.layout.activity_vpn_paywall);
@@ -17,6 +17,7 @@ import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import org.chromium.brave_vpn.mojom.BraveVpnConstants;
import org.chromium.brave_vpn.mojom.Region;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.vpn.adapters.VpnServerAdapter;
@@ -37,7 +38,7 @@ public class VpnServerActivity extends BraveVpnParentActivity {
private RecyclerView mServerRegionList;
public interface OnCitySelection {
void onCityClick(Region city);
void onCityClick(Region city, int position);
}
private void initializeViews() {
@@ -99,11 +100,12 @@ public class VpnServerActivity extends BraveVpnParentActivity {
mVpnServerAdapter = new VpnServerAdapter(VpnServerActivity.this);
mVpnServerAdapter.setCities(cities);
mVpnServerAdapter.setRegion(region);
mVpnServerAdapter.setOnCitySelection(
new OnCitySelection() {
@Override
public void onCityClick(Region city) {
if (BraveVpnPrefUtils.getServerRegion().equals(city.name)) {
public void onCityClick(Region city, int position) {
if (BraveVpnPrefUtils.getRegionName().equals(city.name)) {
Toast.makeText(
VpnServerActivity.this,
R.string.already_selected_the_server,
@@ -115,7 +117,11 @@ public class VpnServerActivity extends BraveVpnParentActivity {
region.countryIsoCode,
region.name,
region.namePretty,
city.namePretty);
city.name,
city.namePretty,
position == 0
? BraveVpnConstants.REGION_PRECISION_COUNTRY
: BraveVpnConstants.REGION_PRECISION_CITY);
changeServerRegion();
}
}
@@ -25,6 +25,7 @@ import org.chromium.brave_vpn.mojom.ServiceHandler;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.vpn.BraveVpnServiceFactoryAndroid;
import org.chromium.chrome.browser.vpn.adapters.BraveVpnServerSelectionAdapter;
import org.chromium.chrome.browser.vpn.models.BraveVpnServerRegion;
import org.chromium.chrome.browser.vpn.utils.BraveVpnPrefUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnUtils;
import org.chromium.mojo.bindings.ConnectionErrorHandler;
@@ -89,14 +90,21 @@ public class VpnServerSelectionActivity extends BraveVpnParentActivity
MaterialSwitch automaticSwitch =
(MaterialSwitch) findViewById(R.id.automatic_server_switch);
boolean isAutomatic =
BraveVpnPrefUtils.getServerRegion()
BraveVpnPrefUtils.getRegionName()
.equals(BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC);
mServerRegionList.setVisibility(isAutomatic ? View.GONE : View.VISIBLE);
automaticSwitch.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
BraveVpnUtils.selectedServerRegion = null;
BraveVpnUtils.selectedServerRegion =
new BraveVpnServerRegion(
"",
BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC,
"",
"",
BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC,
BraveVpnConstants.REGION_PRECISION_COUNTRY);
changeServerRegion();
}
});
@@ -63,7 +63,7 @@ public class BraveVpnServerSelectionAdapter
R.plurals.server_text, region.serverCount, region.serverCount);
holder.cityServerText.setText(cityText.concat(serverText));
holder.serverRadioButton.setChecked(
BraveVpnPrefUtils.getServerRegion().equals(region.name));
BraveVpnPrefUtils.getRegionName().equals(region.name));
holder.serverSelectionItemLayout.setOnClickListener(
new View.OnClickListener() {
@Override
@@ -17,7 +17,6 @@ import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.radiobutton.MaterialRadioButton;
import org.chromium.base.Log;
import org.chromium.brave_vpn.mojom.Region;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.vpn.activities.VpnServerActivity.OnCitySelection;
@@ -30,6 +29,7 @@ public class VpnServerAdapter extends RecyclerView.Adapter<VpnServerAdapter.View
private final Context mContext;
private List<Region> mCities = new ArrayList<>();
private OnCitySelection mOnCitySelection;
private Region mRegion;
public VpnServerAdapter(Context context) {
this.mContext = context;
@@ -53,14 +53,15 @@ public class VpnServerAdapter extends RecyclerView.Adapter<VpnServerAdapter.View
.getQuantityString(
R.plurals.server_text, city.serverCount, city.serverCount);
holder.cityServerText.setText((position == 0) ? city.name : cityServerText);
Log.e("brave_vpn", "hostname : " + BraveVpnPrefUtils.getHostnameDisplay());
holder.serverRadioButton.setChecked(
BraveVpnPrefUtils.getHostnameDisplay().equals(city.namePretty));
boolean isEnabled =
BraveVpnPrefUtils.getRegionName().equals(mRegion.name)
&& BraveVpnPrefUtils.getRegionCityName().equals(city.name);
holder.serverRadioButton.setChecked(isEnabled);
holder.serverSelectionItemLayout.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnCitySelection.onCityClick(city);
mOnCitySelection.onCityClick(city, holder.getAdapterPosition());
}
});
}
@@ -71,6 +72,10 @@ public class VpnServerAdapter extends RecyclerView.Adapter<VpnServerAdapter.View
return mCities.size();
}
public void setRegion(Region region) {
this.mRegion = region;
}
public void setCities(List<Region> cities) {
this.mCities = cities;
}
@@ -11,17 +11,23 @@ public class BraveVpnServerRegion {
private String mCountryIsoCode;
private String mRegionName;
private String mRegionNamePretty;
private String mRegionCityName;
private String mRegionCityNamePretty;
private String mRegionPrecision;
public BraveVpnServerRegion(
String countryIsoCode,
String regionName,
String regionNamePretty,
String regionCityNamePretty) {
String regionCityName,
String regionCityNamePretty,
String regionPrecision) {
this.mCountryIsoCode = countryIsoCode;
this.mRegionName = regionName;
this.mRegionNamePretty = regionNamePretty;
this.mRegionCityName = regionCityName;
this.mRegionCityNamePretty = regionCityNamePretty;
this.mRegionPrecision = regionPrecision;
}
public String getCountryIsoCode() {
@@ -36,10 +42,18 @@ public class BraveVpnServerRegion {
return mRegionNamePretty;
}
public String getRegionCityName() {
return mRegionCityName;
}
public String getRegionCityNamePretty() {
return mRegionCityNamePretty;
}
public String getRegionPrecision() {
return mRegionPrecision;
}
@NonNull
@Override
public String toString() {
@@ -53,9 +67,16 @@ public class BraveVpnServerRegion {
+ ", mRegionNamePretty='"
+ mRegionNamePretty
+ '\''
+ ", mRegionCityName='"
+ mRegionCityName
+ '\''
+ ", mRegionCityNamePretty='"
+ mRegionCityNamePretty
+ '\''
+ '\''
+ ", mRegionPrecision='"
+ mRegionPrecision
+ '\''
+ '}';
}
}
@@ -15,6 +15,7 @@ import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import org.chromium.base.Log;
import org.chromium.brave_vpn.mojom.BraveVpnConstants;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.billing.InAppPurchaseWrapper;
import org.chromium.chrome.browser.billing.PurchaseModel;
@@ -75,10 +76,6 @@ public class BraveVpnApiResponseUtils {
TimeZone.getDefault().getID()));
return;
}
Log.e(
"brave_vpn",
"BraveVpnUtils.selectedServerRegion : "
+ BraveVpnUtils.selectedServerRegion.toString());
if (BraveVpnUtils.selectedServerRegion != null) {
if (!BraveVpnUtils.selectedServerRegion
.getRegionName()
@@ -86,9 +83,9 @@ public class BraveVpnApiResponseUtils {
region = BraveVpnUtils.selectedServerRegion.getRegionName();
braveVpnServerRegion = BraveVpnUtils.selectedServerRegion;
}
BraveVpnUtils.selectedServerRegion = null;
// BraveVpnUtils.selectedServerRegion = null;
} else {
String serverRegion = BraveVpnPrefUtils.getServerRegion();
String serverRegion = BraveVpnPrefUtils.getRegionName();
region =
serverRegion.equals(BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC)
? region
@@ -96,7 +93,18 @@ public class BraveVpnApiResponseUtils {
}
Log.e("brave_vpn", "handleOnGetTimezonesForRegions : region :" + region);
BraveVpnNativeWorker.getInstance().getHostnamesForRegion(region);
Log.e(
"brave_vpn",
"handleOnGetTimezonesForRegions : braveVpnServerRegion.getRegionPrecision() :"
+ braveVpnServerRegion.getRegionPrecision());
region =
(braveVpnServerRegion
.getRegionPrecision()
.equals(BraveVpnConstants.REGION_PRECISION_CITY)
? braveVpnServerRegion.getRegionCityName()
: region);
BraveVpnNativeWorker.getInstance()
.getHostnamesForRegion(region, braveVpnServerRegion.getRegionPrecision());
braveVpnPrefModel.setServerRegion(braveVpnServerRegion);
} else {
BraveVpnUtils.showToast(
@@ -32,7 +32,9 @@ public class BraveVpnPrefUtils {
private static final String PREF_BRAVE_VPN_SERVER_CHANGE_LOCATION = "server_change_location";
private static final String PREF_BRAVE_VPN_SERVER_ISO_CODE = "server_iso_code";
private static final String PREF_BRAVE_VPN_SERVER_NAME_PRETTY = "server_name_pretty";
private static final String PREF_BRAVE_VPN_SERVER_CITY_NAME = "server_city_name";
private static final String PREF_BRAVE_VPN_SERVER_CITY_NAME_PRETTY = "server_city_name_pretty";
private static final String PREF_BRAVE_VPN_SERVER_PRECISION = "server_precision";
private static final String PREF_BRAVE_VPN_RESET_CONFIGURATION =
"brave_vpn_reset_configuration";
@@ -155,7 +157,7 @@ public class BraveVpnPrefUtils {
return ChromeSharedPreferences.getInstance().readLong(PREF_BRAVE_VPN_PURCHASE_EXPIRY, 0);
}
public static String getServerRegion() {
public static String getRegionName() {
return ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_CHANGE_LOCATION, PREF_BRAVE_VPN_AUTOMATIC);
}
@@ -186,6 +188,16 @@ public class BraveVpnPrefUtils {
.writeString(PREF_BRAVE_VPN_SERVER_NAME_PRETTY, newValue);
}
public static String getRegionCityName() {
return ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_CITY_NAME, "");
}
public static void setRegionCityName(String newValue) {
ChromeSharedPreferences.getInstance()
.writeString(PREF_BRAVE_VPN_SERVER_CITY_NAME, newValue);
}
public static String getRegionCityNamePretty() {
return ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_CITY_NAME_PRETTY, "");
@@ -196,6 +208,16 @@ public class BraveVpnPrefUtils {
.writeString(PREF_BRAVE_VPN_SERVER_CITY_NAME_PRETTY, newValue);
}
public static String getRegionPrecision() {
return ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_PRECISION, "");
}
public static void setRegionPrecision(String newValue) {
ChromeSharedPreferences.getInstance()
.writeString(PREF_BRAVE_VPN_SERVER_PRECISION, newValue);
}
public static void setApiAuthToken(String value) {
ChromeSharedPreferences.getInstance().writeString(PREF_BRAVE_VPN_API_AUTH_TOKEN, value);
}
@@ -254,7 +276,9 @@ public class BraveVpnPrefUtils {
setRegionIsoCode(braveVpnPrefModel.getServerRegion().getCountryIsoCode());
setRegionName(braveVpnPrefModel.getServerRegion().getRegionName());
setRegionNamePretty(braveVpnPrefModel.getServerRegion().getRegionNamePretty());
setRegionCityName(braveVpnPrefModel.getServerRegion().getRegionCityName());
setRegionCityNamePretty(braveVpnPrefModel.getServerRegion().getRegionCityNamePretty());
setRegionPrecision(braveVpnPrefModel.getServerRegion().getRegionPrecision());
setPurchaseToken(braveVpnPrefModel.getPurchaseToken());
setProductId(braveVpnPrefModel.getProductId());
setSubscriberCredential(braveVpnPrefModel.getSubscriberCredential());
@@ -24,6 +24,7 @@ import org.json.JSONObject;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.brave_vpn.mojom.BraveVpnConstants;
import org.chromium.brave_vpn.mojom.Region;
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import org.chromium.chrome.browser.vpn.BraveVpnNativeWorker;
@@ -161,7 +162,9 @@ public class BraveVpnUtils {
region.getString("country-iso-code"),
region.getString("name"),
region.getString("name-pretty"),
BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC);
"",
BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC,
BraveVpnConstants.REGION_PRECISION_COUNTRY);
return braveVpnServerRegion;
}
}
@@ -261,7 +264,9 @@ public class BraveVpnUtils {
server.getString("country-iso-code"),
server.getString("name"),
server.getString("name-pretty"),
BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC);
"",
BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC,
BraveVpnConstants.REGION_PRECISION_COUNTRY);
vpnServerRegions.add(vpnServerRegion);
}
} catch (JSONException e) {