diff --git a/build/patches/Add-option-to-use-home-page-as-NTP.patch b/build/patches/Add-option-to-use-home-page-as-NTP.patch index 7dd10968..7d0101bf 100644 --- a/build/patches/Add-option-to-use-home-page-as-NTP.patch +++ b/build/patches/Add-option-to-use-home-page-as-NTP.patch @@ -1,18 +1,21 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Mon, 18 Mar 2019 21:47:12 +0100 +Date: Sat, 20 Nov 2021 15:36:54 +0000 Subject: Add option to use home page as NTP -Use about:blank as default homepage +And allow use about:blank as default homepage --- - .../java/res/xml/homepage_preferences.xml | 5 +++ - .../browser/homepage/HomepageManager.java | 22 +++++++++- - .../homepage/settings/HomepageSettings.java | 11 +++++ - .../chrome/browser/tabmodel/TabCreator.java | 40 ++++++++++++++++++- - .../strings/android_chrome_strings.grd | 3 ++ - chrome/browser/ui/browser_ui_prefs.cc | 2 + - chrome/common/pref_names.cc | 4 ++ - chrome/common/pref_names.h | 1 + - 8 files changed, 84 insertions(+), 4 deletions(-) + .../java/res/xml/homepage_preferences.xml | 5 +++++ + .../chrome/browser/homepage/HomepageManager.java | 16 ++++++++++++++++ + .../homepage/settings/HomepageSettings.java | 12 ++++++++++++ + .../chrome/browser/metrics/LaunchMetrics.java | 1 - + .../browser/tabmodel/ChromeTabCreator.java | 7 +++++++ + .../preferences/ChromePreferenceKeys.java | 1 + + .../preferences/LegacyChromePreferenceKeys.java | 1 + + .../android/strings/android_chrome_strings.grd | 3 +++ + chrome/browser/ui/browser_ui_prefs.cc | 2 ++ + chrome/common/pref_names.cc | 4 ++++ + chrome/common/pref_names.h | 1 + + 11 files changed, 52 insertions(+), 1 deletion(-) diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/android/java/res/xml/homepage_preferences.xml --- a/chrome/android/java/res/xml/homepage_preferences.xml @@ -21,7 +24,7 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro android:summaryOn="@string/text_on" android:summaryOff="@string/text_off" /> -+ @@ -32,35 +35,8 @@ diff --git a/chrome/android/java/res/xml/homepage_preferences.xml b/chrome/andro diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java -@@ -30,6 +30,7 @@ import org.chromium.components.embedder_support.util.UrlUtilities; - */ - public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStateListener, - PartnerBrowserCustomizations.PartnerHomepageListener { -+ public static final String PREF_NTP_IS_HOMEPAGE = "newtabpage_is_homepage"; - /** - * An interface to use for getting homepage related updates. - */ -@@ -117,7 +118,8 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat - */ - public static boolean shouldCloseAppWithZeroTabs() { - return HomepageManager.isHomepageEnabled() -- && !UrlUtilities.isNTPUrl(HomepageManager.getHomepageUri()); -+ && !UrlUtilities.isNTPUrl(HomepageManager.getHomepageUri()) -+ && (HomepageManager.getHomepageUri() != UrlConstants.CHROME_BLANK_URL); - } - - /** -@@ -146,7 +148,7 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat - * if the homepage button is force enabled via flag. - */ - public static String getDefaultHomepageUri() { -- return UrlConstants.NTP_NON_NATIVE_URL; -+ return UrlConstants.CHROME_BLANK_URL; - } - - /** -@@ -201,6 +203,14 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat - return mSharedPreferencesManager.readBoolean(ChromePreferenceKeys.HOMEPAGE_ENABLED, true); +@@ -209,6 +209,22 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat + notifyHomepageUpdated(); } + /** @@ -68,21 +44,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa + * + */ + public boolean getPrefNTPIsHomepageEnabled() { -+ return mSharedPreferencesManager.readBoolean(PREF_NTP_IS_HOMEPAGE, false); ++ return mSharedPreferencesManager.readBoolean(ChromePreferenceKeys.HOMEPAGE_NTP_IS_HOMEPAGE, false); + } + - /** - * Sets the user preference for whether the homepage is enabled. - */ -@@ -209,6 +219,14 @@ public class HomepageManager implements HomepagePolicyManager.HomepagePolicyStat - notifyHomepageUpdated(); - } - + /** + * Sets the user preference for whether the new tab page is the homepage or not. + */ + public void setPrefNTPIsHomepageEnabled(boolean enabled) { -+ mSharedPreferencesManager.writeBoolean(PREF_NTP_IS_HOMEPAGE, enabled); ++ mSharedPreferencesManager.writeBoolean(ChromePreferenceKeys.HOMEPAGE_NTP_IS_HOMEPAGE, enabled); + notifyHomepageUpdated(); + } + @@ -92,7 +61,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/homepage/settings/HomepageSettings.java -@@ -32,6 +32,8 @@ public class HomepageSettings extends PreferenceFragmentCompat { +@@ -22,6 +22,7 @@ import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; + import org.chromium.components.browser_ui.settings.SettingsUtils; + import org.chromium.components.embedder_support.util.UrlUtilities; + import org.chromium.components.url_formatter.UrlFormatter; ++import org.chromium.components.embedder_support.util.UrlConstants; + + /** + * Fragment that allows the user to configure homepage related preferences. +@@ -32,6 +33,8 @@ public class HomepageSettings extends PreferenceFragmentCompat { @VisibleForTesting public static final String PREF_HOMEPAGE_RADIO_GROUP = "homepage_radio_group"; @@ -101,7 +78,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin /** * Delegate used to mark that the homepage is being managed. * Created for {@link org.chromium.chrome.browser.settings.HomepagePreferences} -@@ -72,6 +74,15 @@ public class HomepageSettings extends PreferenceFragmentCompat { +@@ -72,6 +75,15 @@ public class HomepageSettings extends PreferenceFragmentCompat { }); mRadioButtons.setupPreferenceValues(createPreferenceValuesForRadioGroup()); @@ -117,66 +94,67 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin RecordUserAction.record("Settings.Homepage.Opened"); } -diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreator.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreator.java ---- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreator.java -+++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreator.java -@@ -89,14 +89,50 @@ public abstract class TabCreator { - } +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchMetrics.java +@@ -103,7 +103,6 @@ public class LaunchMetrics { + boolean showHomeButton, boolean homepageIsNtp, String homepageUrl) { + if (homepageUrl == null) { + homepageUrl = ""; +- assert !showHomeButton : "Homepage should be disabled for a null URL"; + } + LaunchMetricsJni.get().recordHomePageLaunchMetrics( + showHomeButton, homepageIsNtp, homepageUrl); +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +@@ -20,6 +20,7 @@ import org.chromium.chrome.browser.ServiceTabLauncher; + import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFactory; + import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; + import org.chromium.chrome.browser.compositor.CompositorViewHolder; ++import org.chromium.chrome.browser.homepage.HomepageManager; + import org.chromium.chrome.browser.init.StartupTabPreloader; + import org.chromium.chrome.browser.ntp.NewTabPageLaunchOrigin; + import org.chromium.chrome.browser.ntp.NewTabPageUtils; +@@ -327,6 +328,12 @@ public class ChromeTabCreator extends TabCreator { + * @return the created tab. + */ + public Tab launchUrl(String url, @TabLaunchType int type, Intent intent, long intentTimestamp) { ++ if (!mIncognito && url.equals(UrlConstants.NTP_URL)) { ++ if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { ++ url = HomepageManager.getInstance().getHomepageUri(); ++ } ++ } ++ + LoadUrlParams loadUrlParams = new LoadUrlParams(url); + loadUrlParams.setIntentReceivedTimestamp(intentTimestamp); + return createNewTab(loadUrlParams, type, null, intent); +diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java ++++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +@@ -550,6 +550,7 @@ public final class ChromePreferenceKeys { + public static final String HOMEPAGE_ENABLED = "homepage"; + public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP"; + public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled"; ++ public static final String HOMEPAGE_NTP_IS_HOMEPAGE = "newtabpage_is_homepage"; /** -- * Creates a new tab and loads the NTP. -+ * Creates a new tab and loads the NTP or the homepage, depending on user preferences. - */ - public final void launchNTP() { - try { -+ String newTabURL = UrlConstants.NTP_URL; -+ if (getPrefNTPIsHomepageEnabled()) { -+ newTabURL = getHomepageUri(); -+ } - TraceEvent.begin("TabCreator.launchNTP"); -- launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI); -+ launchUrl(newTabURL, TabLaunchType.FROM_CHROME_UI); - } finally { - TraceEvent.end("TabCreator.launchNTP"); - } - } -+ -+ /* following functions are copied from HomepageManager to avoid a circular dependency */ -+ -+ private boolean getPrefNTPIsHomepageEnabled() { -+ return mSharedPreferencesManager.readBoolean(PREF_NTP_IS_HOMEPAGE, false); -+ } -+ -+ private String getHomepageUri() { -+ boolean isHomePageEnabled = mSharedPreferencesManager.readBoolean(ChromePreferenceKeys.HOMEPAGE_ENABLED, true); -+ if (!isHomePageEnabled) { -+ return ""; -+ } -+ if (getPrefHomepageUseChromeNTP() || getPrefHomepageUseDefaultUri()) { -+ //NOTE: ignores partner customizations -+ return UrlConstants.NTP_NON_NATIVE_URL; -+ } -+ return getPrefHomepageCustomUri(); -+ } -+ -+ private boolean getPrefHomepageUseChromeNTP() { -+ return mSharedPreferencesManager.readBoolean( -+ ChromePreferenceKeys.HOMEPAGE_USE_CHROME_NTP, false); -+ } -+ -+ private boolean getPrefHomepageUseDefaultUri() { -+ return mSharedPreferencesManager.readBoolean( -+ ChromePreferenceKeys.HOMEPAGE_USE_DEFAULT_URI, true); -+ } -+ -+ private String getPrefHomepageCustomUri() { -+ return mSharedPreferencesManager.readString(ChromePreferenceKeys.HOMEPAGE_CUSTOM_URI, ""); -+ } - } + * Key used to save homepage location set by enterprise policy +diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java +--- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java ++++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/LegacyChromePreferenceKeys.java +@@ -105,6 +105,7 @@ public class LegacyChromePreferenceKeys { + ChromePreferenceKeys.HOMEPAGE_CUSTOM_URI, + ChromePreferenceKeys.HOMEPAGE_ENABLED, + ChromePreferenceKeys.HOMEPAGE_USE_DEFAULT_URI, ++ ChromePreferenceKeys.HOMEPAGE_NTP_IS_HOMEPAGE, + ChromePreferenceKeys.INCOGNITO_SHORTCUT_ADDED, + ChromePreferenceKeys.LATEST_UNSUPPORTED_VERSION, + ChromePreferenceKeys.LOCALE_MANAGER_AUTO_SWITCH, diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1047,6 +1047,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1050,6 +1050,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour