Skip to content

Commit

Permalink
Pr20015 add rewards onboarding tos disclaimer android (Uplift to 1.58…
Browse files Browse the repository at this point in the history
….x) (#20064)

* Add terms of service on rewards onboarding

* Resolve presubmit issue

* Remove unused strings
  • Loading branch information
deeppandya authored Sep 12, 2023
1 parent 1d7b7aa commit 172092a
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 43 deletions.
41 changes: 41 additions & 0 deletions android/java/org/chromium/chrome/browser/BraveRewardsHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
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;
Expand All @@ -16,10 +17,14 @@
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;
Expand All @@ -30,11 +35,13 @@
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;
Expand Down Expand Up @@ -523,4 +530,38 @@ public static String getFormattedAmount(double amount) {
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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,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";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,15 @@ private void setUpViews(int deviceWidth) {
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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
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;
Expand All @@ -19,8 +18,6 @@
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;
Expand Down Expand Up @@ -54,7 +51,6 @@
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;

Expand Down Expand Up @@ -199,44 +195,11 @@ private void updateTermsOfServicePlaceHolder(View view) {
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;
Expand Down Expand Up @@ -375,8 +338,8 @@ private SpannableString stringMonthlyToSpannableString(String text) {
getActivity().finish();
});

setSpan(text, textSpannableString, R.string.monthly_contributions,
monthlyContributionClickableSpan);
BraveRewardsHelper.setSpan(getActivity(), text, textSpannableString,
R.string.monthly_contributions, monthlyContributionClickableSpan);

return textSpannableString;
}
Expand Down
16 changes: 15 additions & 1 deletion android/java/res/layout/rewards_onboarding.xml
Original file line number Diff line number Diff line change
Expand Up @@ -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" />

<TextView
android:id="@+id/tos_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp"
android:layout_marginVertical="16dp"
android:fontFamily="sans-serif"
android:gravity="center_horizontal"
android:textColor="@color/terms_of_service_text_color_default"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/how_does_it_work_main" />
</androidx.constraintlayout.widget.ConstraintLayout>

<include layout="@layout/rewards_onboarding_location_choose"
Expand Down
3 changes: 3 additions & 0 deletions browser/ui/android/strings/android_brave_strings.grd
Original file line number Diff line number Diff line change
Expand Up @@ -1755,6 +1755,9 @@ Are you sure you want to do this?
<message name="IDS_PRIVACY_POLICY" desc="Brave rewards tos text">
Privacy Policy
</message>
<message name="IDS_BRAVE_REWARDS_ONBOARDING_TOS_TEXT" desc="Brave rewards onboarding tos text">
By enabling Rewards, you agree to the <ph name="TERMS_OF_SERVICE">%1$s</ph> and <ph name="PRIVACY_POLICY">%2$s</ph>.
</message>
<message name="IDS_TAKE_QUICK_TOUR" desc="Brave rewards quick tour text">
Let’s take a quick tour
</message>
Expand Down

0 comments on commit 172092a

Please sign in to comment.