diff --git a/android/brave_java_resources.gni b/android/brave_java_resources.gni index 628b3ed7d71..e9080032468 100644 --- a/android/brave_java_resources.gni +++ b/android/brave_java_resources.gni @@ -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", diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index 945d11b533b..1b2e6c45bad 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -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", diff --git a/android/java/org/chromium/chrome/browser/BraveAdFreeCalloutDialogFragment.java b/android/java/org/chromium/chrome/browser/BraveAdFreeCalloutDialogFragment.java new file mode 100644 index 00000000000..6416a6b3d54 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/BraveAdFreeCalloutDialogFragment.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); + } + } + } +} diff --git a/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnDialogFragment.java b/android/java/org/chromium/chrome/browser/BraveDialogFragment.java similarity index 92% rename from android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnDialogFragment.java rename to android/java/org/chromium/chrome/browser/BraveDialogFragment.java index 3a084079316..c1997447a1b 100644 --- a/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/BraveDialogFragment.java @@ -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); diff --git a/android/java/org/chromium/chrome/browser/CrossPromotionalModalDialogFragment.java b/android/java/org/chromium/chrome/browser/CrossPromotionalModalDialogFragment.java index 44240d870df..4762b50cabd 100644 --- a/android/java/org/chromium/chrome/browser/CrossPromotionalModalDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/CrossPromotionalModalDialogFragment.java @@ -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); - } } diff --git a/android/java/org/chromium/chrome/browser/DormantUsersEngagementDialogFragment.java b/android/java/org/chromium/chrome/browser/DormantUsersEngagementDialogFragment.java index 2cdd61fa4d4..c1be8db196d 100644 --- a/android/java/org/chromium/chrome/browser/DormantUsersEngagementDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/DormantUsersEngagementDialogFragment.java @@ -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 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); - } } diff --git a/android/java/org/chromium/chrome/browser/app/BraveActivity.java b/android/java/org/chromium/chrome/browser/app/BraveActivity.java index 2ffc5a0e211..7765502e759 100644 --- a/android/java/org/chromium/chrome/browser/app/BraveActivity.java +++ b/android/java/org/chromium/chrome/browser/app/BraveActivity.java @@ -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 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 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 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 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 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); diff --git a/android/java/org/chromium/chrome/browser/firstrun/WelcomeOnboardingActivity.java b/android/java/org/chromium/chrome/browser/firstrun/WelcomeOnboardingActivity.java index 8166bc5c47d..f3cd5c506af 100644 --- a/android/java/org/chromium/chrome/browser/firstrun/WelcomeOnboardingActivity.java +++ b/android/java/org/chromium/chrome/browser/firstrun/WelcomeOnboardingActivity.java @@ -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)); } diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java index c28308bec77..1487b0d4632 100644 --- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java @@ -1031,6 +1031,7 @@ public class BraveNewTabPageLayout assert (activity instanceof BraveActivity); mActivity = activity; ((BraveActivity) mActivity).dismissShieldsTooltip(); + ((BraveActivity) mActivity).setNewTabPageManager(manager); } public void setTabProvider(Supplier tabProvider) { diff --git a/android/java/org/chromium/chrome/browser/preferences/BravePreferenceKeys.java b/android/java/org/chromium/chrome/browser/preferences/BravePreferenceKeys.java index 8be2ef3160b..f1d1bbf9cd7 100644 --- a/android/java/org/chromium/chrome/browser/preferences/BravePreferenceKeys.java +++ b/android/java/org/chromium/chrome/browser/preferences/BravePreferenceKeys.java @@ -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"; } diff --git a/android/java/org/chromium/chrome/browser/rate/RateDialogFragment.java b/android/java/org/chromium/chrome/browser/rate/RateDialogFragment.java index 1671e8f4a7b..61e2c3fe3e1 100644 --- a/android/java/org/chromium/chrome/browser/rate/RateDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/rate/RateDialogFragment.java @@ -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() { diff --git a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java index 929ebb416d8..c403028072e 100644 --- a/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java +++ b/android/java/org/chromium/chrome/browser/toolbar/top/BraveToolbarLayoutImpl.java @@ -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 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), diff --git a/android/java/org/chromium/chrome/browser/util/BraveConstants.java b/android/java/org/chromium/chrome/browser/util/BraveConstants.java index 43f05175490..8e7f28a4192 100644 --- a/android/java/org/chromium/chrome/browser/util/BraveConstants.java +++ b/android/java/org/chromium/chrome/browser/util/BraveConstants.java @@ -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"; } diff --git a/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnAlwaysOnErrorDialogFragment.java b/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnAlwaysOnErrorDialogFragment.java index 2dc5841e5b5..cbf5935f44c 100644 --- a/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnAlwaysOnErrorDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnAlwaysOnErrorDialogFragment.java @@ -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) { diff --git a/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnCalloutDialogFragment.java b/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnCalloutDialogFragment.java index 2d8ca35fe3f..4b882bfd767 100644 --- a/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnCalloutDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnCalloutDialogFragment.java @@ -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) { diff --git a/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnConfirmDialogFragment.java b/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnConfirmDialogFragment.java index b29e78acbe9..29ec8b9d12a 100644 --- a/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnConfirmDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/vpn/fragments/BraveVpnConfirmDialogFragment.java @@ -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 diff --git a/android/java/res/drawable-hdpi/ic_ad_free_videos.png b/android/java/res/drawable-hdpi/ic_ad_free_videos.png new file mode 100644 index 00000000000..fc2fc9b2be9 Binary files /dev/null and b/android/java/res/drawable-hdpi/ic_ad_free_videos.png differ diff --git a/android/java/res/drawable-mdpi/ic_ad_free_videos.png b/android/java/res/drawable-mdpi/ic_ad_free_videos.png new file mode 100644 index 00000000000..cbe49e07b70 Binary files /dev/null and b/android/java/res/drawable-mdpi/ic_ad_free_videos.png differ diff --git a/android/java/res/drawable-xhdpi/ic_ad_free_videos.png b/android/java/res/drawable-xhdpi/ic_ad_free_videos.png new file mode 100644 index 00000000000..efd033b6cfa Binary files /dev/null and b/android/java/res/drawable-xhdpi/ic_ad_free_videos.png differ diff --git a/android/java/res/drawable-xxhdpi/ic_ad_free_videos.png b/android/java/res/drawable-xxhdpi/ic_ad_free_videos.png new file mode 100644 index 00000000000..fb6a2ca1ce8 Binary files /dev/null and b/android/java/res/drawable-xxhdpi/ic_ad_free_videos.png differ diff --git a/android/java/res/drawable-xxxhdpi/ic_ad_free_videos.png b/android/java/res/drawable-xxxhdpi/ic_ad_free_videos.png new file mode 100644 index 00000000000..9b6dc0ca54d Binary files /dev/null and b/android/java/res/drawable-xxxhdpi/ic_ad_free_videos.png differ diff --git a/android/java/res/drawable/ad_free_card_bg.xml b/android/java/res/drawable/ad_free_card_bg.xml new file mode 100644 index 00000000000..fadfc62d77f --- /dev/null +++ b/android/java/res/drawable/ad_free_card_bg.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/android/java/res/layout/fragment_ad_free_callout_dialog.xml b/android/java/res/layout/fragment_ad_free_callout_dialog.xml new file mode 100644 index 00000000000..e8509e73f6b --- /dev/null +++ b/android/java/res/layout/fragment_ad_free_callout_dialog.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + +