swap vpn callout card to ad free card-india retention
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -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";
|
||||
}
|
||||
|
||||
+2
-1
@@ -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) {
|
||||
|
||||
+2
-1
@@ -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) {
|
||||
|
||||
+2
-1
@@ -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>
|
||||
|
||||
@@ -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 & 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 & 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 & 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>
|
||||
|
||||
Reference in New Issue
Block a user