diff --git a/android/java/org/chromium/chrome/browser/BraveRewardsHelper.java b/android/java/org/chromium/chrome/browser/BraveRewardsHelper.java index 236d81f0734..75bdf83db43 100644 --- a/android/java/org/chromium/chrome/browser/BraveRewardsHelper.java +++ b/android/java/org/chromium/chrome/browser/BraveRewardsHelper.java @@ -8,6 +8,7 @@ package org.chromium.chrome.browser; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.annotation.SuppressLint; +import android.content.Context; import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Bitmap; @@ -16,10 +17,14 @@ import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; +import android.graphics.Typeface; import android.os.Build; import android.os.Handler; import android.text.Html; +import android.text.SpannableString; import android.text.Spanned; +import android.text.style.ClickableSpan; +import android.text.style.StyleSpan; import android.util.DisplayMetrics; import android.view.TouchDelegate; import android.view.View; @@ -30,11 +35,13 @@ import org.chromium.base.ContextUtils; import org.chromium.base.annotations.CalledByNative; import org.chromium.chrome.R; import org.chromium.chrome.browser.app.BraveActivity; +import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.tab.Tab; import org.chromium.components.browser_ui.widget.RoundedIconGenerator; import org.chromium.components.favicon.IconType; import org.chromium.components.favicon.LargeIconBridge; +import org.chromium.ui.text.NoUnderlineClickableSpan; import org.chromium.url.GURL; import java.math.BigDecimal; @@ -523,4 +530,38 @@ public class BraveRewardsHelper implements LargeIconBridge.LargeIconCallback { numberFormat.setMinimumFractionDigits(3); return numberFormat.format(amount); } + + public static SpannableString tosSpannableString(String text, int colorRes) { + Context context = ContextUtils.getApplicationContext(); + Spanned textSpanned = spannedFromHtmlString(text); + SpannableString textSpannableString = new SpannableString(textSpanned.toString()); + + NoUnderlineClickableSpan termsOfServiceClickableSpan = + new NoUnderlineClickableSpan(context, colorRes, (textView) -> { + CustomTabActivity.showInfoPage(context, BraveActivity.BRAVE_TERMS_PAGE); + }); + + NoUnderlineClickableSpan privacyPolicyClickableSpan = + new NoUnderlineClickableSpan(context, colorRes, (textView) -> { + CustomTabActivity.showInfoPage(context, BraveActivity.BRAVE_PRIVACY_POLICY); + }); + + setSpan(context, text, textSpannableString, R.string.terms_of_service, + termsOfServiceClickableSpan); // terms of service + setSpan(context, text, textSpannableString, R.string.privacy_policy, + privacyPolicyClickableSpan); // privacy policy + return textSpannableString; + } + + public static void setSpan(Context context, String text, SpannableString tosTextSS, + int stringId, ClickableSpan clickableSpan) { + String spanString = context.getResources().getString(stringId); + int spanLength = spanString.length(); + int index = text.indexOf(spanString); + tosTextSS.setSpan( + clickableSpan, index, index + spanLength, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + Typeface typeface = Typeface.create("sans-serif", Typeface.NORMAL); + tosTextSS.setSpan(new StyleSpan(typeface.getStyle()), index, index + spanLength, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + } } diff --git a/android/java/org/chromium/chrome/browser/app/BraveActivity.java b/android/java/org/chromium/chrome/browser/app/BraveActivity.java index f12b6bf63bc..b40fd1744af 100644 --- a/android/java/org/chromium/chrome/browser/app/BraveActivity.java +++ b/android/java/org/chromium/chrome/browser/app/BraveActivity.java @@ -217,7 +217,7 @@ public abstract class BraveActivity extends ChromeActivity public static final String REWARDS_LEARN_MORE_URL = "https://brave.com/faq-rewards/#unclaimed-funds"; public static final String BRAVE_TERMS_PAGE = "https://basicattentiontoken.org/user-terms-of-service/"; - public static final String BRAVE_PRIVACY_POLICY = "https://brave.com/privacy/#rewards"; + public static final String BRAVE_PRIVACY_POLICY = "https://brave.com/privacy/browser/#rewards"; private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit"; private static final String PREF_CLEAR_ON_EXIT = "clear_on_exit"; public static final String OPEN_URL = "open_url"; diff --git a/android/java/org/chromium/chrome/browser/rewards/onboarding/RewardsOnboarding.java b/android/java/org/chromium/chrome/browser/rewards/onboarding/RewardsOnboarding.java index 2abe63d7faf..65818f4303f 100644 --- a/android/java/org/chromium/chrome/browser/rewards/onboarding/RewardsOnboarding.java +++ b/android/java/org/chromium/chrome/browser/rewards/onboarding/RewardsOnboarding.java @@ -96,6 +96,15 @@ public class RewardsOnboarding implements BraveRewardsObserver { View howDoseItWorkMainButton = mMainLayout.findViewById(R.id.how_does_it_work_main); howDoseItWorkMainButton.setOnClickListener(v -> { showRewardsTour(); }); + String termsOfServiceText = String.format( + mPopupView.getContext().getString(R.string.brave_rewards_onboarding_tos_text), + mPopupView.getContext().getString(R.string.terms_of_service), + mPopupView.getContext().getString(R.string.privacy_policy)); + TextView tosText = mMainLayout.findViewById(R.id.tos_text); + tosText.setMovementMethod(LinkMovementMethod.getInstance()); + tosText.setText(BraveRewardsHelper.tosSpannableString( + termsOfServiceText, R.color.brave_rewards_modal_theme_color)); + // Location choose layout views mLocationChooseLayout = mPopupView.findViewById(R.id.rewards_onboarding_location_choose_layout_id); diff --git a/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingPanelFragment.java b/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingPanelFragment.java index e44c2966609..1efc7a83e93 100644 --- a/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingPanelFragment.java +++ b/android/java/org/chromium/chrome/browser/rewards/tipping/RewardsTippingPanelFragment.java @@ -10,7 +10,6 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.app.Dialog; import android.content.res.Resources; -import android.graphics.Typeface; import android.os.Bundle; import android.text.Editable; import android.text.InputType; @@ -19,8 +18,6 @@ import android.text.Spanned; import android.text.TextUtils; import android.text.TextWatcher; import android.text.method.LinkMovementMethod; -import android.text.style.ClickableSpan; -import android.text.style.StyleSpan; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; @@ -54,7 +51,6 @@ import org.chromium.chrome.browser.BraveRewardsNativeWorker; import org.chromium.chrome.browser.BraveRewardsObserver; import org.chromium.chrome.browser.BraveWalletProvider; import org.chromium.chrome.browser.app.BraveActivity; -import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.util.TabUtils; import org.chromium.ui.text.NoUnderlineClickableSpan; @@ -199,44 +195,11 @@ public class RewardsTippingPanelFragment String termsOfServiceText = String.format(res.getString(R.string.brave_rewards_tos_text), res.getString(R.string.terms_of_service), res.getString(R.string.privacy_policy)); - SpannableString spannableString = stringToSpannableString(termsOfServiceText); + SpannableString spannableString = BraveRewardsHelper.tosSpannableString( + termsOfServiceText, R.color.terms_of_service_text_color); proceedTextView.setText(spannableString); } - private SpannableString stringToSpannableString(String text) { - Spanned textSpanned = BraveRewardsHelper.spannedFromHtmlString(text); - SpannableString textSpannableString = new SpannableString(textSpanned.toString()); - - NoUnderlineClickableSpan termsOfServiceClickableSpan = new NoUnderlineClickableSpan( - getActivity(), R.color.terms_of_service_text_color, (textView) -> { - CustomTabActivity.showInfoPage(getActivity(), BraveActivity.BRAVE_TERMS_PAGE); - }); - - NoUnderlineClickableSpan privacyPolicyClickableSpan = new NoUnderlineClickableSpan( - getActivity(), R.color.terms_of_service_text_color, (textView) -> { - CustomTabActivity.showInfoPage( - getActivity(), BraveActivity.BRAVE_PRIVACY_POLICY); - }); - - setSpan(text, textSpannableString, R.string.terms_of_service, - termsOfServiceClickableSpan); // terms of service - setSpan(text, textSpannableString, R.string.privacy_policy, - privacyPolicyClickableSpan); // privacy policy - return textSpannableString; - } - - private void setSpan( - String text, SpannableString tosTextSS, int stringId, ClickableSpan clickableSpan) { - String spanString = getResources().getString(stringId); - int spanLength = spanString.length(); - int index = text.indexOf(spanString); - tosTextSS.setSpan( - clickableSpan, index, index + spanLength, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - Typeface typeface = Typeface.create("sans-serif", Typeface.NORMAL); - tosTextSS.setSpan(new StyleSpan(typeface.getStyle()), index, index + spanLength, - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - } - @Override public void OnGetExternalWallet(String externalWallet) { int walletStatus = WalletStatus.NOT_CONNECTED; @@ -375,8 +338,8 @@ public class RewardsTippingPanelFragment getActivity().finish(); }); - setSpan(text, textSpannableString, R.string.monthly_contributions, - monthlyContributionClickableSpan); + BraveRewardsHelper.setSpan(getActivity(), text, textSpannableString, + R.string.monthly_contributions, monthlyContributionClickableSpan); return textSpannableString; } diff --git a/android/java/res/layout/rewards_onboarding.xml b/android/java/res/layout/rewards_onboarding.xml index f56b66eae3b..4a726cc3bee 100644 --- a/android/java/res/layout/rewards_onboarding.xml +++ b/android/java/res/layout/rewards_onboarding.xml @@ -86,11 +86,25 @@ android:textAllCaps="false" android:textColor="@color/brave_rating_not_now_text_color" android:textSize="13sp" - app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/start_using_rewards_button" /> + + Check status - + @@ -1812,6 +1812,9 @@ Are you sure you want to do this? Privacy Policy + + By enabling Rewards, you agree to the %1$s and %2$s. + Let’s take a quick tour