Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Advanced server selection follow up android #25604

Merged
merged 5 commits into from
Sep 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.ui.modaldialog.ModalDialogManager;

/**
* Brave's extension for TabbedAppMenuPropertiesDelegate
*/
import java.util.Locale;

/** Brave's extension for TabbedAppMenuPropertiesDelegate */
public class BraveTabbedAppMenuPropertiesDelegate extends TabbedAppMenuPropertiesDelegate {
private Menu mMenu;
private AppMenuDelegate mAppMenuDelegate;
Expand Down Expand Up @@ -131,12 +131,18 @@ public void prepareMenu(Menu menu, AppMenuHandler handler) {
menu.findItem(R.id.request_vpn_location_row_menu_id).getSubMenu();
MenuItem vpnLocationSubMenuItem =
vpnLocationSubMenu.findItem(R.id.request_vpn_location_id);
String isoCode = BraveVpnPrefUtils.getRegionIsoCode();
String country =
!BraveVpnPrefUtils.getRegionCountry().equals("")
? BraveVpnPrefUtils.getRegionCountry()
: new Locale("", isoCode).getDisplayCountry();

vpnLocationSubMenuItem.setTitle(
String.format(
serverLocation,
BraveVpnUtils.countryCodeToEmoji(
BraveVpnPrefUtils.getRegionIsoCode()),
BraveVpnPrefUtils.getRegionNamePretty()));
country));
MenuItem vpnLocationIconSubMenuItem =
vpnLocationSubMenu.findItem(R.id.request_vpn_location_icon_id);
Drawable drawable = vpnLocationIconSubMenuItem.getIcon();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public void finishNativeInitialization() {
new OnCitySelection() {
@Override
public void onCityClick(Region city, int position) {
if (BraveVpnPrefUtils.getRegionCityName().equals(city.name)) {
if (BraveVpnPrefUtils.getRegionName().equals(city.name)) {
Toast.makeText(
VpnServerActivity.this,
R.string.already_selected_the_server,
Expand All @@ -114,13 +114,14 @@ public void onCityClick(Region city, int position) {
} else {
BraveVpnUtils.selectedServerRegion =
new BraveVpnServerRegion(
region.countryIsoCode,
region.name,
region.namePretty,
false,
position == 0 ? region.country : city.country,
position == 0 ? region.continent : city.continent,
position == 0
? BraveVpnUtils.OPTIMAL_SERVER
: city.name,
city.namePretty,
? region.countryIsoCode
: city.countryIsoCode,
position == 0 ? region.name : city.name,
position == 0 ? region.namePretty : city.namePretty,
position == 0
? BraveVpnConstants.REGION_PRECISION_COUNTRY
: BraveVpnConstants.REGION_PRECISION_CITY);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,16 +98,16 @@ public void onClick(View v) {
if (mAutomaticSwitch.isChecked()) {
BraveVpnUtils.selectedServerRegion =
new BraveVpnServerRegion(
true,
"",
"",
BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC,
"",
BraveVpnUtils.OPTIMAL_SERVER,
BraveVpnPrefUtils.PREF_BRAVE_VPN_AUTOMATIC,
"",
BraveVpnConstants.REGION_PRECISION_COUNTRY);
changeServerRegion();
}

BraveVpnPrefUtils.setAutomaticServerSelection(mAutomaticSwitch.isChecked());
updateAutomaticSelection(mAutomaticSwitch.isChecked());
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
R.plurals.server_text, region.serverCount, region.serverCount);
holder.cityServerText.setText(cityText.concat(serverText));
holder.serverRadioButton.setChecked(
BraveVpnPrefUtils.getRegionName().equals(region.name));
BraveVpnPrefUtils.getRegionIsoCode().equals(region.countryIsoCode));
holder.serverSelectionItemLayout.setOnClickListener(
new View.OnClickListener() {
@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@

import com.google.android.material.radiobutton.MaterialRadioButton;

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.activities.VpnServerActivity.OnCitySelection;
import org.chromium.chrome.browser.vpn.utils.BraveVpnPrefUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnUtils;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -54,13 +54,26 @@ public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
.getQuantityString(
R.plurals.server_text, city.serverCount, city.serverCount);
holder.cityServerText.setText((position == 0) ? city.name : cityServerText);

boolean isCountryPrecision =
BraveVpnPrefUtils.getRegionPrecision()
.equals(BraveVpnConstants.REGION_PRECISION_COUNTRY);
boolean isCityPrecision =
BraveVpnPrefUtils.getRegionPrecision()
.equals(BraveVpnConstants.REGION_PRECISION_CITY);
boolean regionMatches = BraveVpnPrefUtils.getRegionName().equals(mRegion.name);
boolean cityMatches = BraveVpnPrefUtils.getRegionName().equals(city.name);
boolean isoCodeMatches =
isCountryPrecision
&& !regionMatches
&& !cityMatches
&& BraveVpnPrefUtils.getRegionIsoCode().equals(mRegion.countryIsoCode)
&& position == 0;

boolean isEnabled =
BraveVpnPrefUtils.getRegionName().equals(mRegion.name)
&& BraveVpnPrefUtils.getRegionCityName()
.equals(
position == 0
? BraveVpnUtils.OPTIMAL_SERVER
: city.name);
(isCountryPrecision && regionMatches && position == 0)
|| (isCityPrecision && cityMatches)
|| isoCodeMatches;
holder.serverRadioButton.setChecked(isEnabled);
holder.serverSelectionItemLayout.setOnClickListener(
new View.OnClickListener() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,43 @@
import androidx.annotation.NonNull;

public class BraveVpnServerRegion {
private String mCountryIsoCode;
private String mRegionName;
private String mRegionNamePretty;
private String mRegionCityName;
private String mRegionCityNamePretty;
private String mRegionPrecision;
private final boolean mIsAutoSelected;
private final String mCountry;
private final String mContinent;
private final String mCountryIsoCode;
private final String mRegionName;
private final String mRegionNamePretty;
private final String mRegionPrecision;

public BraveVpnServerRegion(
boolean isAutoSelected,
String country,
String continent,
String countryIsoCode,
String regionName,
String regionNamePretty,
String regionCityName,
String regionCityNamePretty,
String regionPrecision) {
this.mIsAutoSelected = isAutoSelected;
this.mCountry = country;
this.mContinent = continent;
this.mCountryIsoCode = countryIsoCode;
this.mRegionName = regionName;
this.mRegionNamePretty = regionNamePretty;
this.mRegionCityName = regionCityName;
this.mRegionCityNamePretty = regionCityNamePretty;
this.mRegionPrecision = regionPrecision;
}

public boolean isAutoSelected() {
return mIsAutoSelected;
}

public String getCountry() {
return mCountry;
}

public String getContinent() {
return mContinent;
}

public String getCountryIsoCode() {
return mCountryIsoCode;
}
Expand All @@ -42,14 +57,6 @@ public String getRegionNamePretty() {
return mRegionNamePretty;
}

public String getRegionCityName() {
return mRegionCityName;
}

public String getRegionCityNamePretty() {
return mRegionCityNamePretty;
}

public String getRegionPrecision() {
return mRegionPrecision;
}
Expand All @@ -58,7 +65,15 @@ public String getRegionPrecision() {
@Override
public String toString() {
return "BraveVpnServerRegion{"
+ "mCountryIsoCode='"
+ "mIsAutoSelected="
+ mIsAutoSelected
+ ", mCountry='"
+ mCountry
+ '\''
+ ", mContinent='"
+ mContinent
+ '\''
+ ", mCountryIsoCode='"
+ mCountryIsoCode
+ '\''
+ ", mRegionName='"
Expand All @@ -67,13 +82,6 @@ public String toString() {
+ ", mRegionNamePretty='"
+ mRegionNamePretty
+ '\''
+ ", mRegionCityName='"
+ mRegionCityName
+ '\''
+ ", mRegionCityNamePretty='"
+ mRegionCityNamePretty
+ '\''
+ '\''
+ ", mRegionPrecision='"
+ mRegionPrecision
+ '\''
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

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;
Expand Down Expand Up @@ -89,12 +88,6 @@ public static void handleOnGetTimezonesForRegions(Activity activity,
? region
: serverRegion;
}
region =
(braveVpnServerRegion
.getRegionPrecision()
.equals(BraveVpnConstants.REGION_PRECISION_CITY)
? braveVpnServerRegion.getRegionCityName()
: region);
BraveVpnNativeWorker.getInstance()
.getHostnamesForRegion(region, braveVpnServerRegion.getRegionPrecision());
braveVpnPrefModel.setServerRegion(braveVpnServerRegion);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
/**
* Copyright (c) 2021 The Brave Authors. All rights reserved.
/* Copyright (c) 2021 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*/
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at https://mozilla.org/MPL/2.0/. */

package org.chromium.chrome.browser.vpn.utils;


import org.chromium.base.ContextUtils;
import org.chromium.brave_vpn.mojom.BraveVpnConstants;
import org.chromium.chrome.browser.preferences.BravePref;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
import org.chromium.chrome.browser.profiles.ProfileManager;
Expand All @@ -30,10 +28,10 @@ public class BraveVpnPrefUtils {
private static final String PREF_BRAVE_VPN_PURCHASE_EXPIRY = "brave_vpn_purchase_expiry";
private static final String PREF_BRAVE_VPN_SERVER_REGIONS = "brave_vpn_server_regions";
private static final String PREF_BRAVE_VPN_SERVER_CHANGE_LOCATION = "server_change_location";
private static final String PREF_BRAVE_VPN_SERVER_COUNTRY = "server_country";
private static final String PREF_BRAVE_VPN_SERVER_CONTINENT = "server_continent";
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 VPN_AUTOMATIC_SERVER_SELECTION = "vpn_automatic_server_selection";

Expand Down Expand Up @@ -169,50 +167,54 @@ private static void setRegionName(String newValue) {
.writeString(PREF_BRAVE_VPN_SERVER_CHANGE_LOCATION, newValue);
}

public static String getRegionIsoCode() {
public static String getRegionCountry() {
String code =
ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_ISO_CODE, "");
ChromeSharedPreferences.getInstance().readString(PREF_BRAVE_VPN_SERVER_COUNTRY, "");
return code;
}

public static void setRegionIsoCode(String newValue) {
ChromeSharedPreferences.getInstance().writeString(PREF_BRAVE_VPN_SERVER_ISO_CODE, newValue);
public static void setRegionCountry(String newValue) {
ChromeSharedPreferences.getInstance().writeString(PREF_BRAVE_VPN_SERVER_COUNTRY, newValue);
}

public static String getRegionNamePretty() {
return ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_NAME_PRETTY, "");
public static String getRegionContinent() {
String code =
ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_CONTINENT, "");
return code;
}

public static void setRegionNamePretty(String newValue) {
public static void setRegionContinent(String newValue) {
ChromeSharedPreferences.getInstance()
.writeString(PREF_BRAVE_VPN_SERVER_NAME_PRETTY, newValue);
.writeString(PREF_BRAVE_VPN_SERVER_CONTINENT, newValue);
}

public static String getRegionCityName() {
return ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_CITY_NAME, "");
public static String getRegionIsoCode() {
String code =
ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_ISO_CODE, "");
return code;
}

public static void setRegionCityName(String newValue) {
ChromeSharedPreferences.getInstance()
.writeString(PREF_BRAVE_VPN_SERVER_CITY_NAME, newValue);
public static void setRegionIsoCode(String newValue) {
ChromeSharedPreferences.getInstance().writeString(PREF_BRAVE_VPN_SERVER_ISO_CODE, newValue);
}

public static String getRegionCityNamePretty() {
public static String getRegionNamePretty() {
return ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_CITY_NAME_PRETTY, "");
.readString(PREF_BRAVE_VPN_SERVER_NAME_PRETTY, "");
}

public static void setRegionCityNamePretty(String newValue) {
public static void setRegionNamePretty(String newValue) {
ChromeSharedPreferences.getInstance()
.writeString(PREF_BRAVE_VPN_SERVER_CITY_NAME_PRETTY, newValue);
.writeString(PREF_BRAVE_VPN_SERVER_NAME_PRETTY, newValue);
}

public static String getRegionPrecision() {
return ChromeSharedPreferences.getInstance()
.readString(PREF_BRAVE_VPN_SERVER_PRECISION, "");
.readString(
PREF_BRAVE_VPN_SERVER_PRECISION,
BraveVpnConstants.REGION_PRECISION_COUNTRY);
}

public static void setRegionPrecision(String newValue) {
Expand Down Expand Up @@ -275,12 +277,13 @@ public static String getClientPrivateKey() {
public static void setPrefModel(BraveVpnPrefModel braveVpnPrefModel) {
setHostname(braveVpnPrefModel.getHostname());
setHostnameDisplay(braveVpnPrefModel.getHostnameDisplay());
setRegionCountry(braveVpnPrefModel.getServerRegion().getCountry());
setRegionContinent(braveVpnPrefModel.getServerRegion().getContinent());
setRegionIsoCode(braveVpnPrefModel.getServerRegion().getCountryIsoCode());
setRegionName(braveVpnPrefModel.getServerRegion().getRegionName());
setRegionNamePretty(braveVpnPrefModel.getServerRegion().getRegionNamePretty());
setRegionCityName(braveVpnPrefModel.getServerRegion().getRegionCityName());
setRegionCityNamePretty(braveVpnPrefModel.getServerRegion().getRegionCityNamePretty());
setRegionPrecision(braveVpnPrefModel.getServerRegion().getRegionPrecision());
setAutomaticServerSelection(braveVpnPrefModel.getServerRegion().isAutoSelected());
setPurchaseToken(braveVpnPrefModel.getPurchaseToken());
setProductId(braveVpnPrefModel.getProductId());
setSubscriberCredential(braveVpnPrefModel.getSubscriberCredential());
Expand Down
Loading
Loading