Files
cromite/build/patches/Show-NTP-at-startup.patch
T
2025-09-10 10:04:07 +00:00

554 lines
29 KiB
Diff

From: uazo <uazo@users.noreply.github.com>
Date: Tue, 27 Feb 2024 16:20:43 +0000
Subject: Show NTP at startup
Adds an active option by default to automatically open the
NTP at each reboot and allows the user to continue the old browsing.
Until the real tab is opened, no data is retrieved.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../java/res/xml/homepage_preferences.xml | 6 ++++
.../browser/BrowserRestartActivity.java | 1 +
.../browser/ChromeInactivityTracker.java | 14 ++++++++
.../chrome/browser/ChromeTabbedActivity.java | 2 ++
.../browser/tasks/ReturnToChromeUtil.java | 16 ++++++++-
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 +
.../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 | 17 +++++-----
.../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 +
26 files changed, 142 insertions(+), 22 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
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/show-ntp-at-startup.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/show-ntp-at-startup.inc
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
+++ b/chrome/android/java/res/xml/homepage_preferences.xml
@@ -19,6 +19,12 @@ found in the LICENSE file.
android:summaryOn="@string/options_ntp_is_homepage_label"
android:summaryOff="@string/options_ntp_is_homepage_label" />
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:title="@string/show_ntp_at_startup_title"
+ android:summary="@string/show_ntp_at_startup_summary"
+ app:featureName="enable-show-ntp-at-startup"
+ app:needRestart="true" />
+
<org.chromium.chrome.browser.homepage.settings.RadioButtonGroupHomepagePreference
android:key="homepage_radio_group"
android:selectable="false"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BrowserRestartActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/BrowserRestartActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/BrowserRestartActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/BrowserRestartActivity.java
@@ -71,6 +71,7 @@ public class BrowserRestartActivity extends Activity {
Intent restartIntent = new Intent(Intent.ACTION_MAIN);
restartIntent.setPackage(context.getPackageName());
restartIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ restartIntent.putExtra(BrowserRestartActivity.EXTRA_RESTART, true);
context.startActivity(restartIntent);
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeInactivityTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeInactivityTracker.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeInactivityTracker.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeInactivityTracker.java
@@ -15,8 +15,10 @@ import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
import org.chromium.chrome.browser.lifecycle.DestroyObserver;
import org.chromium.chrome.browser.lifecycle.PauseResumeWithNativeObserver;
import org.chromium.chrome.browser.lifecycle.StartStopWithNativeObserver;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
+import org.chromium.chrome.browser.flags.cromite.sShowNtpAtStartupAndroid;
/**
* Manages pref that can track the delay since the last stop of the tracked activity.
@@ -59,6 +61,18 @@ public class ChromeInactivityTracker
mLifecycleDispatcher.register(this);
}
+ public void setIsStartup(boolean newStartup) {
+ ChromeSharedPreferences.getInstance().writeBoolean(
+ ChromePreferenceKeys.TABBED_ACTIVITY_IS_STARTUP, newStartup);
+ }
+
+ public boolean isNewStartup() {
+ return
+ sShowNtpAtStartupAndroid.getInstance().isEnabled() &&
+ ChromeSharedPreferences.getInstance().readBoolean(
+ ChromePreferenceKeys.TABBED_ACTIVITY_IS_STARTUP, false);
+ }
+
/**
* Updates the shared preferences to contain the given time. Used internally and for tests.
* @param timeInMillis the time to record.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -2936,6 +2936,8 @@ public class ChromeTabbedActivity extends ChromeActivity {
mInactivityTracker =
new ChromeInactivityTracker(
ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF);
+ mInactivityTracker.setIsStartup(
+ !CipherLazyHolder.sCipherInstance.restoreFromBundle(getSavedInstanceState()));
TabUsageTracker.initialize(this.getLifecycleDispatcher(), tabModelSelector);
TabGroupUsageTracker.initialize(
this.getLifecycleDispatcher(), tabModelSelector, this::isWarmOnResume);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java
@@ -18,9 +18,11 @@ import androidx.annotation.Nullable;
import org.chromium.base.IntentUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.BrowserRestartActivity;
import org.chromium.chrome.browser.ChromeInactivityTracker;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.flags.cromite.sShowNtpAtStartupAndroid;
import org.chromium.chrome.browser.magic_stack.HomeModulesMetricsUtils;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.tab.Tab;
@@ -124,6 +126,18 @@ public final class ReturnToChromeUtil {
return false;
}
+ if (!sShowNtpAtStartupAndroid.getInstance().isEnabled())
+ return false;
+
+ boolean isMainIntentFromLauncherOrRestart =
+ IntentUtils.isMainIntentFromLauncher(intent)
+ || IntentUtils.safeGetBooleanExtra(
+ intent, BrowserRestartActivity.EXTRA_RESTART, false);
+ if (isMainIntentFromLauncherOrRestart && inactivityTracker.isNewStartup()) {
+ inactivityTracker.setIsStartup(false);
+ return true;
+ }
+
// Checks whether to show the NTP homepage due to feature flag
// HOME_SURFACE_RETURN_TIME_SECONDS.
long lastVisibleTimeMs = inactivityTracker.getLastVisibleTimeMs();
@@ -234,7 +248,7 @@ public final class ReturnToChromeUtil {
TabModel currentTabModel,
TabCreator tabCreator,
HomeSurfaceTracker homeSurfaceTracker) {
- if (isIncognito || !shouldShowNtpHomeSurfaceOnStartup) {
+ if (isIncognito || !shouldShowNtpHomeSurfaceOnStartup || homeSurfaceTracker == null) {
return false;
}
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
--- a/chrome/app/settings_strings.grdp
+++ b/chrome/app/settings_strings.grdp
@@ -954,7 +954,7 @@
Open a specific page or set of pages
</message>
<message name="IDS_SETTINGS_ON_STARTUP_CONTINUE_AND_OPEN_SPECIFIC" desc="Radio button option to continue where you left off and open a specific set of pages.">
- Continue where you left off and open a specific set of pages
+ Continue where you left off and open a New Tab page
</message>
<message name="IDS_SETTINGS_ON_STARTUP_USE_CURRENT" desc="Button to use current pages.">
Use current pages
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -404,6 +404,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kSearchInCCTIfEnabledByEmbedder,
&kSearchInCCTAlternateTapHandlingIfEnabledByEmbedder,
&kSearchResumptionModuleAndroid,
+ &kShowNtpAtStartupAndroid,
&kSettingsSingleActivity,
&kShareCustomActionsInCCT,
&kShowCloseAllIncognitoTabsButton,
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sShowNtpAtStartupAndroid.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sShowNtpAtStartupAndroid.java
new file mode 100644
--- /dev/null
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sShowNtpAtStartupAndroid.java
@@ -0,0 +1,33 @@
+/*
+ This file is part of Cromite.
+
+ Cromite is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Cromite is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Cromite. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+package org.chromium.chrome.browser.flags.cromite;
+
+import org.chromium.components.cached_flags.CachedFlag;
+import org.chromium.chrome.browser.flags.ChromeFeatureMap;
+
+public class sShowNtpAtStartupAndroid {
+ private static final CachedFlag sInstance =
+ new CachedFlag(ChromeFeatureMap.getInstance(),
+ "ShowNtpAtStartupAndroid", false);
+
+ private sShowNtpAtStartupAndroid() {}
+
+ public static CachedFlag getInstance() {
+ 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
@@ -865,6 +865,8 @@ public final class ChromePreferenceKeys {
public static final String TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF =
"ChromeTabbedActivity.BackgroundTimeMs";
+ public static final String TABBED_ACTIVITY_IS_STARTUP =
+ "ChromeTabbedActivity.IsStartup";
public static final String TABBED_ACTIVITY_LAST_VISIBLE_TIME_MS =
"Chrome.StartSurface.LastVisibleTimeMs";
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
@@ -115,6 +115,7 @@ public class LegacyChromePreferenceKeys {
ChromePreferenceKeys.SNAPSHOT_DATABASE_REMOVED,
ChromePreferenceKeys.SYNC_ERROR_MESSAGE_SHOWN_AT_TIME,
ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF,
+ ChromePreferenceKeys.TABBED_ACTIVITY_IS_STARTUP,
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
@@ -97,6 +97,7 @@ export class SettingsOnStartupPageElement extends
*/
private showContinueAndOpenSpecific_(pref: chrome.settingsPrivate.PrefObject):
boolean {
+ if ((true)) return true;
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
@@ -917,7 +917,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;
@@ -1219,6 +1225,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
@@ -51,7 +51,7 @@ struct ScoredTabComparator {
};
// Testing seams.
-size_t g_max_loaded_tab_count_for_testing = 0;
+int g_max_loaded_tab_count_for_testing = 0;
base::RepeatingCallback<void(TabLoader*)>* g_construction_callback = nullptr;
// Determines if the given browser (can be null) is closing.
@@ -383,7 +383,7 @@ void TabLoader::OnMemoryPressure(
bool TabLoader::ShouldStopLoadingTabs() const {
DCHECK(reentry_depth_ > 0); // This can only be called internally.
- if (g_max_loaded_tab_count_for_testing != 0 &&
+ if (g_max_loaded_tab_count_for_testing != -1 &&
scheduled_to_load_count_ >= g_max_loaded_tab_count_for_testing) {
return true;
}
@@ -424,7 +424,7 @@ size_t TabLoader::GetMaxNewTabLoads() const {
tabs_to_load = std::min(tabs_to_load, tabs_to_load_.size());
// Finally, enforce testing tab load limits.
- if (g_max_loaded_tab_count_for_testing != 0) {
+ if (g_max_loaded_tab_count_for_testing != -1) {
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
@@ -278,7 +278,7 @@ class TabLoader : public base::RefCounted<TabLoader>,
// This is monotonically increasing, and can never exceed the combined number
// of tabs passed into this TabLoader via StartLoading(). This is only used in
// order to support a combined maximum total number of tab loads for testing.
- size_t scheduled_to_load_count_ = 0;
+ int scheduled_to_load_count_ = 0;
// Timer used to force progress despite tabs that take too long to load.
base::OneShotTimer force_load_timer_;
diff --git a/chrome/browser/single_tab/android/java/res/layout/single_tab_module_layout.xml b/chrome/browser/single_tab/android/java/res/layout/single_tab_module_layout.xml
--- a/chrome/browser/single_tab/android/java/res/layout/single_tab_module_layout.xml
+++ b/chrome/browser/single_tab/android/java/res/layout/single_tab_module_layout.xml
@@ -67,12 +67,12 @@ found in the LICENSE file.
<LinearLayout
android:layout_width="wrap_content"
- android:layout_height="match_parent">
+ android:layout_height="@dimen/single_tab_module_tab_thumbnail_size">
<RelativeLayout
android:id="@+id/tab_images"
android:layout_width="wrap_content"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:background="@drawable/single_tab_thumbnail_background"
tools:ignore="UselessParent">
@@ -85,8 +85,6 @@ found in the LICENSE file.
android:layout_marginStart="@dimen/single_tab_thumbnail_margin"
android:layout_marginEnd="@dimen/single_tab_thumbnail_margin"
android:layout_alignParentStart="true"
- android:layout_alignParentBottom="true"
- android:layout_alignParentTop="true"
android:adjustViewBounds="false"
android:gravity="center_horizontal"
android:importantForAccessibility="no"
@@ -117,7 +115,7 @@ found in the LICENSE file.
<LinearLayout
android:id="@+id/tab_info"
android:layout_width="0dp"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingStart="@dimen/single_tab_module_padding_bottom"
android:baselineAligned="false"
@@ -125,21 +123,22 @@ found in the LICENSE file.
<TextView
android:id="@+id/tab_title_view"
android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
+ android:layout_height="wrap_content"
android:ellipsize="end"
android:gravity="start|top"
- android:maxLines="3"
+ android:singleLine="true"
android:textAppearance="@style/TextAppearance.Headline2Thick.Secondary"
tools:ignore="NestedWeights"/>
<TextView
android:id="@+id/tab_url_view"
+ android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
+ android:minLines="6"
android:gravity="start"
- android:singleLine="true"
+ android:singleLine="false"
android:textAppearance="@style/TextAppearance.TextSmall.Secondary" />
</LinearLayout>
diff --git a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherCoordinator.java b/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherCoordinator.java
--- a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherCoordinator.java
+++ b/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherCoordinator.java
@@ -182,7 +182,7 @@ public class SingleTabSwitcherCoordinator implements ModuleProvider {
/** Returns the layout resource id for the single tab card. */
public static int getModuleLayoutId() {
- return R.layout.single_tab_module_layout;
+ return R.layout.single_tab_module_layout; // (uazo) check this
}
public void destroy() {
diff --git a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java b/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java
--- a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java
+++ b/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java
@@ -111,6 +111,7 @@ public class SingleTabSwitcherOnNtpMediator {
mSingleTabCardClickedCallback = null;
}
});
+ if (mSeeMoreLinkClickedCallback != null)
mPropertyModel.set(
SEE_MORE_LINK_CLICK_LISTENER,
() -> {
@@ -275,14 +276,14 @@ public class SingleTabSwitcherOnNtpMediator {
public void onPageLoadFinished(Tab tab, GURL url) {
super.onPageLoadFinished(tab, url);
mPropertyModel.set(TITLE, tab.getTitle());
- mPropertyModel.set(URL, getDomainUrl(tab.getUrl()));
+ mPropertyModel.set(URL, tab.getUrl().getPossiblyInvalidSpec());
tab.removeObserver(this);
}
};
mMostRecentTab.addObserver(tabObserver);
} else {
mPropertyModel.set(TITLE, mMostRecentTab.getTitle());
- mPropertyModel.set(URL, getDomainUrl(mMostRecentTab.getUrl()));
+ mPropertyModel.set(URL, mMostRecentTab.getUrl().getPossiblyInvalidSpec());
}
}
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/show-ntp-at-startup.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/show-ntp-at-startup.grdp
new file mode 100644
--- /dev/null
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/show-ntp-at-startup.grdp
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+ <message name="IDS_SHOW_NTP_AT_STARTUP_TITLE" desc="Text for 'Show NTP at startup' settings option.">
+ Show NTP at startup
+ </message>
+ <message name="IDS_SHOW_NTP_AT_STARTUP_SUMMARY" desc="Summary text for 'Show NTP at startup' settings option.">
+ 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
@@ -552,6 +552,14 @@ StartupBrowserCreatorImpl::DetermineStartupTabs(
AppendTabs(provider.GetNewTabPageTabs(*command_line_, profile_), &tabs);
}
+ SessionStartupPref session_startup_pref =
+ SessionStartupPref::GetStartupPref(profile_);
+ if (session_startup_pref.type == SessionStartupPref::LAST_AND_URLS) {
+ StartupTabs new_tabs;
+ new_tabs.emplace_back(GURL(chrome::kChromeUINewTabURL));
+ AppendTabs(new_tabs, &tabs);
+ }
+
// 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
+++ b/cromite_flags/chrome/browser/about_flags_cc/show-ntp-at-startup.inc
@@ -0,0 +1,12 @@
+#if BUILDFLAG(IS_ANDROID)
+
+#ifdef FLAG_SECTION
+
+ {"enable-show-ntp-at-startup",
+ "Show a NewTabPage at startup",
+ "Enable showing a NewTabPage at startup after leaving Cromite for a while.", kOsAndroid,
+ FEATURE_VALUE_TYPE(chrome::android::kShowNtpAtStartupAndroid)},
+
+#endif
+
+#endif
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/show-ntp-at-startup.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/show-ntp-at-startup.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/show-ntp-at-startup.inc
@@ -0,0 +1,5 @@
+SET_CROMITE_FEATURE_ENABLED(kStartSurfaceReturnTime);
+
+CROMITE_FEATURE(kShowNtpAtStartupAndroid,
+ "ShowNtpAtStartupAndroid",
+ base::FEATURE_ENABLED_BY_DEFAULT);
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/show-ntp-at-startup.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/show-ntp-at-startup.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/show-ntp-at-startup.inc
@@ -0,0 +1 @@
+BASE_DECLARE_FEATURE(kShowNtpAtStartupAndroid);
--