swap vpn callout card to ad free card-india retention

This commit is contained in:
tapanmodh
2022-08-25 15:18:31 +05:30
parent 6cb17cdf12
commit 2efe729fdf
26 changed files with 340 additions and 194 deletions
+7
View File
@@ -52,6 +52,7 @@ brave_java_resources = [
"java/res/drawable-hdpi/down_arrow.png",
"java/res/drawable-hdpi/ecosia.png",
"java/res/drawable-hdpi/group.png",
"java/res/drawable-hdpi/ic_ad_free_videos.png",
"java/res/drawable-hdpi/ic_brave_onboarding.png",
"java/res/drawable-hdpi/ic_chrome.png",
"java/res/drawable-hdpi/ic_cross_modal.png",
@@ -134,6 +135,7 @@ brave_java_resources = [
"java/res/drawable-mdpi/down_arrow.png",
"java/res/drawable-mdpi/ecosia.png",
"java/res/drawable-mdpi/group.png",
"java/res/drawable-mdpi/ic_ad_free_videos.png",
"java/res/drawable-mdpi/ic_brave_onboarding.png",
"java/res/drawable-mdpi/ic_chrome.png",
"java/res/drawable-mdpi/ic_cross_modal.png",
@@ -254,6 +256,7 @@ brave_java_resources = [
"java/res/drawable-xhdpi/down_arrow.png",
"java/res/drawable-xhdpi/ecosia.png",
"java/res/drawable-xhdpi/group.png",
"java/res/drawable-xhdpi/ic_ad_free_videos.png",
"java/res/drawable-xhdpi/ic_brave_onboarding.png",
"java/res/drawable-xhdpi/ic_chrome.png",
"java/res/drawable-xhdpi/ic_cross_modal.png",
@@ -335,6 +338,7 @@ brave_java_resources = [
"java/res/drawable-xxhdpi/cover_photo.png",
"java/res/drawable-xxhdpi/ecosia.png",
"java/res/drawable-xxhdpi/group.png",
"java/res/drawable-xxhdpi/ic_ad_free_videos.png",
"java/res/drawable-xxhdpi/ic_brave_onboarding.png",
"java/res/drawable-xxhdpi/ic_chrome.png",
"java/res/drawable-xxhdpi/ic_cross_modal.png",
@@ -415,6 +419,7 @@ brave_java_resources = [
"java/res/drawable-xxxhdpi/cover_photo.png",
"java/res/drawable-xxxhdpi/ecosia.png",
"java/res/drawable-xxxhdpi/group.png",
"java/res/drawable-xxxhdpi/ic_ad_free_videos.png",
"java/res/drawable-xxxhdpi/ic_brave_onboarding.png",
"java/res/drawable-xxxhdpi/ic_chrome.png",
"java/res/drawable-xxxhdpi/ic_cross_modal.png",
@@ -459,6 +464,7 @@ brave_java_resources = [
"java/res/drawable/ac_radio_button_selector.xml",
"java/res/drawable/ac_radio_group_bg.xml",
"java/res/drawable/ac_text_selector.xml",
"java/res/drawable/ad_free_card_bg.xml",
"java/res/drawable/ads_custom_notification_border.xml",
"java/res/drawable/ads_custom_notification_border_dark.xml",
"java/res/drawable/bat_ads_logo_button.xml",
@@ -819,6 +825,7 @@ brave_java_resources = [
"java/res/layout/dapps_dialog.xml",
"java/res/layout/edit_visible_assets_bottom_sheet.xml",
"java/res/layout/fragment_accounts.xml",
"java/res/layout/fragment_ad_free_callout_dialog.xml",
"java/res/layout/fragment_add_switch_ethereum_chain.xml",
"java/res/layout/fragment_add_token.xml",
"java/res/layout/fragment_backup_wallet.xml",
+2 -1
View File
@@ -13,10 +13,12 @@ import("//brave/components/safetynet/java_sources.gni")
import("//components/feed/features.gni")
brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/BraveAdFreeCalloutDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/BraveAdaptiveCaptchaUtils.java",
"../../brave/android/java/org/chromium/chrome/browser/BraveAppHooks.java",
"../../brave/android/java/org/chromium/chrome/browser/BraveApplicationImplBase.java",
"../../brave/android/java/org/chromium/chrome/browser/BraveBadge.java",
"../../brave/android/java/org/chromium/chrome/browser/BraveDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/BraveFeatureUtil.java",
"../../brave/android/java/org/chromium/chrome/browser/BraveHelper.java",
"../../brave/android/java/org/chromium/chrome/browser/BraveIntentHandler.java",
@@ -357,7 +359,6 @@ brave_java_sources = [
"../../brave/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnAlwaysOnErrorDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnCalloutDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnConfirmDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnDialogFragment.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/models/BraveVpnPrefModel.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/models/BraveVpnProfileCredentials.java",
"../../brave/android/java/org/chromium/chrome/browser/vpn/models/BraveVpnServerRegion.java",
@@ -0,0 +1,84 @@
/**
* Copyright (c) 2022 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.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import androidx.fragment.app.DialogFragment;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.ui.base.DeviceFormFactor;
public class BraveAdFreeCalloutDialogFragment extends BraveDialogFragment {
private ImageView mConfettiImageView;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
checkForImageView();
}
@Override
public void onResume() {
super.onResume();
checkForImageView();
}
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_ad_free_callout_dialog, container, false);
if (getDialog() != null && getDialog().getWindow() != null) {
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
mConfettiImageView = view.findViewById(R.id.confetti_imageview);
Button btnVideos = view.findViewById(R.id.btn_videos);
btnVideos.setOnClickListener(button -> {
BraveActivity braveActivity = BraveActivity.getBraveActivity();
if (braveActivity != null) {
braveActivity.focusSearchBox();
}
dismiss();
});
ImageView cancelImageView = view.findViewById(R.id.cancel_imageview);
cancelImageView.setOnClickListener(button -> { dismiss(); });
}
private void checkForImageView() {
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(getActivity());
boolean isLandscape = ConfigurationUtils.isLandscape(getActivity());
if (mConfettiImageView != null) {
if (isLandscape && !isTablet) {
mConfettiImageView.setVisibility(View.GONE);
} else {
mConfettiImageView.setVisibility(View.VISIBLE);
}
}
}
}
@@ -1,11 +1,11 @@
/**
* Copyright (c) 2021 The Brave Authors. All rights reserved.
* Copyright (c) 2022 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.vpn.fragments;
package org.chromium.chrome.browser;
import android.content.DialogInterface;
import android.content.res.Configuration;
@@ -19,7 +19,7 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.ui.base.DeviceFormFactor;
public class BraveVpnDialogFragment extends DialogFragment {
public class BraveDialogFragment extends DialogFragment {
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
@@ -7,53 +7,17 @@
package org.chromium.chrome.browser;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.LinearLayout;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import androidx.fragment.app.DialogFragment;
import org.chromium.chrome.R;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.chrome.browser.BraveRewardsHelper;
public class CrossPromotionalModalDialogFragment extends DialogFragment implements View.OnClickListener {
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setDialogParams();
}
@Override
public void onResume() {
super.onResume();
getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(android.content.DialogInterface dialog,
int keyCode, android.view.KeyEvent event) {
if ((keyCode == android.view.KeyEvent.KEYCODE_BACK)) {
dismiss();
return true;
} else return false;
}
});
setDialogParams();
}
public class CrossPromotionalModalDialogFragment
extends BraveDialogFragment implements View.OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_cross_promotional_modal_dialog, container, false);
@@ -69,26 +33,4 @@ public class CrossPromotionalModalDialogFragment extends DialogFragment implemen
public void onClick(View view) {
dismiss();
}
private void setDialogParams() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int mDeviceHeight = displayMetrics.heightPixels;
int mDeviceWidth = displayMetrics.widthPixels;
WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(getActivity());
boolean isLandscape = ConfigurationUtils.isLandscape(getActivity());
if (isTablet) {
params.width = (int) (0.5 * mDeviceWidth);
} else {
if (isLandscape) {
params.width = (int) (0.5 * mDeviceWidth);
} else {
params.width = (int) (0.9 * mDeviceWidth);
}
}
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
getDialog().getWindow().setAttributes(params);
}
}
@@ -7,38 +7,25 @@
package org.chromium.chrome.browser;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.fragment.app.DialogFragment;
import org.chromium.base.ContextUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveRewardsHelper;
import org.chromium.chrome.browser.app.BraveActivity;
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
import org.chromium.chrome.browser.set_default_browser.BraveSetDefaultBrowserUtils;
import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.ui.base.DeviceFormFactor;
import java.util.Arrays;
import java.util.List;
public class DormantUsersEngagementDialogFragment extends DialogFragment {
public class DormantUsersEngagementDialogFragment extends BraveDialogFragment {
private static final List<String> mTexts =
Arrays.asList(ContextUtils.getApplicationContext().getResources().getString(
R.string.dormant_users_engagement_text_1),
@@ -50,29 +37,6 @@ public class DormantUsersEngagementDialogFragment extends DialogFragment {
R.drawable.ic_rocket, R.drawable.ic_brave_battery, R.drawable.ic_brave_mobiledata);
private String notificationType;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setDialogParams();
}
@Override
public void onResume() {
super.onResume();
getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(android.content.DialogInterface dialog, int keyCode,
android.view.KeyEvent event) {
if ((keyCode == android.view.KeyEvent.KEYCODE_BACK)) {
dismiss();
return true;
} else
return false;
}
});
setDialogParams();
}
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -119,26 +83,4 @@ public class DormantUsersEngagementDialogFragment extends DialogFragment {
public void setNotificationType(String notificationType) {
this.notificationType = notificationType;
}
private void setDialogParams() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int mDeviceHeight = displayMetrics.heightPixels;
int mDeviceWidth = displayMetrics.widthPixels;
WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(getActivity());
boolean isLandscape = ConfigurationUtils.isLandscape(getActivity());
if (isTablet) {
params.width = (int) (0.5 * mDeviceWidth);
} else {
if (isLandscape) {
params.width = (int) (0.5 * mDeviceWidth);
} else {
params.width = (int) (0.9 * mDeviceWidth);
}
}
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
getDialog().getWindow().setAttributes(params);
}
}
@@ -76,6 +76,7 @@ import org.chromium.brave_wallet.mojom.SwapService;
import org.chromium.brave_wallet.mojom.TxService;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ApplicationLifetime;
import org.chromium.chrome.browser.BraveAdFreeCalloutDialogFragment;
import org.chromium.chrome.browser.BraveAdaptiveCaptchaUtils;
import org.chromium.chrome.browser.BraveHelper;
import org.chromium.chrome.browser.BraveRelaunchUtils;
@@ -113,6 +114,7 @@ import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
import org.chromium.chrome.browser.informers.BraveAndroidSyncDisabledInformer;
import org.chromium.chrome.browser.notifications.retention.RetentionNotificationUtil;
import org.chromium.chrome.browser.ntp.NewTabPageManager;
import org.chromium.chrome.browser.ntp_background_images.util.NewTabPageListener;
import org.chromium.chrome.browser.onboarding.BraveTalkOptInPopupListener;
import org.chromium.chrome.browser.onboarding.OnboardingPrefManager;
@@ -244,6 +246,7 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
private boolean isProcessingPendingDappsTxRequest;
private int mLastTabId;
private boolean mNativeInitialized;
private NewTabPageManager mNewTabPageManager;
@SuppressLint("VisibleForTests")
public BraveActivity() {
@@ -891,7 +894,10 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
checkFingerPrintingOnUpgrade();
compositorView = null;
if (BraveVpnUtils.isBraveVpnFeatureEnable()
String countryCode = Locale.getDefault().getCountry();
if (!countryCode.equals(BraveConstants.INDIA_COUNTRY_CODE)
&& BraveVpnUtils.isBraveVpnFeatureEnable()
&& InAppPurchaseWrapper.getInstance().isSubscriptionSupported()) {
if (BraveVpnPrefUtils.shouldShowCallout() && !BraveVpnPrefUtils.isSubscriptionPurchase()
&& (SharedPreferencesManager.getInstance().readInt(
@@ -928,6 +934,19 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
showSearchBoxTooltip();
}
mNativeInitialized = true;
if (countryCode.equals(BraveConstants.INDIA_COUNTRY_CODE)
&& SharedPreferencesManager.getInstance().readBoolean(
BravePreferenceKeys.BRAVE_AD_FREE_CALLOUT_DIALOG, true)
&& getActivityTab() != null && getActivityTab().getUrl().getSpec() != null
&& UrlUtilities.isNTPUrl(getActivityTab().getUrl().getSpec())
&& (SharedPreferencesManager.getInstance().readBoolean(
BravePreferenceKeys.BRAVE_OPENED_YOUTUBE, false)
|| SharedPreferencesManager.getInstance().readInt(
BravePreferenceKeys.BRAVE_APP_OPEN_COUNT)
>= 7)) {
showAdFreeCalloutDialog();
}
}
private void showSearchBoxTooltip() {
@@ -962,7 +981,7 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
.build();
String countryCode = Locale.getDefault().getCountry();
if (countryCode.equals("IN")) {
if (countryCode.equals(BraveConstants.INDIA_COUNTRY_CODE)) {
TextView toolTipBody = popupWindowTooltip.findViewById(R.id.tv_tooltip_title);
toolTipBody.setText(getResources().getString(R.string.searchbox_onboarding_india));
}
@@ -987,6 +1006,27 @@ public abstract class BraveActivity<C extends ChromeActivityComponent> extends C
getSupportFragmentManager(), "BraveVpnCalloutDialogFragment");
}
private void showAdFreeCalloutDialog() {
SharedPreferencesManager.getInstance().writeBoolean(
BravePreferenceKeys.BRAVE_AD_FREE_CALLOUT_DIALOG, false);
BraveAdFreeCalloutDialogFragment braveAdFreeCalloutDialogFragment =
new BraveAdFreeCalloutDialogFragment();
braveAdFreeCalloutDialogFragment.setCancelable(false);
braveAdFreeCalloutDialogFragment.show(
getSupportFragmentManager(), "BraveAdFreeCalloutDialogFragment");
}
public void setNewTabPageManager(NewTabPageManager manager) {
mNewTabPageManager = manager;
}
public void focusSearchBox() {
if (mNewTabPageManager != null) {
mNewTabPageManager.focusSearchBox(false, null);
}
}
// Sets NTP background
public void setBackground(Bitmap bgWallpaper) {
CompositorViewHolder compositorView = findViewById(R.id.compositor_view_holder);
@@ -182,7 +182,7 @@ public class WelcomeOnboardingActivity extends FirstRunActivityBase {
mIvArrowDown.setVisibility(View.VISIBLE);
String countryCode = Locale.getDefault().getCountry();
if (countryCode.equals("IN")) {
if (countryCode.equals(BraveConstants.INDIA_COUNTRY_CODE)) {
mTvCard.setText(getResources().getString(R.string.privacy_onboarding_india));
mTvDefault.setText(getResources().getString(R.string.onboarding_set_default_india));
}
@@ -1031,6 +1031,7 @@ public class BraveNewTabPageLayout
assert (activity instanceof BraveActivity);
mActivity = activity;
((BraveActivity) mActivity).dismissShieldsTooltip();
((BraveActivity) mActivity).setNewTabPageManager(manager);
}
public void setTabProvider(Supplier<Tab> tabProvider) {
@@ -42,4 +42,6 @@ public final class BravePreferenceKeys {
"org.chromium.chrome.browser.Brave_Biometrics_For_Wallet_Iv";
public static final String BRAVE_BIOMETRICS_FOR_WALLET_ENCRYPTED =
"org.chromium.chrome.browser.Brave_Biometrics_For_Wallet_Encrypted";
public static final String BRAVE_AD_FREE_CALLOUT_DIALOG = "brave_ad_free_callout_dialog";
public static final String BRAVE_OPENED_YOUTUBE = "brave_opened_youtube";
}
@@ -8,35 +8,29 @@
package org.chromium.chrome.browser.rate;
import android.content.Intent;
import android.os.Bundle;
import android.net.Uri;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.EditText;
import android.widget.Button;
import android.widget.ImageButton;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.fragment.app.DialogFragment;
import android.content.DialogInterface;
import android.util.DisplayMetrics;
import android.content.res.Configuration;
import org.chromium.chrome.R;
import org.chromium.base.task.AsyncTask;
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.chrome.browser.util.ConfigurationUtils;
import org.chromium.chrome.browser.rate.RateFeedbackUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveDialogFragment;
import org.chromium.chrome.browser.night_mode.GlobalNightModeStateProviderHolder;
import org.chromium.chrome.browser.rate.RateFeedbackUtils;
public class RateDialogFragment extends DialogFragment implements View.OnClickListener {
public class RateDialogFragment extends BraveDialogFragment implements View.OnClickListener {
private static final String SAD = "sad";
private static final String NEUTRAL = "neutral";
@@ -68,28 +62,6 @@ public class RateDialogFragment extends DialogFragment implements View.OnClickLi
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setDialogParams();
}
@Override
public void onResume() {
super.onResume();
getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(android.content.DialogInterface dialog,
int keyCode, android.view.KeyEvent event) {
if ((keyCode == android.view.KeyEvent.KEYCODE_BACK)) {
dismiss();
return true;
} else return false;
}
});
setDialogParams();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_rate_dialog, container, false);
@@ -195,28 +167,6 @@ public class RateDialogFragment extends DialogFragment implements View.OnClickLi
mRateTitleTextView.setText(getResources().getString(R.string.would_you_mind_leaving_rating));
}
private void setDialogParams() {
DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int mDeviceHeight = displayMetrics.heightPixels;
int mDeviceWidth = displayMetrics.widthPixels;
ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes();
boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(getActivity());
boolean isLandscape = ConfigurationUtils.isLandscape(getActivity());
if (isTablet) {
params.width = (int) (0.5 * mDeviceWidth);
} else {
if (isLandscape) {
params.width = (int) (0.5 * mDeviceWidth);
} else {
params.width = (int) (0.9 * mDeviceWidth);
}
}
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
}
private RateFeedbackUtils.RateFeedbackCallback rateFeedbackCallback = new RateFeedbackUtils.RateFeedbackCallback() {
@Override
public void rateFeedbackSubmitted() {
@@ -89,6 +89,8 @@ import org.chromium.chrome.browser.onboarding.v2.HighlightItem;
import org.chromium.chrome.browser.onboarding.v2.HighlightView;
import org.chromium.chrome.browser.preferences.BravePref;
import org.chromium.chrome.browser.preferences.BravePrefServiceBridge;
import org.chromium.chrome.browser.preferences.BravePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.preferences.website.BraveShieldsContentSettings;
import org.chromium.chrome.browser.preferences.website.BraveShieldsContentSettingsObserver;
import org.chromium.chrome.browser.profiles.Profile;
@@ -115,6 +117,7 @@ import org.chromium.chrome.browser.toolbar.menu_button.MenuButtonCoordinator;
import org.chromium.chrome.browser.toolbar.top.NavigationPopup.HistoryDelegate;
import org.chromium.chrome.browser.toolbar.top.ToolbarLayout;
import org.chromium.chrome.browser.toolbar.top.ToolbarTablet.OfflineDownloader;
import org.chromium.chrome.browser.util.BraveConstants;
import org.chromium.chrome.browser.util.PackageUtils;
import org.chromium.components.browser_ui.styles.ChromeColors;
import org.chromium.components.embedder_support.util.UrlConstants;
@@ -144,6 +147,7 @@ public abstract class BraveToolbarLayoutImpl extends ToolbarLayout
implements BraveToolbarLayout, OnClickListener, View.OnLongClickListener,
BraveRewardsObserver, BraveRewardsNativeWorker.PublisherObserver {
private static final String JAPAN_COUNTRY_CODE = "JP";
private static final String YOUTUBE_DOMAIN = "youtube.com";
private static final List<String> mBraveSearchEngineDefaultRegions =
Arrays.asList("CA", "DE", "FR", "GB", "US", "AT", "ES", "MX");
private static final long MB_10 = 10000000;
@@ -409,6 +413,15 @@ public abstract class BraveToolbarLayoutImpl extends ToolbarLayout
checkForTooltip(tab);
}
}
String countryCode = Locale.getDefault().getCountry();
if (countryCode.equals(BraveConstants.INDIA_COUNTRY_CODE)
&& url.domainIs(YOUTUBE_DOMAIN)
&& SharedPreferencesManager.getInstance().readBoolean(
BravePreferenceKeys.BRAVE_AD_FREE_CALLOUT_DIALOG, true)) {
SharedPreferencesManager.getInstance().writeBoolean(
BravePreferenceKeys.BRAVE_OPENED_YOUTUBE, true);
}
}
@Override
@@ -519,9 +532,17 @@ public abstract class BraveToolbarLayoutImpl extends ToolbarLayout
String trackerText = "";
if (!displayTrackerName.isEmpty()) {
trackerText = String.format(getContext().getResources().getString(
R.string.shield_bigtech_tracker_blocked),
displayTrackerName, String.valueOf(adsTrackersCount - 1));
if (adsTrackersCount - 1 == 0) {
trackerText =
String.format(getContext().getResources().getString(
R.string.shield_bigtech_tracker_only_blocked),
displayTrackerName);
} else {
trackerText = String.format(getContext().getResources().getString(
R.string.shield_bigtech_tracker_blocked),
displayTrackerName, String.valueOf(adsTrackersCount - 1));
}
} else {
trackerText = String.format(
getContext().getResources().getString(R.string.shield_tracker_blocked),
@@ -25,4 +25,6 @@ public final class BraveConstants {
public static final String BRAVE_REF_URL = "https://brave.com/r/";
public static final String BRAVE_NEWS_LEARN_MORE_URL =
"https://brave.com/privacy/browser/#brave-news";
public static final String INDIA_COUNTRY_CODE = "IN";
}
@@ -15,9 +15,10 @@ import android.view.ViewGroup;
import android.widget.Button;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveDialogFragment;
public class BraveVpnAlwaysOnErrorDialogFragment
extends BraveVpnDialogFragment implements View.OnClickListener {
extends BraveDialogFragment implements View.OnClickListener {
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -15,13 +15,14 @@ import android.widget.Button;
import android.widget.ImageView;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveDialogFragment;
import org.chromium.chrome.browser.InternetConnection;
import org.chromium.chrome.browser.vpn.utils.BraveVpnPrefUtils;
import org.chromium.chrome.browser.vpn.utils.BraveVpnUtils;
import org.chromium.ui.widget.Toast;
public class BraveVpnCalloutDialogFragment
extends BraveVpnDialogFragment implements View.OnClickListener {
extends BraveDialogFragment implements View.OnClickListener {
@Override
public View onCreateView(
LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -16,8 +16,9 @@ import android.view.ViewGroup;
import com.airbnb.lottie.LottieAnimationView;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.BraveDialogFragment;
public class BraveVpnConfirmDialogFragment extends BraveVpnDialogFragment {
public class BraveVpnConfirmDialogFragment extends BraveDialogFragment {
private LottieAnimationView mAnimatedView;
@Override
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2022 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/.
-->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/ad_free_card_bg_color" />
<corners android:radius="16dp" />
</shape>
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2022 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/.
-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="16dp"
android:paddingHorizontal="10dp"
android:paddingBottom="24dp"
android:background="@drawable/ad_free_card_bg">
<ImageView
android:id="@+id/cancel_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@null"
android:layout_gravity="end|top"
android:layout_marginEnd="10dp"
app:tint="@color/ad_free_card_cancel_color"
app:srcCompat="@drawable/btn_close"/>
<ImageView
android:id="@+id/confetti_imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:contentDescription="@null"
android:src="@drawable/ic_ad_free_videos"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="4dp"
android:text="@string/ad_free_video"
android:textSize="22sp"
android:textColor="@color/brave_stats_text_color"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_ads_before_video"
app:drawableStartCompat="@drawable/ic_basic_check"
app:drawableTint="@color/ad_free_check_color"
android:drawablePadding="4dp"
android:textSize="16sp"
android:layout_marginTop="16dp"
android:layout_marginHorizontal="30dp"
android:textColor="@color/brave_stats_text_color"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_ads_during_video"
app:drawableStartCompat="@drawable/ic_basic_check"
app:drawableTint="@color/ad_free_check_color"
android:drawablePadding="4dp"
android:textSize="16sp"
android:layout_marginTop="6dp"
android:layout_marginHorizontal="30dp"
android:textColor="@color/brave_stats_text_color"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_ads_on_page"
app:drawableStartCompat="@drawable/ic_basic_check"
app:drawableTint="@color/ad_free_check_color"
android:drawablePadding="4dp"
android:textSize="16sp"
android:layout_marginTop="6dp"
android:layout_marginHorizontal="30dp"
android:textColor="@color/brave_stats_text_color"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_interruptions"
app:drawableStartCompat="@drawable/ic_basic_check"
app:drawableTint="@color/ad_free_check_color"
android:drawablePadding="4dp"
android:textSize="16sp"
android:layout_marginTop="6dp"
android:layout_marginHorizontal="30dp"
android:textColor="@color/brave_stats_text_color"/>
<Button
android:id="@+id/btn_videos"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginHorizontal="30dp"
android:background="@drawable/blue_48_rounded_bg"
app:backgroundTint="@null"
android:text="@string/search_videos"
android:textAllCaps="false"
android:textColor="@android:color/white"
android:textSize="16sp"
android:layout_marginTop="16dp"
android:paddingVertical="4dp"
android:minHeight="0dp"
style="?android:attr/borderlessButtonStyle"/>
</LinearLayout>
@@ -46,6 +46,9 @@
<color name="set_default_bottom_sheet_bg_color">#1E2029</color>
<color name="set_default_text_color">#F0F2FF</color>
<color name="ad_free_card_cancel_color">#F0F2FF</color>
<color name="ad_free_card_bg_color">#1E2029</color>
<!-- Brave news colors -->
<color name="card_background">#F23B3E4F</color>
<color name="card_background_solid">#353535</color>
+4
View File
@@ -63,6 +63,10 @@
<color name="set_default_text_color">#212529</color>
<color name="set_default_bottom_sheet_button_disable_color">#DADCE8</color>
<color name="ad_free_card_cancel_color">#212529</color>
<color name="ad_free_card_bg_color">@android:color/white</color>
<color name="ad_free_check_color">#737ADE</color>
<!-- Sync colors -->
<color name="brave_sync_bg_color">@android:color/transparent</color>
<color name="brave_sync_border_color">@color/modern_grey_50</color>
@@ -430,6 +430,9 @@ This file contains all "about" strings. It is set to NOT be translated, in tran
<message name="IDS_SHIELD_BIGTECH_TRACKER_BLOCKED" desc="Text for shield tracker big tech blocked tooltip onboarding">
<ph name="BIG_TECH">%1$s<ex>google</ex></ph> and <ph name="TRACKER">%2$s<ex>1</ex></ph> other ads &amp; trackers blocked
</message>
<message name="IDS_SHIELD_BIGTECH_TRACKER_ONLY_BLOCKED" desc="Text for shield tracker only big tech blocked tooltip onboarding">
<ph name="BIG_TECH">%1$s<ex>google</ex></ph> and other ads &amp; trackers blocked
</message>
<message name="IDS_SHIELD_TRACKER_BLOCKED" desc="Text for shield tracker blocked tooltip onboarding">
<ph name="TRACKER_COUNT">%1$s<ex>1</ex></ph> ads &amp; trackers blocked
</message>
@@ -2027,6 +2030,24 @@ Are you sure you want to do this?
<message name="IDS_TIME_LONG_MINS" desc="Use an unabbreviated word for minute(s). [ICU Syntax]">
{MINUTES, plural, =1 {# minute} other {# minutes}}
</message>
<message name="IDS_AD_FREE_VIDEO" desc="ad free callout dialog title">
Stream videos. Ad free.
</message>
<message name="IDS_NO_ADS_BEFORE_VIDEO" desc="ad free callout dialog text for no ads before video">
No ads before your video
</message>
<message name="IDS_NO_ADS_DURING_VIDEO" desc="ad free callout dialog text for no ads during video">
No ads during your video
</message>
<message name="IDS_NO_ADS_ON_PAGE" desc="ad free callout dialog text for no ads on page">
No ads on the page
</message>
<message name="IDS_NO_INTERRUPTIONS" desc="ad free callout dialog text for no interruptions">
No interruptions
</message>
<message name="IDS_SEARCH_VIDEOS" desc="ad free callout dialog button text for youtube">
Search for videos
</message>
<message name="IDS_BRAVE_FIREWALL_VPN" desc="VPN title text">
Brave Firewall + VPN
</message>