Skip to content

Commit

Permalink
Merge pull request #19576 from brave/billing_client_6_0_android
Browse files Browse the repository at this point in the history
Update billing dependency and update VPN code
  • Loading branch information
deeppandya authored Sep 8, 2023
2 parents 130da0c + 9f12b6f commit c74ae6f
Show file tree
Hide file tree
Showing 29 changed files with 979 additions and 433 deletions.
4 changes: 3 additions & 1 deletion android/brave_java_sources.gni
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

import("//brave/android/features/tab_ui/brave_tab_management_java_sources.gni")
import("//brave/android/feed/brave_feed_java_sources.gni")
import(
"//brave/android/java/org/chromium/chrome/browser/vpn/billing/sources.gni")
import("//brave/browser/brave_ads/android/java_sources.gni")
import("//brave/browser/flags/brave_flags_java_sources.gni")
import("//brave/browser/incognito/android/java_sources.gni")
Expand Down Expand Up @@ -471,7 +473,6 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/vpn/utils/BraveVpnPrefUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/utils/BraveVpnProfileUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/utils/BraveVpnUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/utils/InAppPurchaseWrapper.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/wireguard/TunnelModel.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardConfigUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/wireguard/WireguardServiceImpl.java",
Expand All @@ -487,6 +488,7 @@ brave_java_sources += brave_rewards_java_sources
brave_java_sources += brave_feed_java_sources
brave_java_sources += brave_public_tab_management_java_sources
brave_java_sources += brave_share_java_sources
brave_java_sources += brave_app_vpn_billing_sources

brave_browser_ui_android_appmenu_internal_sources = [
"//brave/browser/ui/android/appmenu/internal/java/src/org/chromium/chrome/browser/ui/appmenu/BraveAppMenu.java",
Expand Down
46 changes: 29 additions & 17 deletions android/java/org/chromium/chrome/browser/app/BraveActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;

import com.android.billingclient.api.Purchase;
import com.brave.playlist.util.ConstantUtils;
import com.brave.playlist.util.PlaylistPreferenceUtils;
import com.brave.playlist.util.PlaylistUtils;
Expand Down Expand Up @@ -164,17 +165,18 @@
import org.chromium.chrome.browser.util.BraveConstants;
import org.chromium.chrome.browser.util.BraveDbUtil;
import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.chrome.browser.util.LiveDataUtil;
import org.chromium.chrome.browser.util.PackageUtils;
import org.chromium.chrome.browser.vpn.BraveVpnNativeWorker;
import org.chromium.chrome.browser.vpn.BraveVpnObserver;
import org.chromium.chrome.browser.vpn.activities.BraveVpnProfileActivity;
import org.chromium.chrome.browser.vpn.billing.InAppPurchaseWrapper;
import org.chromium.chrome.browser.vpn.fragments.BraveVpnCalloutDialogFragment;
import org.chromium.chrome.browser.vpn.fragments.LinkVpnSubscriptionDialogFragment;
import org.chromium.chrome.browser.vpn.utils.BraveVpnApiResponseUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnPrefUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnProfileUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnUtils;
import org.chromium.chrome.browser.vpn.utils.InAppPurchaseWrapper;
import org.chromium.chrome.browser.vpn.wireguard.WireguardConfigUtils;
import org.chromium.components.browser_ui.settings.SettingsLauncher;
import org.chromium.components.embedder_support.util.UrlConstants;
Expand Down Expand Up @@ -291,7 +293,8 @@ public void onResumeWithNative() {
super.onResumeWithNative();
BraveActivityJni.get().restartStatsUpdater();
if (BraveVpnUtils.isBraveVpnFeatureEnable()) {
InAppPurchaseWrapper.getInstance().startBillingServiceConnection(BraveActivity.this);
InAppPurchaseWrapper.getInstance().startBillingServiceConnection(
BraveActivity.this, null);
BraveVpnNativeWorker.getInstance().addObserver(this);

BraveVpnUtils.reportBackgroundUsageP3A();
Expand Down Expand Up @@ -390,7 +393,13 @@ public boolean onMenuOrKeyboardAction(int id, boolean fromMenu) {
BraveVpnUtils.showProgressDialog(BraveActivity.this,
getResources().getString(R.string.vpn_connect_text));
if (BraveVpnPrefUtils.isSubscriptionPurchase()) {
verifySubscription();
MutableLiveData<Boolean> _billingConnectionState =
new MutableLiveData();
LiveData<Boolean> billingConnectionState = _billingConnectionState;
InAppPurchaseWrapper.getInstance().startBillingServiceConnection(
BraveActivity.this, _billingConnectionState);
LiveDataUtil.observeOnce(billingConnectionState,
isConnected -> { verifySubscription(); });
} else {
BraveVpnUtils.dismissProgressDialog();
BraveVpnUtils.openBraveVpnPlansActivity(BraveActivity.this);
Expand Down Expand Up @@ -634,19 +643,22 @@ private void updateWalletBadgeVisibility() {
}

private void verifySubscription() {
List<Purchase> purchases = InAppPurchaseWrapper.getInstance().queryPurchases();
if (purchases != null && purchases.size() == 1) {
Purchase purchase = purchases.get(0);
mPurchaseToken = purchase.getPurchaseToken();
mProductId = purchase.getSkus().get(0).toString();
BraveVpnNativeWorker.getInstance().verifyPurchaseToken(mPurchaseToken, mProductId,
BraveVpnUtils.SUBSCRIPTION_PARAM_TEXT, getPackageName());
} else {
BraveVpnApiResponseUtils.queryPurchaseFailed(BraveActivity.this);
if (!mIsVerification) {
BraveVpnUtils.openBraveVpnPlansActivity(BraveActivity.this);
}
}
InAppPurchaseWrapper.getInstance().queryPurchases();
LiveDataUtil.observeOnce(
InAppPurchaseWrapper.getInstance().getActivePurchase(), activePurchase -> {
if (activePurchase != null) {
mPurchaseToken = activePurchase.getPurchaseToken();
mProductId = activePurchase.getProducts().get(0).toString();
BraveVpnNativeWorker.getInstance().verifyPurchaseToken(mPurchaseToken,
mProductId, BraveVpnUtils.SUBSCRIPTION_PARAM_TEXT,
getPackageName());
} else {
BraveVpnApiResponseUtils.queryPurchaseFailed(BraveActivity.this);
if (!mIsVerification) {
BraveVpnUtils.openBraveVpnPlansActivity(BraveActivity.this);
}
}
});
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@
import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate;
import org.chromium.chrome.browser.ui.appmenu.AppMenuHandler;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.browser.vpn.billing.InAppPurchaseWrapper;
import org.chromium.chrome.browser.vpn.utils.BraveVpnProfileUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnUtils;
import org.chromium.chrome.browser.vpn.utils.InAppPurchaseWrapper;
import org.chromium.chrome.features.start_surface.StartSurface;
import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.ui.modaldialog.ModalDialogManager;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
import org.chromium.chrome.browser.rate.BraveRateDialogFragment;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.toolbar.bottom.BottomToolbarConfiguration;
import org.chromium.chrome.browser.vpn.billing.InAppPurchaseWrapper;
import org.chromium.chrome.browser.vpn.utils.BraveVpnPrefUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnUtils;
import org.chromium.chrome.browser.vpn.utils.InAppPurchaseWrapper;
import org.chromium.chrome.browser.widget.quickactionsearchandbookmark.utils.BraveSearchWidgetUtils;
import org.chromium.components.browser_ui.accessibility.BraveAccessibilitySettings;
import org.chromium.components.browser_ui.settings.ChromeBasePreference;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@
import android.util.Pair;

import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;

import com.android.billingclient.api.Purchase;
import com.wireguard.android.backend.GoBackend;
import com.wireguard.crypto.KeyPair;

Expand All @@ -33,16 +34,17 @@
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.customtabs.CustomTabActivity;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.util.LiveDataUtil;
import org.chromium.chrome.browser.vpn.BraveVpnNativeWorker;
import org.chromium.chrome.browser.vpn.BraveVpnObserver;
import org.chromium.chrome.browser.vpn.billing.InAppPurchaseWrapper;
import org.chromium.chrome.browser.vpn.models.BraveVpnPrefModel;
import org.chromium.chrome.browser.vpn.models.BraveVpnServerRegion;
import org.chromium.chrome.browser.vpn.models.BraveVpnWireguardProfileCredentials;
import org.chromium.chrome.browser.vpn.utils.BraveVpnApiResponseUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnPrefUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnProfileUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnUtils;
import org.chromium.chrome.browser.vpn.utils.InAppPurchaseWrapper;
import org.chromium.chrome.browser.vpn.wireguard.WireguardConfigUtils;
import org.chromium.components.browser_ui.settings.ChromeBasePreference;
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
Expand Down Expand Up @@ -91,9 +93,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getActivity().setTitle(R.string.brave_firewall_vpn);
SettingsUtils.addPreferencesFromResource(this, R.xml.brave_vpn_preferences);

if (BraveVpnUtils.isBraveVpnFeatureEnable()) {
InAppPurchaseWrapper.getInstance().startBillingServiceConnection(getActivity());
}
InAppPurchaseWrapper.getInstance().startBillingServiceConnection(getActivity(), null);

mVpnSwitch = (ChromeSwitchPreference) findPreference(PREF_VPN_SWITCH);
mVpnSwitch.setChecked(
Expand Down Expand Up @@ -121,7 +121,13 @@ public boolean onPreferenceClick(Preference preference) {
BraveVpnUtils.showProgressDialog(
getActivity(), getResources().getString(R.string.vpn_connect_text));
if (BraveVpnPrefUtils.isSubscriptionPurchase()) {
verifyPurchase(true);
MutableLiveData<Boolean> _billingConnectionState =
new MutableLiveData();
LiveData<Boolean> billingConnectionState = _billingConnectionState;
InAppPurchaseWrapper.getInstance().startBillingServiceConnection(
getActivity(), _billingConnectionState);
LiveDataUtil.observeOnce(billingConnectionState,
isConnected -> { verifyPurchase(true); });
} else {
BraveVpnUtils.openBraveVpnPlansActivity(getActivity());
BraveVpnUtils.dismissProgressDialog();
Expand Down Expand Up @@ -252,7 +258,12 @@ public void onResume() {
mBraveVpnPrefModel = new BraveVpnPrefModel();
BraveVpnNativeWorker.getInstance().getSubscriberCredentialV12();
} else {
verifyPurchase(false);
MutableLiveData<Boolean> _billingConnectionState = new MutableLiveData();
LiveData<Boolean> billingConnectionState = _billingConnectionState;
InAppPurchaseWrapper.getInstance().startBillingServiceConnection(
getActivity(), _billingConnectionState);
LiveDataUtil.observeOnce(
billingConnectionState, isConnected -> { verifyPurchase(false); });
}
} else if (BraveVpnUtils.mUpdateProfileAfterSplitTunnel) {
BraveVpnUtils.mUpdateProfileAfterSplitTunnel = false;
Expand Down Expand Up @@ -365,31 +376,38 @@ public void run() {
};

private void verifyPurchase(boolean isVerification) {
mBraveVpnPrefModel = new BraveVpnPrefModel();
List<Purchase> purchases = InAppPurchaseWrapper.getInstance().queryPurchases();
if (purchases != null && purchases.size() == 1) {
Purchase purchase = purchases.get(0);
mBraveVpnPrefModel.setPurchaseToken(purchase.getPurchaseToken());
mBraveVpnPrefModel.setProductId(purchase.getSkus().get(0).toString());
if (BraveVpnPrefUtils.isResetConfiguration()) {
BraveVpnUtils.dismissProgressDialog();
BraveVpnUtils.openBraveVpnProfileActivity(getActivity());
return;
}
if (!isVerification) {
BraveVpnNativeWorker.getInstance().getSubscriberCredential(
BraveVpnUtils.SUBSCRIPTION_PARAM_TEXT, mBraveVpnPrefModel.getProductId(),
BraveVpnUtils.IAP_ANDROID_PARAM_TEXT, mBraveVpnPrefModel.getPurchaseToken(),
getActivity().getPackageName());
} else {
BraveVpnNativeWorker.getInstance().verifyPurchaseToken(
mBraveVpnPrefModel.getPurchaseToken(), mBraveVpnPrefModel.getProductId(),
BraveVpnUtils.SUBSCRIPTION_PARAM_TEXT, getActivity().getPackageName());
}
} else {
BraveVpnApiResponseUtils.queryPurchaseFailed(getActivity());
BraveVpnUtils.mIsServerLocationChanged = false;
}
InAppPurchaseWrapper.getInstance().queryPurchases();
LiveDataUtil.observeOnce(
InAppPurchaseWrapper.getInstance().getActivePurchase(), activePurchase -> {
mBraveVpnPrefModel = new BraveVpnPrefModel();
if (activePurchase != null) {
mBraveVpnPrefModel.setPurchaseToken(activePurchase.getPurchaseToken());
mBraveVpnPrefModel.setProductId(
activePurchase.getProducts().get(0).toString());
if (BraveVpnPrefUtils.isResetConfiguration()) {
BraveVpnUtils.dismissProgressDialog();
BraveVpnUtils.openBraveVpnProfileActivity(getActivity());
return;
}
if (!isVerification) {
BraveVpnNativeWorker.getInstance().getSubscriberCredential(
BraveVpnUtils.SUBSCRIPTION_PARAM_TEXT,
mBraveVpnPrefModel.getProductId(),
BraveVpnUtils.IAP_ANDROID_PARAM_TEXT,
mBraveVpnPrefModel.getPurchaseToken(),
getActivity().getPackageName());
} else {
BraveVpnNativeWorker.getInstance().verifyPurchaseToken(
mBraveVpnPrefModel.getPurchaseToken(),
mBraveVpnPrefModel.getProductId(),
BraveVpnUtils.SUBSCRIPTION_PARAM_TEXT,
getActivity().getPackageName());
}
} else {
BraveVpnApiResponseUtils.queryPurchaseFailed(getActivity());
BraveVpnUtils.mIsServerLocationChanged = false;
}
});
}

@Override
Expand Down
Loading

0 comments on commit c74ae6f

Please sign in to comment.