Initial work on bitFlyer support on Android

This commit is contained in:
Emerick Rogul
2021-12-13 20:15:59 -05:00
committed by Deep
parent 7dbe9360cf
commit 73ddb97cc5
40 changed files with 2762 additions and 449 deletions
@@ -15,7 +15,6 @@ import org.json.JSONObject;
public class BraveRewardsBalance {
public static final String WALLET_ANONYMOUS = "anonymous";
public static final String WALLET_UPHOLD = "uphold";
public static final String WALLET_BLINDED = "blinded";
/**
@@ -57,4 +56,4 @@ public class BraveRewardsBalance {
"mTotal=" + mTotal +
", mWallets=" + mWallets +'}';
}
}
}
@@ -191,6 +191,13 @@ public class BraveRewardsNativeWorker {
}
}
public String getExternalWalletType() {
synchronized (lock) {
return BraveRewardsNativeWorkerJni.get().getExternalWalletType(
mNativeBraveRewardsNativeWorker);
}
}
public double GetWalletRate() {
synchronized(lock) {
return BraveRewardsNativeWorkerJni.get().getWalletRate(mNativeBraveRewardsNativeWorker);
@@ -587,6 +594,15 @@ public class BraveRewardsNativeWorker {
}
}
@CalledByNative
public void OnGetAdsAccountStatement(boolean success, double next_payment_date,
int ads_received_this_month, double earnings_this_month, double earnings_last_month) {
for (BraveRewardsObserver observer : mObservers) {
observer.OnGetAdsAccountStatement(success, next_payment_date, ads_received_this_month,
earnings_this_month, earnings_last_month);
}
}
@CalledByNative
public void OnDisconnectWallet(int error_code, String external_wallet) {
for (BraveRewardsObserver observer : mObservers) {
@@ -623,6 +639,7 @@ public class BraveRewardsNativeWorker {
void init(BraveRewardsNativeWorker caller);
void destroy(long nativeBraveRewardsNativeWorker);
String getWalletBalance(long nativeBraveRewardsNativeWorker);
String getExternalWalletType(long nativeBraveRewardsNativeWorker);
double getWalletRate(long nativeBraveRewardsNativeWorker);
void getPublisherInfo(long nativeBraveRewardsNativeWorker, int tabId, String host);
String getPublisherURL(long nativeBraveRewardsNativeWorker, int tabId);
@@ -31,4 +31,6 @@ public interface BraveRewardsObserver {
default public void OnRefreshPublisher(int status, String publisherKey){};
default public void OnOneTimeTip(){};
default public void OnStartProcess(){};
default public void OnGetAdsAccountStatement(boolean success, double nextPaymentDate,
int adsReceivedThisMonth, double earningsThisMonth, double earningsLastMonth){};
}
@@ -122,7 +122,6 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
private static final String REWARDS_NOTIFICATION_NO_INTERNET_ID = "29d835c2-5752-4152-93c3-8a1ded9dd4ec";
private static final int REWARDS_PROMOTION_CLAIM_ERROR = REWARDS_NOTIFICATION_NO_INTERNET + 1;
private static final String REWARDS_PROMOTION_CLAIM_ERROR_ID = "rewards_promotion_claim_error_id";
//
// Auto contribute results
private static final String AUTO_CONTRIBUTE_SUCCESS = "0";
@@ -1636,7 +1635,6 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
// mBraveRewardsNativeWorker.GetExternalWallet();
}
/**
* OnRecurringDonationUpdated is fired after a publisher was added or removed to/from
* recurrent donation list
@@ -1703,7 +1701,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
Button btnVerifyWallet = (Button) root.findViewById(R.id.btn_verify_wallet);
btnVerifyWallet.setBackgroundResource(R.drawable.wallet_verify_button);
if (mExternalWallet != null
&& mExternalWallet.getType().equals(BraveUphold.BITFLYER)) {
&& mExternalWallet.getType().equals(BraveWalletProvider.BITFLYER)) {
btnVerifyWallet.setVisibility(View.INVISIBLE);
}
}
@@ -1833,7 +1831,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
case BraveRewardsExternalWallet.PENDING:
case BraveRewardsExternalWallet.VERIFIED:
if (walletBalance < WALLET_BALANCE_LIMIT
&& mExternalWallet.getType().equals(BraveUphold.UPHOLD)
&& mExternalWallet.getType().equals(BraveWalletProvider.UPHOLD)
&& !isVerifyWalletEnabled()) {
showUpholdLoginPopupWindow(btnVerifyWallet);
} else {
@@ -1848,7 +1846,7 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
case BraveRewardsExternalWallet.DISCONNECTED_NOT_VERIFIED:
case BraveRewardsExternalWallet.DISCONNECTED_VERIFIED:
if (walletBalance < WALLET_BALANCE_LIMIT
&& mExternalWallet.getType().equals(BraveUphold.UPHOLD)
&& mExternalWallet.getType().equals(BraveWalletProvider.UPHOLD)
&& !isVerifyWalletEnabled()) {
showUpholdLoginPopupWindow(btnVerifyWallet);
} else {
@@ -1910,6 +1908,12 @@ public class BraveRewardsPanelPopup implements BraveRewardsObserver, BraveReward
SetVerifyWalletControl(walletStatus);
}
@Override
public void OnGetAdsAccountStatement(boolean success, double next_payment_date,
int ads_received_this_month, double earnings_this_month, double earnings_last_month) {
// TODO: Implement
}
/**
* Show the "promotion claim failed" error message.
* Succesful claims are dismissed by a notification.
@@ -21,16 +21,24 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsBalance;
import org.chromium.chrome.browser.BraveRewardsExternalWallet;
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import org.chromium.chrome.browser.BraveWalletProvider;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.init.AsyncInitializationActivity;
public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity {
public static final String DISCONNECT_WALLET_URL = "chrome://rewards/#disconnect-wallet";
private String walletType = BraveRewardsNativeWorker.getInstance().getExternalWalletType();
private String walletTypeString;
@Override
protected void triggerLayoutInflation() {
setContentView(R.layout.user_wallet_activity);
walletTypeString = walletType.equals(BraveWalletProvider.UPHOLD)
? getResources().getString(R.string.uphold)
: getResources().getString(R.string.bitflyer);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
@@ -50,7 +58,9 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
TextView txtUserStatus = (TextView) findViewById(R.id.user_status);
Button btn1 = (Button) findViewById(R.id.user_wallet_btn1);
Button btn2 = null;
Button btnGotoUphold = (Button) findViewById(R.id.user_wallet_go_to_uphold);
Button btnGotoProvider = (Button) findViewById(R.id.user_wallet_go_to_provider);
btnGotoProvider.setText(String.format(
getResources().getString(R.string.user_wallet_goto_provider), walletTypeString));
if (status < BraveRewardsExternalWallet.NOT_CONNECTED
|| status > BraveRewardsExternalWallet.PENDING) {
@@ -64,7 +74,7 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
// Buttons:
// Add funds
// Withdraw
// Go to uphold
// Go to provider
// Disconnect
btn1.setText(getResources().getString(R.string.brave_rewards_local_panel_add_funds));
btn2.setText(getResources().getString(R.string.user_wallet_withdraw_funds));
@@ -78,7 +88,7 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
// CONNECTED or PENDING
// Buttons:
// Complete verification
// Go to uphold
// Go to provider
// Disconnect
btn1.setText(getResources().getString(R.string.user_wallet_complete_verification));
SetBtnOpenUrlClickHandler(
@@ -86,7 +96,7 @@ public class BraveRewardsUserWalletActivity extends AsyncInitializationActivity
}
SetBtnOpenUrlClickHandler(
btnGotoUphold, intent.getStringExtra(BraveRewardsExternalWallet.ACCOUNT_URL));
btnGotoProvider, intent.getStringExtra(BraveRewardsExternalWallet.ACCOUNT_URL));
String userId = intent.getStringExtra(BraveRewardsExternalWallet.USER_NAME);
txtUserId.setText(userId);
@@ -19,21 +19,55 @@ import android.widget.TextView;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsExternalWallet;
import org.chromium.chrome.browser.BraveRewardsHelper;
import org.chromium.chrome.browser.BraveUphold;
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import org.chromium.chrome.browser.BraveWalletProvider;
import org.chromium.chrome.browser.app.BraveActivity;
import java.util.Locale;
public class BraveRewardsVerifyWalletActivity extends Activity {
private String walletType = BraveRewardsNativeWorker.getInstance().getExternalWalletType();
private String walletTypeString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.verify_wallet_activity);
walletTypeString = walletType.equals(BraveWalletProvider.UPHOLD)
? getResources().getString(R.string.uphold)
: getResources().getString(R.string.bitflyer);
setTextForWalletTypes();
SetVerifyWalletBtnClickHandler();
SetUpholdLinkHandler();
}
void setTextForWalletTypes() {
TextView verifyWalletBenefitText1 = (TextView) findViewById(R.id.verify_wallet_benefit_1);
verifyWalletBenefitText1.setText(walletType.equals(BraveWalletProvider.UPHOLD)
? getResources().getString(R.string.verify_wallet_uphold_benefits1)
: getResources().getString(R.string.verify_wallet_bitflyer_benefits1));
TextView verifyWalletBenefitText2 = (TextView) findViewById(R.id.verify_wallet_benefit_2);
verifyWalletBenefitText2.setText(walletType.equals(BraveWalletProvider.UPHOLD)
? getResources().getString(R.string.verify_wallet_uphold_benefits2)
: getResources().getString(R.string.verify_wallet_bitflyer_benefits2));
TextView verifyWalletBenefitText3 = (TextView) findViewById(R.id.verify_wallet_benefit_3);
verifyWalletBenefitText3.setText(walletType.equals(BraveWalletProvider.UPHOLD)
? getResources().getString(R.string.verify_wallet_uphold_benefits3)
: getResources().getString(R.string.verify_wallet_bitflyer_benefits3));
TextView verifyWalletProviderNoteText =
(TextView) findViewById(R.id.verify_wallet_provider_note_txt);
verifyWalletProviderNoteText.setText(String.format(
getResources().getString(R.string.verify_wallet_provider_note1), walletTypeString));
TextView verifyWalletBraveNoteText =
(TextView) findViewById(R.id.verify_wallet_brave_note_txt);
verifyWalletBraveNoteText.setText(String.format(
getResources().getString(R.string.verify_wallet_brave_note1), walletTypeString));
}
void SetVerifyWalletBtnClickHandler() {
Button btnVerifyWallet = (Button)findViewById(R.id.verify_wallet_btn);
btnVerifyWallet.setOnClickListener( (View v) -> {
@@ -49,7 +83,7 @@ public class BraveRewardsVerifyWalletActivity extends Activity {
void SetUpholdLinkHandler() {
TextView uphold_link = (TextView)findViewById(R.id.service_provider_txt);
final String part1 = getResources().getString(R.string.verify_wallet_service_note);
final String part2 = getResources().getString(R.string.verify_wallet_uphold);
final String part2 = walletTypeString;
final String built_service_str = String.format(Locale.US, "%s <b>%s</b>", part1, part2);
Spanned toInsert = BraveRewardsHelper.spannedFromHtmlString(built_service_str);
uphold_link.setText(toInsert);
@@ -63,7 +97,8 @@ public class BraveRewardsVerifyWalletActivity extends Activity {
if (BraveRewardsHelper.subtextAtOffset(built_service_str, part2, offset) ){
Intent intent = new Intent();
intent.putExtra(BraveActivity.OPEN_URL, BraveUphold.UPHOLD_ORIGIN_URL);
intent.putExtra(
BraveActivity.OPEN_URL, BraveWalletProvider.UPHOLD_ORIGIN_URL);
setResult(RESULT_OK, intent);
finish();
event_consumed = true;
@@ -1,153 +0,0 @@
/** Copyright (c) 2020 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 http://mozilla.org/MPL/2.0/.
*/
package org.chromium.chrome.browser;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.Uri;
import android.text.TextUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsBalance;
import org.chromium.chrome.browser.BraveRewardsHelper;
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import org.chromium.chrome.browser.BraveRewardsObserver;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.externalnav.BraveExternalNavigationHandler;
import org.chromium.components.external_intents.ExternalNavigationParams;
import java.util.Locale;
//used from org.chromium.chrome.browser.externalnav
public class BraveUphold implements BraveRewardsObserver {
public static final String UPHOLD_REDIRECT_URL = "rewards://uphold";
public static final String UPHOLD_REDIRECT_URL_KEY = "redirect_url";
public static final String ACTION_VALUE = "authorization";
public static final String UPHOLD_SUPPORT_URL = "http://uphold.com/en/brave/support";
public static final String UPHOLD_ORIGIN_URL = "http://uphold.com";
// Wallet types
public static final String UPHOLD = "uphold";
public static final String BITFLYER = "bitflyer";
private static int UNKNOWN_ERROR_CODE = -1;
private ExternalNavigationParams mExternalNavigationParams;
private BraveExternalNavigationHandler mBraveExternalNavigationHandler;
private BraveRewardsNativeWorker rewardsNativeProxy;
public void CompleteUpholdVerification(ExternalNavigationParams params,
BraveExternalNavigationHandler handler) {
mExternalNavigationParams = params;
mBraveExternalNavigationHandler = handler;
rewardsNativeProxy = BraveRewardsNativeWorker.getInstance();
Uri uri = Uri.parse(params.getUrl().getSpec());
rewardsNativeProxy.AddObserver(this);
String path = uri.getPath();
String query = uri.getQuery();
if (TextUtils.isEmpty(path) || TextUtils.isEmpty(query)) {
rewardsNativeProxy.RemoveObserver(this);
ReleaseDependencies();
ShowErrorMessageBox(UNKNOWN_ERROR_CODE);
return;
}
// Ledger expects:
// path: "/uphold/path"
// query: "?query"
path = String.format(Locale.US,"/%s/%s",
BraveRewardsBalance.WALLET_UPHOLD, path);
query = String.format(Locale.US,"?%s", query);
rewardsNativeProxy.ProcessRewardsPageUrl(path, query);
}
@Override
public void OnProcessRewardsPageUrl(int error_code,
String wallet_type, String action,
String json_args ) {
//remove observer
if (rewardsNativeProxy != null) {
rewardsNativeProxy.RemoveObserver(this);
}
String redirect_url = parseJsonArgs (json_args);
if (BraveRewardsNativeWorker.LEDGER_OK == error_code &&
TextUtils.equals(action, ACTION_VALUE)) {
//wallet is verified: redirect to chrome://rewards for now
if (TextUtils.isEmpty(redirect_url)) {
redirect_url = BraveActivity.REWARDS_SETTINGS_URL;
}
mBraveExternalNavigationHandler.
clobberCurrentTabWithFallbackUrl (redirect_url,
mExternalNavigationParams);
// temporary: open Rewards Panel to show wallet transition state.
// remove this step once settings activity has this info
BraveActivity.getBraveActivity().openRewardsPanel();
ReleaseDependencies();
}
else {
ShowErrorMessageBox(error_code);
}
}
private String parseJsonArgs(String json_args) {
String redirect_url = "";
try {
JSONObject jsonObj = new JSONObject(json_args);
if (jsonObj.has(UPHOLD_REDIRECT_URL_KEY)) {
redirect_url = jsonObj.getString(UPHOLD_REDIRECT_URL_KEY);
}
}
catch(JSONException e){ }
return redirect_url;
}
private void ReleaseDependencies() {
mExternalNavigationParams = null;
mBraveExternalNavigationHandler = null;
}
private void ShowErrorMessageBox (int error_code) {
String msg = "";
String msg_title = "";
Context context = ContextUtils.getApplicationContext();
AlertDialog.Builder builder = new AlertDialog.Builder(
BraveRewardsHelper.getChromeTabbedActivity(),
R.style.Theme_Chromium_AlertDialog);
if (BraveRewardsNativeWorker.BAT_NOT_ALLOWED == error_code) {
msg = context.getResources().getString(R.string.bat_not_allowed_in_region);
msg_title = context.getResources().getString(R.string.bat_not_allowed_in_region_title);
}
else {
msg = context.getResources().getString(R.string.wallet_verification_generic_error);
msg_title = context.getResources().getString(R.string.wallet_verification_generic_error_title);
}
builder.setMessage(msg)
.setTitle (msg_title)
.setPositiveButton(R.string.ok, (DialogInterface dialog, int which)-> {
mBraveExternalNavigationHandler.
clobberCurrentTabWithFallbackUrl (UPHOLD_SUPPORT_URL,
mExternalNavigationParams);
})
.setOnDismissListener((DialogInterface dialog)-> {
ReleaseDependencies();
});
AlertDialog dlg = builder.create();
dlg.show();
}
}
@@ -0,0 +1,150 @@
/**
* Copyright (c) 2020 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 http://mozilla.org/MPL/2.0/.
*/
package org.chromium.chrome.browser;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.net.Uri;
import android.text.TextUtils;
import org.json.JSONException;
import org.json.JSONObject;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsBalance;
import org.chromium.chrome.browser.BraveRewardsHelper;
import org.chromium.chrome.browser.BraveRewardsNativeWorker;
import org.chromium.chrome.browser.BraveRewardsObserver;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.externalnav.BraveExternalNavigationHandler;
import org.chromium.components.external_intents.ExternalNavigationParams;
import java.util.Locale;
// Used from org.chromium.chrome.browser.externalnav
public class BraveWalletProvider implements BraveRewardsObserver {
public static final String ACTION_VALUE = "authorization";
public static final String REDIRECT_URL_KEY = "redirect_url";
public static final String UPHOLD_REDIRECT_URL = "rewards://uphold";
public static final String UPHOLD_SUPPORT_URL = "http://uphold.com/en/brave/support";
public static final String UPHOLD_ORIGIN_URL = "http://uphold.com";
public static final String BITFLYER_REDIRECT_URL = "rewards://bitflyer";
// Wallet types
public static final String UPHOLD = "uphold";
public static final String BITFLYER = "bitflyer";
private static int UNKNOWN_ERROR_CODE = -1;
private ExternalNavigationParams mExternalNavigationParams;
private BraveExternalNavigationHandler mBraveExternalNavigationHandler;
private BraveRewardsNativeWorker rewardsNativeProxy;
public void completeWalletProviderVerification(
ExternalNavigationParams params, BraveExternalNavigationHandler handler) {
mExternalNavigationParams = params;
mBraveExternalNavigationHandler = handler;
rewardsNativeProxy = BraveRewardsNativeWorker.getInstance();
Uri uri = Uri.parse(params.getUrl().getSpec());
rewardsNativeProxy.AddObserver(this);
String path = uri.getPath();
String query = uri.getQuery();
if (TextUtils.isEmpty(path) || TextUtils.isEmpty(query)) {
rewardsNativeProxy.RemoveObserver(this);
releaseDependencies();
showErrorMessageBox(UNKNOWN_ERROR_CODE);
return;
}
// Ledger expects:
// path: "/provider/path"
// query: "?query"
path = String.format(Locale.US, "/%s/%s", rewardsNativeProxy.getExternalWalletType(), path);
query = String.format(Locale.US, "?%s", query);
rewardsNativeProxy.ProcessRewardsPageUrl(path, query);
}
@Override
public void OnProcessRewardsPageUrl(
int errorCode, String walletType, String action, String jsonArgs) {
// remove observer
if (rewardsNativeProxy != null) {
rewardsNativeProxy.RemoveObserver(this);
}
String redirectUrl = parseJsonArgs(jsonArgs);
if (BraveRewardsNativeWorker.LEDGER_OK == errorCode
&& TextUtils.equals(action, ACTION_VALUE)) {
// wallet is verified: redirect to chrome://rewards for now
if (TextUtils.isEmpty(redirectUrl)) {
redirectUrl = BraveActivity.REWARDS_SETTINGS_URL;
}
mBraveExternalNavigationHandler.clobberCurrentTabWithFallbackUrl(
redirectUrl, mExternalNavigationParams);
// temporary: open Rewards Panel to show wallet transition state.
// remove this step once settings activity has this info
BraveActivity.getBraveActivity().openRewardsPanel();
releaseDependencies();
} else {
showErrorMessageBox(errorCode);
}
}
private String parseJsonArgs(String jsonArgs) {
String redirect_url = "";
try {
JSONObject jsonObj = new JSONObject(jsonArgs);
if (jsonObj.has(REDIRECT_URL_KEY)) {
redirect_url = jsonObj.getString(REDIRECT_URL_KEY);
}
} catch (JSONException e) {
}
return redirect_url;
}
private void releaseDependencies() {
mExternalNavigationParams = null;
mBraveExternalNavigationHandler = null;
}
private void showErrorMessageBox(int errorCode) {
String message = "";
String messageTitle = "";
Context context = ContextUtils.getApplicationContext();
AlertDialog.Builder builder = new AlertDialog.Builder(
BraveRewardsHelper.getChromeTabbedActivity(), R.style.Theme_Chromium_AlertDialog);
if (BraveRewardsNativeWorker.BAT_NOT_ALLOWED == errorCode) {
message = context.getResources().getString(R.string.bat_not_allowed_in_region);
messageTitle =
context.getResources().getString(R.string.bat_not_allowed_in_region_title);
} else {
message = context.getResources().getString(R.string.wallet_verification_generic_error);
messageTitle = context.getResources().getString(
R.string.wallet_verification_generic_error_title);
}
builder.setMessage(message)
.setTitle(messageTitle)
.setPositiveButton(R.string.ok,
(DialogInterface dialog, int which) -> {
mBraveExternalNavigationHandler.clobberCurrentTabWithFallbackUrl(
UPHOLD_SUPPORT_URL, mExternalNavigationParams);
})
.setOnDismissListener((DialogInterface dialog) -> { releaseDependencies(); });
AlertDialog dialog = builder.create();
dialog.show();
}
}
@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.externalnav;
import android.annotation.SuppressLint;
import org.chromium.chrome.browser.BraveUphold;
import org.chromium.chrome.browser.BraveWalletProvider;
import org.chromium.components.external_intents.ExternalNavigationDelegate;
import org.chromium.components.external_intents.ExternalNavigationHandler;
import org.chromium.components.external_intents.ExternalNavigationHandler.OverrideUrlLoadingResult;
@@ -15,7 +15,7 @@ import org.chromium.components.external_intents.ExternalNavigationParams;
import org.chromium.url.GURL;
public class BraveExternalNavigationHandler extends ExternalNavigationHandler {
private BraveUphold mBraveUphold;
private BraveWalletProvider mBraveWalletProvider;
public BraveExternalNavigationHandler(ExternalNavigationDelegate delegate) {
super(delegate);
@@ -23,21 +23,28 @@ public class BraveExternalNavigationHandler extends ExternalNavigationHandler {
@Override
public OverrideUrlLoadingResult shouldOverrideUrlLoading(ExternalNavigationParams params) {
if (isUpholdOverride(params)) {
CompleteUpholdVerification(params);
if (isWalletProviderOverride(params)) {
completeWalletProviderVerification(params);
return OverrideUrlLoadingResult.forClobberingTab();
}
return super.shouldOverrideUrlLoading(params);
}
private boolean isUpholdOverride(ExternalNavigationParams params) {
if (!params.getUrl().getSpec().startsWith(BraveUphold.UPHOLD_REDIRECT_URL)) return false;
return true;
private boolean isWalletProviderOverride(ExternalNavigationParams params) {
if (params.getUrl().getSpec().startsWith(BraveWalletProvider.UPHOLD_REDIRECT_URL)) {
return true;
}
if (params.getUrl().getSpec().startsWith(BraveWalletProvider.BITFLYER_REDIRECT_URL)) {
return true;
}
return false;
}
private void CompleteUpholdVerification(ExternalNavigationParams params) {
mBraveUphold = new BraveUphold();
mBraveUphold.CompleteUpholdVerification(params, this);
private void completeWalletProviderVerification(ExternalNavigationParams params) {
mBraveWalletProvider = new BraveWalletProvider();
mBraveWalletProvider.completeWalletProviderVerification(params, this);
}
@SuppressLint("VisibleForTests")
@@ -56,4 +63,4 @@ public class BraveExternalNavigationHandler extends ExternalNavigationHandler {
GURL browserFallbackGURL = new GURL(browserFallbackUrl);
return clobberCurrentTab(browserFallbackGURL, params.getReferrerUrl());
}
}
}
@@ -78,9 +78,9 @@
android:textAlignment="center"/>
<TextView
android:id="@+id/verify_wallet_benefit_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/verify_wallet_benefits1"
android:textSize="@dimen/verify_wallet_header3_font_size_land"
android:layout_gravity="start"
android:gravity="start"
@@ -92,9 +92,9 @@
android:paddingEnd="12dp"/>
<TextView
android:id="@+id/verify_wallet_benefit_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/verify_wallet_benefits2"
android:textSize="@dimen/verify_wallet_header3_font_size_land"
android:layout_gravity="start"
android:gravity="start"
@@ -106,9 +106,9 @@
android:paddingEnd="12dp"/>
<TextView
android:id="@+id/verify_wallet_benefit_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/verify_wallet_benefits3"
android:textSize="@dimen/verify_wallet_header3_font_size_land"
android:layout_gravity="start"
android:gravity="start"
@@ -156,9 +156,9 @@
android:layout_marginTop="@dimen/verify_wallet_margin2_land"/>
<TextView
android:id="@+id/verify_wallet_provider_note_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/verify_wallet_uphold_note1"
android:textSize="@dimen/verify_wallet_header4_font_size_land"
android:layout_gravity="start"
android:textAlignment="textStart"
@@ -166,9 +166,9 @@
android:layout_marginTop="@dimen/verify_wallet_margin3_land"/>
<TextView
android:id="@+id/verify_wallet_brave_note_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/verify_wallet_brave_note1"
android:textSize="@dimen/verify_wallet_header4_font_size_land"
android:layout_gravity="start"
android:textAlignment="textStart"
@@ -115,10 +115,9 @@
android:contentDescription="@null"/>
<Button
android:id="@+id/user_wallet_go_to_uphold"
android:id="@+id/user_wallet_go_to_provider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/user_wallet_goto_uphold"
android:background="?android:attr/selectableItemBackground"
android:textAlignment="textStart"
android:textAllCaps="false"
@@ -146,4 +145,4 @@
android:padding="12dp">
</Button>
</LinearLayout>
</LinearLayout>
</LinearLayout>
@@ -48,6 +48,7 @@
android:textStyle="bold" />
<TextView
android:id="@+id/verify_wallet_benefit_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
@@ -57,11 +58,11 @@
android:gravity="start"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="@string/verify_wallet_benefits1"
android:textColor="@android:color/white"
android:textSize="@dimen/verify_wallet_header3_font_size"/>
<TextView
android:id="@+id/verify_wallet_benefit_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
@@ -71,11 +72,11 @@
android:gravity="start"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="@string/verify_wallet_benefits2"
android:textColor="@android:color/white"
android:textSize="@dimen/verify_wallet_header3_font_size"/>
<TextView
android:id="@+id/verify_wallet_benefit_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
@@ -85,7 +86,6 @@
android:gravity="start"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="@string/verify_wallet_benefits3"
android:textColor="@android:color/white"
android:textSize="@dimen/verify_wallet_header3_font_size"/>
@@ -118,21 +118,21 @@
android:textSize="@dimen/verify_wallet_header4_font_size"/>
<TextView
android:id="@+id/verify_wallet_provider_note_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginTop="@dimen/verify_wallet_margin3"
android:text="@string/verify_wallet_uphold_note1"
android:textAlignment="textStart"
android:textColor="@color/user_wallet_dimmed_note"
android:textSize="@dimen/verify_wallet_header4_font_size"/>
<TextView
android:id="@+id/verify_wallet_brave_note_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginTop="@dimen/verify_wallet_margin3"
android:text="@string/verify_wallet_brave_note1"
android:textAlignment="textStart"
android:textColor="@color/user_wallet_dimmed_note"
android:textSize="@dimen/verify_wallet_header4_font_size"/>