Show NTP at startup: (only desktop) fixes the loading at start-up of the last page selected in the previous session and adjusts the code to the new kBackgroundTabLoadingFromPerformanceManager flag

This commit is contained in:
Carmelo Messina
2025-06-28 17:24:13 +02:00
parent d14dffc01c
commit f44f153674
+98 -14
View File
@@ -16,20 +16,25 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/app/settings_strings.grdp | 2 +-
.../flags/android/chrome_feature_list.cc | 1 +
.../cromite/sShowNtpAtStartupAndroid.java | 33 +++++++++++++++++++
.../policies/background_tab_loading_policy.cc | 2 ++
.../preferences/ChromePreferenceKeys.java | 2 ++
.../LegacyChromePreferenceKeys.java | 1 +
.../on_startup_page/on_startup_page.ts | 4 +--
chrome/browser/sessions/tab_loader.cc | 6 ++--
.../session_restore_policy.h | 2 +-
.../on_startup_page/on_startup_page.ts | 1 +
chrome/browser/sessions/session_restore.cc | 9 ++++-
chrome/browser/sessions/tab_loader.cc | 7 ++--
chrome/browser/sessions/tab_loader.h | 2 +-
.../res/layout/single_tab_module_layout.xml | 12 +++----
.../SingleTabSwitcherCoordinator.java | 2 +-
.../SingleTabSwitcherOnNtpMediator.java | 5 +--
.../show-ntp-at-startup.grdp | 9 +++++
chrome/browser/ui/browser_tabrestore.cc | 2 +-
.../startup/startup_browser_creator_impl.cc | 8 +++++
components/performance_manager/features.cc | 2 +-
.../about_flags_cc/show-ntp-at-startup.inc | 12 +++++++
.../show-ntp-at-startup.inc | 5 +++
.../show-ntp-at-startup.inc | 1 +
21 files changed, 127 insertions(+), 17 deletions(-)
26 files changed, 140 insertions(+), 19 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sShowNtpAtStartupAndroid.java
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/show-ntp-at-startup.grdp
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/show-ntp-at-startup.inc
@@ -212,6 +217,25 @@ new file mode 100644
+ return sInstance;
+ }
+}
diff --git a/chrome/browser/performance_manager/policies/background_tab_loading_policy.cc b/chrome/browser/performance_manager/policies/background_tab_loading_policy.cc
--- a/chrome/browser/performance_manager/policies/background_tab_loading_policy.cc
+++ b/chrome/browser/performance_manager/policies/background_tab_loading_policy.cc
@@ -375,6 +375,7 @@ base::Value::Dict BackgroundTabLoadingPolicy::DescribeSystemNodeData(
bool BackgroundTabLoadingPolicy::ShouldLoad(
const PageNodeToLoadData& page_node_data) {
+ if ((true)) return false;
if (tab_loads_started_ < kMinTabsToLoad)
return true;
@@ -565,6 +566,7 @@ void BackgroundTabLoadingPolicy::MaybeLoadSomeTabs() {
// Continue to load tabs while possible. This is in a loop with a
// recalculation of GetMaxNewTabLoads() as reentrancy can cause conditions
// to change as each tab load is initiated.
+ if ((false))
while (GetMaxNewTabLoads() > 0)
LoadNextTab();
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
@@ -235,20 +259,22 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
ChromePreferenceKeys.TABMODEL_ACTIVE_TAB_ID,
ChromePreferenceKeys.TABMODEL_HAS_COMPUTED_MAX_ID,
ChromePreferenceKeys.TABMODEL_HAS_RUN_FILE_MIGRATION,
diff --git a/chrome/browser/resource_coordinator/session_restore_policy.h b/chrome/browser/resource_coordinator/session_restore_policy.h
--- a/chrome/browser/resource_coordinator/session_restore_policy.h
+++ b/chrome/browser/resource_coordinator/session_restore_policy.h
@@ -31,7 +31,7 @@ class SessionRestorePolicy {
public:
// Minimum site engagement score for a tab to be restored, if it doesn't
// communicate in the background.
- static constexpr uint32_t kMinSiteEngagementToRestore = 15;
+ static constexpr uint32_t kMinSiteEngagementToRestore = 999999;
// Callback that is used by the policy engine to notify its embedder (the
// TabLoaderDelegate) of changes to tab priorities as they occur. Zero or one
diff --git a/chrome/browser/resources/settings/on_startup_page/on_startup_page.ts b/chrome/browser/resources/settings/on_startup_page/on_startup_page.ts
--- a/chrome/browser/resources/settings/on_startup_page/on_startup_page.ts
+++ b/chrome/browser/resources/settings/on_startup_page/on_startup_page.ts
@@ -81,8 +81,7 @@ export class SettingsOnStartupPageElement extends
* pages" is selected.
*/
private showStartupUrls_(restoreOnStartup: PrefValues): boolean {
- return restoreOnStartup === PrefValues.OPEN_SPECIFIC ||
- restoreOnStartup === PrefValues.CONTINUE_AND_OPEN_SPECIFIC;
+ return restoreOnStartup === PrefValues.OPEN_SPECIFIC;
}
/**
@@ -93,6 +92,7 @@ export class SettingsOnStartupPageElement extends
@@ -93,6 +93,7 @@ export class SettingsOnStartupPageElement extends
*/
private showContinueAndOpenSpecific_(pref: chrome.settingsPrivate.PrefObject):
boolean {
@@ -256,6 +282,32 @@ diff --git a/chrome/browser/resources/settings/on_startup_page/on_startup_page.t
return pref.enforcement === chrome.settingsPrivate.Enforcement.ENFORCED ||
pref.enforcement === chrome.settingsPrivate.Enforcement.RECOMMENDED;
}
diff --git a/chrome/browser/sessions/session_restore.cc b/chrome/browser/sessions/session_restore.cc
--- a/chrome/browser/sessions/session_restore.cc
+++ b/chrome/browser/sessions/session_restore.cc
@@ -908,7 +908,13 @@ class SessionRestoreImpl : public BrowserListObserver {
// be selected as ShowBrowser() will load the selected tab.
bool is_selected_tab =
(initial_tab_count == 0) && (i == selected_tab_index);
-
+ if (is_selected_tab && !startup_tabs_.empty()) {
+ is_selected_tab = false;
+ if (browser != browser_) {
+ browser->set_is_session_restore(false);
+ did_show_browser = true;
+ }
+ }
// Convert the last active time because WebContents needs a TimeTicks.
const base::TimeDelta delta = tab.last_active_time - epoch_time;
const base::TimeTicks last_active_time_ticks = epoch_time_ticks + delta;
@@ -1155,6 +1161,7 @@ class SessionRestoreImpl : public BrowserListObserver {
}
if (last_normal_browser && !normal_startup_tabs.empty()) {
AppendURLsToBrowser(last_normal_browser, normal_startup_tabs);
+ last_normal_browser->window()->Show();
}
if (!startup_tabs_from_last_and_urls_pref.empty()) {
Browser::CreateParams params =
diff --git a/chrome/browser/sessions/tab_loader.cc b/chrome/browser/sessions/tab_loader.cc
--- a/chrome/browser/sessions/tab_loader.cc
+++ b/chrome/browser/sessions/tab_loader.cc
@@ -286,6 +338,14 @@ diff --git a/chrome/browser/sessions/tab_loader.cc b/chrome/browser/sessions/tab
size_t tabs_remaining_for_testing =
g_max_loaded_tab_count_for_testing - scheduled_to_load_count_;
tabs_to_load = std::min(tabs_to_load, tabs_remaining_for_testing);
@@ -782,6 +782,7 @@ void TabLoader::MoveToSortedPosition(TabVector::iterator it) {
}
size_t TabLoader::MaxSimultaneousLoads() const {
+ if ((true)) return 0;
if (max_simultaneous_loads_for_testing_ != 0)
return max_simultaneous_loads_for_testing_;
return delegate_->GetMaxSimultaneousTabLoads();
diff --git a/chrome/browser/sessions/tab_loader.h b/chrome/browser/sessions/tab_loader.h
--- a/chrome/browser/sessions/tab_loader.h
+++ b/chrome/browser/sessions/tab_loader.h
@@ -391,6 +451,18 @@ new file mode 100644
+ Enable showing a NewTabPage at startup and allows selection of the last open tab
+ </message>
+</grit-part>
diff --git a/chrome/browser/ui/browser_tabrestore.cc b/chrome/browser/ui/browser_tabrestore.cc
--- a/chrome/browser/ui/browser_tabrestore.cc
+++ b/chrome/browser/ui/browser_tabrestore.cc
@@ -234,7 +234,7 @@ WebContents* AddRestoredTabImpl(std::unique_ptr<WebContents> web_contents,
// Immediate load if the browser activeness is true or unknown. That is, do
// not do immediate load for browsers that are known to be inactive.
- bool should_load = is_active_browser.value_or(true);
+ bool should_load = false;
// On OS_MAC, `LoadRestoredTabIfVisible` by default so that its tab loading
// behaves like other platforms to make FirstWebContentsProfiler wor
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
@@ -409,6 +481,18 @@ diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/
// Potentially add a tab appropriate to display the Privacy Sandbox
// confirmaton dialog on top of. Ideally such a tab will already exist
// in |tabs|, and no additional tab will be required.
diff --git a/components/performance_manager/features.cc b/components/performance_manager/features.cc
--- a/components/performance_manager/features.cc
+++ b/components/performance_manager/features.cc
@@ -23,7 +23,7 @@ BASE_FEATURE_PARAM(size_t,
kBackgroundTabLoadingMinSiteEngagement,
&kBackgroundTabLoadingFromPerformanceManager,
"min_site_engagement",
- 0);
+ 999999);
BASE_FEATURE_PARAM(bool,
kBackgroundTabLoadingRestoreMainFrameState,
diff --git a/cromite_flags/chrome/browser/about_flags_cc/show-ntp-at-startup.inc b/cromite_flags/chrome/browser/about_flags_cc/show-ntp-at-startup.inc
new file mode 100644
--- /dev/null