diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index 2c7bdfd09a8..d8d0354caee 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -49,7 +49,7 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/ntp/sponsored/NTPUtil.java", "../../brave/android/java/org/chromium/chrome/browser/ntp/sponsored/SponsoredLogo.java", "../../brave/android/java/org/chromium/chrome/browser/ntp/sponsored/SponsoredTab.java", - "../../brave/android/java/org/chromium/chrome/browser/ntp/sponsored/NewTabListener.java", + "../../brave/android/java/org/chromium/chrome/browser/ntp/sponsored/NewTabPageListener.java", "../../brave/android/java/org/chromium/chrome/browser/ntp/sponsored/RewardsBottomSheetDialogFragment.java", "../../brave/android/java/org/chromium/chrome/browser/onboarding/BraveRewardsOnboardingFragment.java", "../../brave/android/java/org/chromium/chrome/browser/onboarding/BraveRewardsService.java", @@ -118,7 +118,8 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/util/ConfigurationUtils.java", "../../brave/android/java/org/chromium/chrome/browser/util/LocaleUtils.java", "../../brave/android/java/org/chromium/chrome/browser/util/ImageUtils.java", - "../../brave/android/java/org/chromium/chrome/browser/widget/tile/BraveTileWithTextView.java" + "../../brave/android/java/org/chromium/chrome/browser/widget/tile/BraveTileWithTextView.java", + "../../brave/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCreator.java" ] if (brave_rewards_enabled) { diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java index 9410b962769..f8cebe9d821 100644 --- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java @@ -5,7 +5,6 @@ package org.chromium.chrome.browser.ntp; -import android.os.Build; import android.content.Context; import android.util.AttributeSet; import android.view.View; @@ -13,9 +12,15 @@ import android.view.ViewGroup; import android.content.SharedPreferences; import org.chromium.chrome.R; -import org.chromium.chrome.browser.ntp.NewTabPageLayout; - import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.ntp.NewTabPageLayout; +import org.chromium.chrome.browser.suggestions.tile.SiteSection; +import org.chromium.chrome.browser.explore_sites.ExploreSitesBridge; +import org.chromium.chrome.browser.BraveRewardsHelper; +import org.chromium.chrome.browser.ChromeTabbedActivity; +import org.chromium.chrome.browser.tabmodel.TabModel; +import org.chromium.chrome.browser.ntp.sponsored.SponsoredImageUtil; +import org.chromium.chrome.browser.ntp.sponsored.NTPUtil; import org.chromium.chrome.browser.settings.BackgroundImagesPreferences; public class BraveNewTabPageLayout extends NewTabPageLayout { @@ -40,11 +45,39 @@ public class BraveNewTabPageLayout extends NewTabPageLayout { mBraveStatsView = (ViewGroup) findViewById(R.id.brave_stats); } + @Override + public void insertSiteSectionView() { + ViewGroup mainLayout = findViewById(R.id.ntp_main_layout); + mSiteSectionView = SiteSection.inflateSiteSection(mainLayout); + ViewGroup.LayoutParams layoutParams = mSiteSectionView.getLayoutParams(); + layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT; + // If the explore sites section exists as its own section, then space it more closely. + int variation = ExploreSitesBridge.getVariation(); + if (ExploreSitesBridge.isEnabled(variation) + && !ExploreSitesBridge.isIntegratedWithMostLikely(variation)) { + ((MarginLayoutParams) layoutParams).bottomMargin = + getResources().getDimensionPixelOffset( + R.dimen.tile_grid_layout_vertical_spacing); + } + mSiteSectionView.setLayoutParams(layoutParams); + + ViewGroup mBraveStatsView = (ViewGroup) findViewById(R.id.brave_stats_layout); + int insertionPoint = mainLayout.indexOfChild(mBraveStatsView) + 1; + mainLayout.addView(mSiteSectionView, insertionPoint); + } + @Override public int getMaxTileRows() { - SharedPreferences sharedPreferences = ContextUtils.getAppSharedPreferences(); - if(sharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES, true) - && (Build.VERSION.SDK_INT > Build.VERSION_CODES.M || (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP))) { + SharedPreferences mSharedPreferences = ContextUtils.getAppSharedPreferences(); + boolean isMoreTabs = false; + ChromeTabbedActivity chromeTabbedActivity = BraveRewardsHelper.getChromeTabbedActivity(); + if(chromeTabbedActivity != null) { + TabModel tabModel = chromeTabbedActivity.getCurrentTabModel(); + isMoreTabs = tabModel.getCount() >= SponsoredImageUtil.MAX_TABS ? true : false; + } + + if(mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES, true) + && NTPUtil.shouldEnableNTPFeature(isMoreTabs)) { return 1; } else { return 2; diff --git a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageView.java b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageView.java index ee47ac0290c..5986d03b19c 100644 --- a/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageView.java +++ b/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageView.java @@ -5,38 +5,19 @@ package org.chromium.chrome.browser.ntp; -import android.os.Bundle; import android.content.Context; import android.util.AttributeSet; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.content.SharedPreferences; -import android.graphics.Canvas; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.ViewGroup; import android.view.View; -import android.view.Gravity; -import android.widget.LinearLayout; -import android.widget.FrameLayout; -import android.widget.Button; import android.view.ViewTreeObserver; -import java.util.Calendar; -import android.widget.Toast; import android.content.res.Configuration; -import android.graphics.drawable.GradientDrawable; -import android.graphics.Color; -import android.app.Activity; import android.os.Build; -import android.graphics.LinearGradient; -import android.graphics.Paint; -import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; -import android.graphics.Shader; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ClickableSpan; @@ -44,56 +25,35 @@ import android.text.style.ForegroundColorSpan; import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; -import android.text.TextPaint; -import android.content.Intent; -import android.support.annotation.NonNull; import java.io.File; import java.io.ByteArrayOutputStream; import java.io.InputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import android.net.Uri; -import android.os.Handler; import org.chromium.base.TraceEvent; import org.chromium.chrome.R; import org.chromium.base.Log; import org.chromium.base.PathUtils; import org.chromium.base.ContextUtils; -import org.chromium.base.ApplicationStatus; import org.chromium.chrome.browser.ntp.NewTabPageView; import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.suggestions.tile.TileGroup; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabImpl; -import org.chromium.chrome.browser.tabmodel.TabLaunchType; -import org.chromium.chrome.browser.ui.widget.displaystyle.UiConfig; -import org.chromium.chrome.browser.ui.widget.displaystyle.ViewResizer; -import org.chromium.chrome.browser.util.ViewUtils; import org.chromium.chrome.browser.settings.BackgroundImagesPreferences; import org.chromium.chrome.browser.ntp.sponsored.NTPImage; import org.chromium.chrome.browser.ntp.sponsored.BackgroundImage; import org.chromium.chrome.browser.ntp.sponsored.SponsoredImage; -import org.chromium.chrome.browser.ntp.sponsored.NewTabListener; +import org.chromium.chrome.browser.ntp.sponsored.NewTabPageListener; import org.chromium.chrome.browser.ntp.sponsored.SponsoredImageUtil; -import org.chromium.content_public.browser.LoadUrlParams; -import org.chromium.chrome.browser.ntp.sponsored.RewardsBottomSheetDialogFragment; -import org.chromium.chrome.browser.BraveAdsNativeHelper; -import org.chromium.chrome.browser.BraveRewardsPanelPopup; -import org.chromium.chrome.browser.BraveRewardsObserver; -import org.chromium.chrome.browser.BraveRewardsNativeWorker; import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.TabObserver; -import org.chromium.chrome.browser.tabmodel.TabSelectionType; -import org.chromium.chrome.browser.download.DownloadUtils; -import org.chromium.ui.base.DeviceFormFactor; -import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.util.LocaleUtils; -import org.chromium.chrome.browser.util.ConfigurationUtils; import org.chromium.chrome.browser.util.ImageUtils; import org.chromium.chrome.browser.ntp.sponsored.NTPUtil; import org.chromium.chrome.browser.ntp.sponsored.SponsoredTab; +import org.chromium.chrome.browser.tab.TabAttributes; import static org.chromium.chrome.browser.util.ViewUtils.dpToPx; @@ -132,7 +92,7 @@ public class BraveNewTabPageView extends NewTabPageView { @Override public void onConfigurationChanged(Configuration newConfig) { - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M || (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !sponsoredTab.isMoreTabs())) { + if (NTPUtil.shouldEnableNTPFeature(sponsoredTab.isMoreTabs())) { NTPImage ntpImage = sponsoredTab.getTabNTPImage(); if(ntpImage == null) { sponsoredTab.setNTPImage(SponsoredImageUtil.getBackgroundImage()); @@ -161,7 +121,11 @@ public class BraveNewTabPageView extends NewTabPageView { constructedTimeNs); mTab = (TabImpl) tab; - sponsoredTab = mTab.getSponsoredTab(); + if (TabAttributes.from(tab).get(String.valueOf(((org.chromium.chrome.browser.tab.TabImpl)tab).getId())) == null) { + SponsoredTab mSponsoredTab = new SponsoredTab(); + TabAttributes.from(tab).set(String.valueOf(((org.chromium.chrome.browser.tab.TabImpl)tab).getId()), mSponsoredTab); + } + sponsoredTab = TabAttributes.from(tab).get(String.valueOf(((org.chromium.chrome.browser.tab.TabImpl)tab).getId())); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) { NTPImage ntpImage = sponsoredTab.getTabNTPImage(); @@ -210,7 +174,7 @@ public class BraveNewTabPageView extends NewTabPageView { mEstTimeSavedCountTextView.setText(getBraveStatsStringFromTime(estimatedMillisecondsSaved / 1000)); if(mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES, true) - && (Build.VERSION.SDK_INT > Build.VERSION_CODES.M || (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !sponsoredTab.isMoreTabs()))) { + && NTPUtil.shouldEnableNTPFeature(sponsoredTab.isMoreTabs())) { mAdsBlockedTextView.setTextColor(mNewTabPageLayout.getResources().getColor(android.R.color.white)); mHttpsUpgradesTextView.setTextColor(mNewTabPageLayout.getResources().getColor(android.R.color.white)); mEstTimeSavedTextView.setTextColor(mNewTabPageLayout.getResources().getColor(android.R.color.white)); @@ -283,7 +247,7 @@ public class BraveNewTabPageView extends NewTabPageView { NTPUtil.updateOrientedUI(mTab.getActivity(), mNewTabPageLayout); if(mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES, true) - && (Build.VERSION.SDK_INT > Build.VERSION_CODES.M || (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !sponsoredTab.isMoreTabs()))) { + && NTPUtil.shouldEnableNTPFeature(sponsoredTab.isMoreTabs())) { ViewTreeObserver observer = mNewTabPageLayout.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override @@ -445,7 +409,7 @@ public class BraveNewTabPageView extends NewTabPageView { private void checkForNonDistruptiveBanner(NTPImage ntpImage) { int brOption = NTPUtil.checkForNonDistruptiveBanner(ntpImage, sponsoredTab); if (SponsoredImageUtil.BR_INVALID_OPTION != brOption) { - NTPUtil.showNonDistruptiveBanner(mTab.getActivity(), mNewTabPageLayout, brOption, sponsoredTab, newTabListener); + NTPUtil.showNonDistruptiveBanner(mTab.getActivity(), mNewTabPageLayout, brOption, sponsoredTab, newTabPageListener); } } @@ -483,7 +447,7 @@ public class BraveNewTabPageView extends NewTabPageView { } }; - private NewTabListener newTabListener = new NewTabListener() { + private NewTabPageListener newTabPageListener = new NewTabPageListener() { @Override public void updateInteractableFlag(boolean isBottomSheet) { isFromBottomSheet = isBottomSheet; diff --git a/android/java/org/chromium/chrome/browser/ntp/sponsored/NTPUtil.java b/android/java/org/chromium/chrome/browser/ntp/sponsored/NTPUtil.java index ff3541df278..f289211004b 100644 --- a/android/java/org/chromium/chrome/browser/ntp/sponsored/NTPUtil.java +++ b/android/java/org/chromium/chrome/browser/ntp/sponsored/NTPUtil.java @@ -6,6 +6,7 @@ package org.chromium.chrome.browser.ntp.sponsored; import android.os.Bundle; +import android.os.Build; import android.content.Context; import android.content.SharedPreferences; import android.view.ViewGroup; @@ -153,7 +154,7 @@ public class NTPUtil { return SponsoredImageUtil.BR_INVALID_OPTION; } - public static void showNonDistruptiveBanner(ChromeActivity chromeActivity, View view, int ntpType, SponsoredTab sponsoredTab, NewTabListener newTabListener) { + public static void showNonDistruptiveBanner(ChromeActivity chromeActivity, View view, int ntpType, SponsoredTab sponsoredTab, NewTabPageListener newTabPageListener) { ViewGroup nonDistruptiveBannerLayout = (ViewGroup) view.findViewById(R.id.non_distruptive_banner); nonDistruptiveBannerLayout.setVisibility(View.GONE); @@ -197,7 +198,7 @@ public class NTPUtil { Bundle bundle = new Bundle(); bundle.putInt(SponsoredImageUtil.NTP_TYPE, ntpType); rewardsBottomSheetDialogFragment.setArguments(bundle); - rewardsBottomSheetDialogFragment.setNewTabListener(newTabListener); + rewardsBottomSheetDialogFragment.setNewTabPageListener(newTabPageListener); rewardsBottomSheetDialogFragment.show(chromeActivity.getSupportFragmentManager(), "rewards_bottom_sheet_dialog_fragment"); rewardsBottomSheetDialogFragment.setCancelable(false); @@ -237,28 +238,27 @@ public class NTPUtil { }, 1500); } - public static NTPImage getNTPImage() { - SharedPreferences mSharedPreferences = ContextUtils.getAppSharedPreferences(); + public static boolean shouldEnableNTPFeature(boolean isMoreTabs) { + if(Build.VERSION.SDK_INT > Build.VERSION_CODES.M + || (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !isMoreTabs)) { + return true; + } + return false; + } - if (mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_SPONSORED_IMAGES, true) - && SponsoredImageUtil.getSponsoredImages().size() > 0 + public static NTPImage getNTPImage() { + SharedPreferences mSharedPreferences = ContextUtils.getAppSharedPreferences(); + if (shouldShowSponsoredImage() && mSharedPreferences.getInt(BackgroundImagesPreferences.PREF_APP_OPEN_COUNT, 0) == 1 - && SponsoredImageUtil.getTabIndex() == 2 - && BraveAdsNativeHelper.nativeIsLocaleValid(Profile.getLastUsedProfile()) - && !BravePrefServiceBridge.getInstance().getSafetynetCheckFailed() - && ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_REWARDS)) { + && SponsoredImageUtil.getTabIndex() == 2) { SponsoredImage sponsoredImage = SponsoredImageUtil.getSponsoredImage(); SponsoredImageUtil.incrementTabIndex(3); return sponsoredImage; } - if (mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_SPONSORED_IMAGES, true) - && SponsoredImageUtil.getSponsoredImages().size() > 0 + if (shouldShowSponsoredImage() && SponsoredImageUtil.getTabIndex() != 1 - && SponsoredImageUtil.getTabIndex() % 4 == 0 - && BraveAdsNativeHelper.nativeIsLocaleValid(Profile.getLastUsedProfile()) - && !BravePrefServiceBridge.getInstance().getSafetynetCheckFailed() - && ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_REWARDS)) { + && SponsoredImageUtil.getTabIndex() % 4 == 0) { SponsoredImageUtil.incrementTabIndex(1); return SponsoredImageUtil.getSponsoredImage(); } else { @@ -266,4 +266,23 @@ public class NTPUtil { return SponsoredImageUtil.getBackgroundImage(); } } + + private static boolean shouldShowSponsoredImage() { + SharedPreferences mSharedPreferences = ContextUtils.getAppSharedPreferences(); + if(mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_SPONSORED_IMAGES, true) + && SponsoredImageUtil.getSponsoredImages().size() > 0 + && shouldShowImageForRewards()) { + return true; + } + return false; + } + + private static boolean shouldShowImageForRewards() { + if(BraveAdsNativeHelper.nativeIsLocaleValid(Profile.getLastUsedProfile()) + && !BravePrefServiceBridge.getInstance().getSafetynetCheckFailed() + && ChromeFeatureList.isEnabled(BraveFeatureList.BRAVE_REWARDS)) { + return true; + } + return false; + } } \ No newline at end of file diff --git a/android/java/org/chromium/chrome/browser/ntp/sponsored/NewTabListener.java b/android/java/org/chromium/chrome/browser/ntp/sponsored/NewTabPageListener.java similarity index 91% rename from android/java/org/chromium/chrome/browser/ntp/sponsored/NewTabListener.java rename to android/java/org/chromium/chrome/browser/ntp/sponsored/NewTabPageListener.java index 503fefc1cda..cdfe115801f 100644 --- a/android/java/org/chromium/chrome/browser/ntp/sponsored/NewTabListener.java +++ b/android/java/org/chromium/chrome/browser/ntp/sponsored/NewTabPageListener.java @@ -5,7 +5,7 @@ package org.chromium.chrome.browser.ntp.sponsored; -public interface NewTabListener { +public interface NewTabPageListener { void updateInteractableFlag(boolean isFromBottomSheet); void updateNTPImage(); } \ No newline at end of file diff --git a/android/java/org/chromium/chrome/browser/ntp/sponsored/RewardsBottomSheetDialogFragment.java b/android/java/org/chromium/chrome/browser/ntp/sponsored/RewardsBottomSheetDialogFragment.java index e1d85c4512a..ff8dc2900d6 100644 --- a/android/java/org/chromium/chrome/browser/ntp/sponsored/RewardsBottomSheetDialogFragment.java +++ b/android/java/org/chromium/chrome/browser/ntp/sponsored/RewardsBottomSheetDialogFragment.java @@ -46,6 +46,7 @@ import org.chromium.chrome.browser.settings.BackgroundImagesPreferences; import org.chromium.chrome.browser.customtabs.CustomTabActivity; import org.chromium.chrome.browser.BraveRewardsHelper; import org.chromium.chrome.browser.tabmodel.TabModel; +import org.chromium.chrome.browser.tab.TabAttributes; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.chrome.R; @@ -56,7 +57,7 @@ public class RewardsBottomSheetDialogFragment extends BottomSheetDialogFragment{ private static final String BRAVE_REWARDS_LEARN_MORE = "https://brave.com/faq-rewards"; private int ntpType; - private NewTabListener newTabListener; + private NewTabPageListener newTabPageListener; public static RewardsBottomSheetDialogFragment newInstance() { return new RewardsBottomSheetDialogFragment(); @@ -75,7 +76,7 @@ public class RewardsBottomSheetDialogFragment extends BottomSheetDialogFragment{ @Override public void onPause() { - newTabListener.updateInteractableFlag(true); + newTabPageListener.updateInteractableFlag(true); super.onPause(); } @@ -95,7 +96,7 @@ public class RewardsBottomSheetDialogFragment extends BottomSheetDialogFragment{ public void onResume() { super.onResume(); - newTabListener.updateInteractableFlag(false); + newTabPageListener.updateInteractableFlag(false); boolean isTablet = DeviceFormFactor.isNonMultiDisplayContextOnTablet(getActivity()); if(isTablet || (!isTablet && ConfigurationUtils.isLandscape(getActivity()))) { @@ -105,8 +106,8 @@ public class RewardsBottomSheetDialogFragment extends BottomSheetDialogFragment{ } } - public void setNewTabListener(NewTabListener newTabListener) { - this.newTabListener = newTabListener; + public void setNewTabPageListener(NewTabPageListener newTabPageListener) { + this.newTabPageListener = newTabPageListener; } @Override @@ -304,9 +305,11 @@ public class RewardsBottomSheetDialogFragment extends BottomSheetDialogFragment{ private void reloadTab() { ChromeTabbedActivity chromeTabbedActivity = BraveRewardsHelper.getChromeTabbedActivity(); if(chromeTabbedActivity != null) { - TabImpl currentTab = (TabImpl) chromeTabbedActivity.getActivityTab(); - currentTab.getSponsoredTab().setNTPImage(SponsoredImageUtil.getBackgroundImage()); - newTabListener.updateNTPImage(); + Tab currentTab = chromeTabbedActivity.getActivityTab(); + SponsoredTab sponsoredTab = TabAttributes.from(currentTab).get(String.valueOf(((TabImpl)currentTab).getId())); + sponsoredTab.setNTPImage(SponsoredImageUtil.getBackgroundImage()); + TabAttributes.from(currentTab).set(String.valueOf(((TabImpl)currentTab).getId()), sponsoredTab); + newTabPageListener.updateNTPImage(); } } diff --git a/android/java/org/chromium/chrome/browser/ntp/sponsored/SponsoredTab.java b/android/java/org/chromium/chrome/browser/ntp/sponsored/SponsoredTab.java index 567b3f37b77..44eefb0ef6b 100644 --- a/android/java/org/chromium/chrome/browser/ntp/sponsored/SponsoredTab.java +++ b/android/java/org/chromium/chrome/browser/ntp/sponsored/SponsoredTab.java @@ -5,12 +5,10 @@ package org.chromium.chrome.browser.ntp.sponsored; -import android.os.Build; import org.chromium.base.ContextUtils; import org.chromium.chrome.browser.settings.BackgroundImagesPreferences; import org.chromium.chrome.browser.ntp.sponsored.NTPImage; import org.chromium.chrome.browser.ntp.sponsored.NTPUtil; -import org.chromium.chrome.browser.ntp.sponsored.NewTabListener; import org.chromium.chrome.browser.ntp.sponsored.SponsoredImageUtil; import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.browser.ChromeTabbedActivity; @@ -21,7 +19,6 @@ public class SponsoredTab{ private int tabIndex; private boolean mShouldShowBanner; private boolean isMoreTabs; - private NewTabListener newTabListener; public SponsoredTab() { ChromeTabbedActivity chromeTabbedActivity = BraveRewardsHelper.getChromeTabbedActivity(); @@ -30,7 +27,7 @@ public class SponsoredTab{ isMoreTabs = tabModel.getCount() > SponsoredImageUtil.MAX_TABS ? true : false; } - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M || (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !isMoreTabs)){ + if (NTPUtil.shouldEnableNTPFeature(isMoreTabs)){ ntpImage = NTPUtil.getNTPImage(); tabIndex = SponsoredImageUtil.getTabIndex(); updateBannerPref(); @@ -49,10 +46,6 @@ public class SponsoredTab{ this.ntpImage = ntpImage; } - public void setNewTabListener(NewTabListener newTabListener) { - this.newTabListener = newTabListener; - } - public int getTabIndex() { return tabIndex; } @@ -72,8 +65,4 @@ public class SponsoredTab{ public boolean isMoreTabs() { return isMoreTabs; } - - public void setMoreTabs(boolean isMoreTabs) { - this.isMoreTabs = isMoreTabs; - } } \ No newline at end of file diff --git a/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCreator.java b/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCreator.java new file mode 100644 index 00000000000..8b7fd2a84a4 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/tabmodel/BraveTabCreator.java @@ -0,0 +1,57 @@ +/* Copyright (c) 2020 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.tabmodel; + +import android.os.Build; +import android.content.SharedPreferences; + +import org.chromium.base.ContextUtils; +import org.chromium.base.Supplier; +import org.chromium.chrome.browser.ChromeActivity; +import org.chromium.ui.base.WindowAndroid; +import org.chromium.chrome.browser.tab.Tab; +import org.chromium.chrome.browser.tab.TabDelegateFactory; +import org.chromium.chrome.browser.ChromeTabbedActivity; +import org.chromium.chrome.browser.init.StartupTabPreloader; +import org.chromium.chrome.browser.ntp.NewTabPage; +import org.chromium.chrome.browser.util.UrlConstants; +import org.chromium.chrome.browser.BraveRewardsHelper; +import org.chromium.chrome.browser.ntp.sponsored.SponsoredImageUtil; +import org.chromium.chrome.browser.settings.BackgroundImagesPreferences; + + +public class BraveTabCreator extends ChromeTabCreator { + + public BraveTabCreator(ChromeActivity activity, WindowAndroid nativeWindow, + StartupTabPreloader startupTabPreloader, + Supplier tabDelegateFactory, boolean incognito) { + super(activity, nativeWindow, startupTabPreloader, tabDelegateFactory, incognito); + } + + @Override + public Tab launchUrl(String url, @TabLaunchType int type) { + SharedPreferences mSharedPreferences = ContextUtils.getAppSharedPreferences(); + + ChromeTabbedActivity chromeTabbedActivity = BraveRewardsHelper.getChromeTabbedActivity(); + if(chromeTabbedActivity != null && Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { + TabModel tabModel = chromeTabbedActivity.getCurrentTabModel(); + if (tabModel.getCount() >= SponsoredImageUtil.MAX_TABS && mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES, true)) { + if(chromeTabbedActivity.getActivityTab() != null && NewTabPage.isNTPUrl(chromeTabbedActivity.getActivityTab().getUrl())) { + chromeTabbedActivity.hideOverview(); + } else { + chromeTabbedActivity.openNewOrSelectExistingTab(UrlConstants.NTP_URL); + chromeTabbedActivity.hideOverview(); + } + } else { + return launchUrl(url, type, null, 0); + } + } else { + return launchUrl(url, type, null, 0); + } + + return null; + } +} \ No newline at end of file diff --git a/android/java/org/chromium/chrome/browser/widget/tile/BraveTileWithTextView.java b/android/java/org/chromium/chrome/browser/widget/tile/BraveTileWithTextView.java index be1ee704010..8270772c84b 100644 --- a/android/java/org/chromium/chrome/browser/widget/tile/BraveTileWithTextView.java +++ b/android/java/org/chromium/chrome/browser/widget/tile/BraveTileWithTextView.java @@ -5,7 +5,6 @@ package org.chromium.chrome.browser.widget.tile; -import android.os.Build; import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; @@ -14,6 +13,7 @@ import android.content.SharedPreferences; import org.chromium.chrome.R; import org.chromium.base.ContextUtils; import org.chromium.chrome.browser.ntp.sponsored.SponsoredImageUtil; +import org.chromium.chrome.browser.ntp.sponsored.NTPUtil; import org.chromium.chrome.browser.BraveRewardsHelper; import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.tabmodel.TabModel; @@ -40,7 +40,7 @@ public class BraveTileWithTextView extends TileWithTextView { } if(mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES, true) - && (Build.VERSION.SDK_INT > Build.VERSION_CODES.M || (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !isMoreTabs))) { + && NTPUtil.shouldEnableNTPFeature(isMoreTabs)) { mTitleView.setTextColor(getResources().getColor(android.R.color.white)); } } diff --git a/android/java/res/layout/brave_new_tab_page_layout.xml b/android/java/res/layout/new_tab_page_layout.xml similarity index 100% rename from android/java/res/layout/brave_new_tab_page_layout.xml rename to android/java/res/layout/new_tab_page_layout.xml diff --git a/patches/chrome-android-java-res-layout-new_tab_page_layout.xml.patch b/patches/chrome-android-java-res-layout-new_tab_page_layout.xml.patch new file mode 100644 index 00000000000..c3c3c850cff --- /dev/null +++ b/patches/chrome-android-java-res-layout-new_tab_page_layout.xml.patch @@ -0,0 +1,185 @@ +diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml +index 522b6b1bfb35b83e758995459e00847bfad1ada8..c027e6d869bf7246f30d2eb090cd181d4ae0ad7f 100644 +--- a/chrome/android/java/res/layout/new_tab_page_layout.xml ++++ b/chrome/android/java/res/layout/new_tab_page_layout.xml +@@ -2,73 +2,122 @@ + +- + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ android:layout_height="match_parent" ++ android:layout_gravity="center_horizontal" ++ android:orientation="vertical"> ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch index 5e1cfaba5f5..87a3a1b8d11 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-ChromeTabbedActivity.java.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -index be8466ad87791880f1f3c4ea61db11c466eb3356..ca47ea5f050a7e41d48e9d32851ae28d83910941 100644 +index be8466ad87791880f1f3c4ea61db11c466eb3356..b59176c958e2f26cc2d33fe89e48ed9322c05c14 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java @@ -172,7 +172,7 @@ import java.util.Locale; @@ -11,6 +11,41 @@ index be8466ad87791880f1f3c4ea61db11c466eb3356..ca47ea5f050a7e41d48e9d32851ae28d /** * The results of a system back press action. */ +@@ -965,13 +965,13 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo + } + + @Override +- public ChromeTabCreator getTabCreator(boolean incognito) { +- return (ChromeTabCreator) super.getTabCreator(incognito); ++ public org.chromium.chrome.browser.tabmodel.BraveTabCreator getTabCreator(boolean incognito) { ++ return (org.chromium.chrome.browser.tabmodel.BraveTabCreator) super.getTabCreator(incognito); + } + + @Override +- public ChromeTabCreator getCurrentTabCreator() { +- return (ChromeTabCreator) super.getCurrentTabCreator(); ++ public org.chromium.chrome.browser.tabmodel.BraveTabCreator getCurrentTabCreator() { ++ return (org.chromium.chrome.browser.tabmodel.BraveTabCreator) super.getCurrentTabCreator(); + } + + @Override +@@ -1659,13 +1659,13 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo + } + + @Override +- protected Pair createTabCreators() { ++ protected Pair createTabCreators() { + Supplier tabDelegateFactorySupplier = () -> { + return new TabbedModeTabDelegateFactory(this); + }; +- return Pair.create(new ChromeTabCreator(this, getWindowAndroid(), getStartupTabPreloader(), ++ return Pair.create(new org.chromium.chrome.browser.tabmodel.BraveTabCreator(this, getWindowAndroid(), getStartupTabPreloader(), + tabDelegateFactorySupplier, false), +- new ChromeTabCreator(this, getWindowAndroid(), getStartupTabPreloader(), ++ new org.chromium.chrome.browser.tabmodel.BraveTabCreator(this, getWindowAndroid(), getStartupTabPreloader(), + tabDelegateFactorySupplier, true)); + } + @@ -2091,7 +2091,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements ScreenshotMo } } diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-customtabs-CustomTabActivity.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-customtabs-CustomTabActivity.java.patch new file mode 100644 index 00000000000..e2b2d7cecb4 --- /dev/null +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-customtabs-CustomTabActivity.java.patch @@ -0,0 +1,13 @@ +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java +index 31bfebf2e1faf4620a3f943f5212918fb91b6ec1..d679f39d3d2eda0476d4b248ef6063f32b1ab1b1 100644 +--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java +@@ -195,7 +195,7 @@ public class CustomTabActivity extends BaseCustomTabActivity createTabCreators() { ++ protected Pair createTabCreators() { + return mTabFactory.createTabCreators(); + } + diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-customtabs-content-CustomTabActivityTabFactory.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-customtabs-content-CustomTabActivityTabFactory.java.patch new file mode 100644 index 00000000000..b438fb7268f --- /dev/null +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-customtabs-content-CustomTabActivityTabFactory.java.patch @@ -0,0 +1,31 @@ +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabFactory.java +index 157946aad58b6efcba212da92effb3dc9e7b30d2..db7638335f72755418c6437894742836b73ca219 100644 +--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabFactory.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/content/CustomTabActivityTabFactory.java +@@ -32,7 +32,7 @@ import javax.inject.Inject; + import dagger.Lazy; + + /** +- * Creates {@link Tab}, {@link TabModelSelector}, and {@link ChromeTabCreator}s in the context of a ++ * Creates {@link Tab}, {@link TabModelSelector}, and {@link org.chromium.chrome.browser.tabmodel.BraveTabCreator}s in the context of a + * Custom Tab activity. + */ + @ActivityScope +@@ -78,13 +78,13 @@ public class CustomTabActivityTabFactory { + return mTabModelSelector; + } + +- /** Creates a {@link ChromeTabCreator}s for the custom tab. */ +- public Pair createTabCreators() { ++ /** Creates a {@link org.chromium.chrome.browser.tabmodel.BraveTabCreator}s for the custom tab. */ ++ public Pair createTabCreators() { + return Pair.create(createTabCreator(false), createTabCreator(true)); + } + +- private ChromeTabCreator createTabCreator(boolean incognito) { +- return new ChromeTabCreator(mActivity, mActivityWindowAndroid.get(), mStartupTabPreloader, ++ private org.chromium.chrome.browser.tabmodel.BraveTabCreator createTabCreator(boolean incognito) { ++ return new org.chromium.chrome.browser.tabmodel.BraveTabCreator(mActivity, mActivityWindowAndroid.get(), mStartupTabPreloader, + mCustomTabDelegateFactory::get, incognito) { + @Override + public TabDelegateFactory createDefaultTabDelegateFactory() { diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPageLayout.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPageLayout.java.patch index 07281d1ca3b..9a574d90a52 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPageLayout.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPageLayout.java.patch @@ -1,5 +1,5 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -index db1db4f0b941c6cea83f2ca28ddc70b8e7916a90..01939137e47c16389c1ffedbc626c75868d7bec7 100644 +index db1db4f0b941c6cea83f2ca28ddc70b8e7916a90..29b95ee943646c9556533850585b904300ad918d 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java @@ -20,6 +20,7 @@ import android.view.ViewGroup; @@ -19,31 +19,25 @@ index db1db4f0b941c6cea83f2ca28ddc70b8e7916a90..01939137e47c16389c1ffedbc626c758 private static final String TAG = "NewTabPageLayout"; // Used to signify the cached resource value is unset. private static final int UNSET_RESOURCE_FLAG = -1; -@@ -415,8 +416,9 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer +@@ -74,7 +75,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer + + private LogoView mSearchProviderLogoView; + private View mSearchBoxView; +- private ViewGroup mSiteSectionView; ++ protected ViewGroup mSiteSectionView; + private SiteSectionViewHolder mSiteSectionViewHolder; + private ImageView mVoiceSearchButton; + private View mTileGridPlaceholder; +@@ -415,7 +416,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer 1f); } - private void insertSiteSectionView() { -- mSiteSectionView = SiteSection.inflateSiteSection(this); + public void insertSiteSectionView() { -+ ViewGroup mainLayout = findViewById(R.id.ntp_main_layout); -+ mSiteSectionView = SiteSection.inflateSiteSection(mainLayout); + mSiteSectionView = SiteSection.inflateSiteSection(this); ViewGroup.LayoutParams layoutParams = mSiteSectionView.getLayoutParams(); layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT; - // If the explore sites section exists as its own section, then space it more closely. -@@ -429,8 +431,9 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer - } - mSiteSectionView.setLayoutParams(layoutParams); - -- int insertionPoint = indexOfChild(mMiddleSpacer) + 1; -- addView(mSiteSectionView, insertionPoint); -+ ViewGroup mBraveStatsView = (ViewGroup) findViewById(R.id.brave_stats_layout); -+ int insertionPoint = mainLayout.indexOfChild(mBraveStatsView) + 1; -+ mainLayout.addView(mSiteSectionView, insertionPoint); - } - - /** -@@ -786,7 +789,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer +@@ -786,7 +787,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer } } diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPageView.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPageView.java.patch index 7519a9dc45f..fe774c49dd9 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPageView.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-ntp-NewTabPageView.java.patch @@ -1,31 +1,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java -index d1ca3eb54eaa4988d2d347804152eae9d2381e00..c015ff58dd15669b3e6f26f8c95e57d5997dc3f8 100644 +index d1ca3eb54eaa4988d2d347804152eae9d2381e00..f9de6a42bc85271e4c05883e9cb675ad2403e6e1 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageView.java -@@ -99,7 +99,7 @@ public class NewTabPageView extends HistoryNavigationLayout { - - // Don't attach now, the recyclerView itself will determine when to do it. - mNewTabPageLayout = (NewTabPageLayout) LayoutInflater.from(getContext()) -- .inflate(R.layout.new_tab_page_layout, mRecyclerView, false); -+ .inflate(R.layout.brave_new_tab_page_layout, mRecyclerView, false); - } - - /** -@@ -199,11 +199,12 @@ public class NewTabPageView extends HistoryNavigationLayout { +@@ -199,6 +199,7 @@ public class NewTabPageView extends HistoryNavigationLayout { mRecyclerView.setAdapter(newTabPageAdapter); mRecyclerView.getLinearLayoutManager().scrollToPosition(scrollPosition); -- mRecyclerViewResizer = ViewResizer.createAndAttach(mRecyclerView, mUiConfig, -- mRecyclerView.getResources().getDimensionPixelSize( -- R.dimen.content_suggestions_card_modern_margin), -- mRecyclerView.getResources().getDimensionPixelSize( -- R.dimen.ntp_wide_card_lateral_margins)); + if (false) -+ mRecyclerViewResizer = ViewResizer.createAndAttach(mRecyclerView, mUiConfig, -+ mRecyclerView.getResources().getDimensionPixelSize( -+ R.dimen.content_suggestions_card_modern_margin), -+ mRecyclerView.getResources().getDimensionPixelSize( -+ R.dimen.ntp_wide_card_lateral_margins)); - - setupScrollHandling(); - + mRecyclerViewResizer = ViewResizer.createAndAttach(mRecyclerView, mUiConfig, + mRecyclerView.getResources().getDimensionPixelSize( + R.dimen.content_suggestions_card_modern_margin), diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-suggestions-tile-SuggestionsTileView.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-suggestions-tile-SuggestionsTileView.java.patch index 57cb4d82140..42e4371fcb6 100644 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-suggestions-tile-SuggestionsTileView.java.patch +++ b/patches/chrome-android-java-src-org-chromium-chrome-browser-suggestions-tile-SuggestionsTileView.java.patch @@ -1,19 +1,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/SuggestionsTileView.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/SuggestionsTileView.java -index a00bb6ece2d6af0c4fa83c9e86e47578cf7aefa7..f994f6e1892047979d7c70a64e8f1e377333b508 100644 +index a00bb6ece2d6af0c4fa83c9e86e47578cf7aefa7..b20838f10d3f216f878f406ba129d5a98fb4bead 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/SuggestionsTileView.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/SuggestionsTileView.java -@@ -12,12 +12,13 @@ import org.chromium.chrome.R; - import org.chromium.chrome.browser.ntp.TitleUtil; - import org.chromium.chrome.browser.suggestions.SiteSuggestion; - import org.chromium.chrome.browser.widget.tile.TileWithTextView; -+import org.chromium.chrome.browser.widget.tile.BraveTileWithTextView; - - /** +@@ -17,7 +17,7 @@ import org.chromium.chrome.browser.widget.tile.TileWithTextView; * The view for a site suggestion tile. Displays the title of the site beneath a large icon. If a * large icon isn't available, displays a rounded rectangle with a single letter in its place. */ -public class SuggestionsTileView extends TileWithTextView { -+public class SuggestionsTileView extends BraveTileWithTextView { ++public class SuggestionsTileView extends org.chromium.chrome.browser.widget.tile.BraveTileWithTextView { /** The data currently associated to this tile. */ private SiteSuggestion mData; diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-tab-TabImpl.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-tab-TabImpl.java.patch deleted file mode 100644 index 040d21f93f0..00000000000 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-tab-TabImpl.java.patch +++ /dev/null @@ -1,42 +0,0 @@ -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -index 5a3b49ec9effaec8a4ad6d99f48d98d3c5028e52..8049a4ceec7920c8e6d3e3f4a09e173953f3cc53 100644 ---- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -61,6 +61,7 @@ import org.chromium.content_public.browser.WebContentsAccessibility; - import org.chromium.content_public.common.ResourceRequestBody; - import org.chromium.ui.base.PageTransition; - import org.chromium.ui.base.WindowAndroid; -+import org.chromium.chrome.browser.ntp.sponsored.SponsoredTab; - - /** - * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. -@@ -224,6 +225,8 @@ public class TabImpl implements Tab { - - private final UserDataHost mUserDataHost = new UserDataHost(); - -+ private SponsoredTab sponsoredTab; -+ - /** - * Creates an instance of a {@link TabImpl}. - * -@@ -275,6 +278,9 @@ public class TabImpl implements Tab { - updateInteractableState(); - } - }; -+ -+ if(sponsoredTab == null) -+ sponsoredTab = new SponsoredTab(); - } - - @Override -@@ -1564,6 +1570,10 @@ public class TabImpl implements Tab { - } - } - -+ public SponsoredTab getSponsoredTab() { -+ return sponsoredTab; -+ } -+ - @NativeMethods - interface Natives { - void init(TabImpl caller); diff --git a/patches/chrome-android-java-src-org-chromium-chrome-browser-tabmodel-TabCreatorManager.java.patch b/patches/chrome-android-java-src-org-chromium-chrome-browser-tabmodel-TabCreatorManager.java.patch deleted file mode 100644 index d57d14187ba..00000000000 --- a/patches/chrome-android-java-src-org-chromium-chrome-browser-tabmodel-TabCreatorManager.java.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java -index de7adb86f85b72ad82b8d994c59d164394cbdfdb..3d9e50f76211b4e00c8984121933119b52def2ef 100644 ---- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java -@@ -6,12 +6,21 @@ package org.chromium.chrome.browser.tabmodel; - - import androidx.annotation.Nullable; - -+import android.os.Build; -+import android.content.SharedPreferences; -+ - import org.chromium.base.TraceEvent; -+import org.chromium.base.ContextUtils; - import org.chromium.chrome.browser.tab.Tab; - import org.chromium.chrome.browser.tab.TabState; - import org.chromium.chrome.browser.util.UrlConstants; - import org.chromium.content_public.browser.LoadUrlParams; - import org.chromium.content_public.browser.WebContents; -+import org.chromium.chrome.browser.ChromeTabbedActivity; -+import org.chromium.chrome.browser.ntp.NewTabPage; -+import org.chromium.chrome.browser.BraveRewardsHelper; -+import org.chromium.chrome.browser.ntp.sponsored.SponsoredImageUtil; -+import org.chromium.chrome.browser.settings.BackgroundImagesPreferences; - - /** - * An interface to return a {@link TabCreator} either for regular or incognito tabs. -@@ -90,7 +99,24 @@ public interface TabCreatorManager { - public final void launchNTP() { - try { - TraceEvent.begin("TabCreator.launchNTP"); -- launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI); -+ SharedPreferences mSharedPreferences = ContextUtils.getAppSharedPreferences(); -+ -+ ChromeTabbedActivity chromeTabbedActivity = BraveRewardsHelper.getChromeTabbedActivity(); -+ if(chromeTabbedActivity != null && Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) { -+ TabModel tabModel = chromeTabbedActivity.getCurrentTabModel(); -+ if (tabModel.getCount() >= SponsoredImageUtil.MAX_TABS && mSharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES, true)) { -+ if(chromeTabbedActivity.getActivityTab() != null && NewTabPage.isNTPUrl(chromeTabbedActivity.getActivityTab().getUrl())) { -+ chromeTabbedActivity.hideOverview(); -+ } else { -+ chromeTabbedActivity.openNewOrSelectExistingTab(UrlConstants.NTP_URL); -+ chromeTabbedActivity.hideOverview(); -+ } -+ } else { -+ launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI); -+ } -+ } else { -+ launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI); -+ } - } finally { - TraceEvent.end("TabCreator.launchNTP"); - }