587 lines
33 KiB
Diff
587 lines
33 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 | 10 +++---
|
|
.../browser/tasks/ReturnToChromeUtil.java | 19 ++++++++---
|
|
chrome/app/settings_strings.grdp | 2 +-
|
|
.../HomeTipsModulesProvider.java | 4 +--
|
|
.../flags/android/chrome_feature_list.cc | 1 +
|
|
.../cromite/sShowNtpAtStartupAndroid.java | 33 +++++++++++++++++++
|
|
.../magic_stack/HomeModulesMediator.java | 8 +++++
|
|
.../browser/magic_stack/ModuleRegistry.java | 3 +-
|
|
.../policies/background_tab_loading_policy.cc | 2 ++
|
|
.../preferences/ChromePreferenceKeys.java | 2 ++
|
|
.../LegacyChromePreferenceKeys.java | 1 +
|
|
.../on_startup_page/on_startup_page.ts | 1 +
|
|
.../client_util/HomeModulesRankingHelper.java | 2 --
|
|
chrome/browser/sessions/session_restore.cc | 9 ++++-
|
|
.../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 +++++
|
|
.../about_flags_cc/show-ntp-at-startup.inc | 12 +++++++
|
|
.../show-ntp-at-startup.inc | 5 +++
|
|
.../show-ntp-at-startup.inc | 1 +
|
|
26 files changed, 150 insertions(+), 29 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
|
|
@@ -16,8 +16,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.
|
|
@@ -73,6 +75,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
|
|
@@ -3279,6 +3279,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
|
mInactivityTrackerSupplier.set(
|
|
new ChromeInactivityTracker(
|
|
ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF));
|
|
+ mInactivityTrackerSupplier.get().setIsStartup(
|
|
+ !CipherLazyHolder.sCipherInstance.restoreFromBundle(getSavedInstanceState()));
|
|
TabUsageTracker.initialize(this.getLifecycleDispatcher(), tabModelSelector);
|
|
TabGroupUsageTracker.initialize(
|
|
this.getLifecycleDispatcher(), tabModelSelector, this::isWarmOnResume);
|
|
@@ -3310,13 +3312,13 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
|
getTabModelSelectorSupplier(),
|
|
getTabContentManagerSupplier(),
|
|
SetupListModuleUtils::isSetupListActive);
|
|
- moduleRegistry.registerModule(ModuleType.SINGLE_TAB, singleTabModuleBuilder);
|
|
+ moduleRegistry.registerModule(ModuleType.SINGLE_TAB, singleTabModuleBuilder, /*active*/ true);
|
|
|
|
if (ChromeFeatureList.sPriceChangeModule.isEnabled()) {
|
|
PriceChangeModuleBuilder priceChangeModuleBuilder =
|
|
new PriceChangeModuleBuilder(
|
|
this, getProfileProviderSupplier(), mTabModelSelector);
|
|
- moduleRegistry.registerModule(ModuleType.PRICE_CHANGE, priceChangeModuleBuilder);
|
|
+ moduleRegistry.registerModule(ModuleType.PRICE_CHANGE, priceChangeModuleBuilder, /*active*/ false);
|
|
}
|
|
|
|
SafetyHubMagicStackBuilder safetyHubMagicStackBuilder =
|
|
@@ -3325,7 +3327,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
|
mTabModelProfileSupplier,
|
|
mTabModelSelector,
|
|
getModalDialogManagerSupplier());
|
|
- moduleRegistry.registerModule(ModuleType.SAFETY_HUB, safetyHubMagicStackBuilder);
|
|
+ moduleRegistry.registerModule(ModuleType.SAFETY_HUB, safetyHubMagicStackBuilder, /*active*/ false);
|
|
|
|
// Fetch and register the appropriate collection of educational tip or setup list modules.
|
|
HomeTipsModulesProvider.registerTipModules(
|
|
@@ -3342,7 +3344,7 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt
|
|
SettingsNavigationFactory.createSettingsNavigation()
|
|
.startSettings(this, TabsSettings.class);
|
|
});
|
|
- moduleRegistry.registerModule(ModuleType.AUXILIARY_SEARCH, auxiliarySearchModuleBuilder);
|
|
+ moduleRegistry.registerModule(ModuleType.AUXILIARY_SEARCH, auxiliarySearchModuleBuilder, /*active*/ false);
|
|
|
|
mModuleRegistrySupplier.set(moduleRegistry);
|
|
}
|
|
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
|
|
@@ -22,9 +22,11 @@ import org.chromium.base.metrics.RecordHistogram;
|
|
import org.chromium.build.annotations.NullMarked;
|
|
import org.chromium.build.annotations.Nullable;
|
|
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.ntp.NewTabPage;
|
|
import org.chromium.chrome.browser.ntp_customization.NtpCustomizationUtils;
|
|
import org.chromium.chrome.browser.profiles.Profile;
|
|
@@ -128,14 +130,21 @@ public final class ReturnToChromeUtil {
|
|
Bundle bundle,
|
|
PersistableBundle persistableBundle,
|
|
ChromeInactivityTracker inactivityTracker) {
|
|
- // If the device is android desktop, don't show a NTP homepage.
|
|
- if (NtpCustomizationUtils.isNtpSimplificationEnabledOnDesktop()) {
|
|
+ // If the current session is due to recreated, don't show a NTP homepage.
|
|
+ if (isFromRecreate(bundle) || isFromUpdate(persistableBundle)) {
|
|
return false;
|
|
}
|
|
|
|
- // If the current session is due to recreated, don't show a NTP homepage.
|
|
- if (isFromRecreate(bundle) || isFromUpdate(persistableBundle)) {
|
|
+ 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
|
|
@@ -246,7 +255,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
|
|
@@ -1001,7 +1001,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/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/HomeTipsModulesProvider.java b/chrome/browser/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/HomeTipsModulesProvider.java
|
|
--- a/chrome/browser/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/HomeTipsModulesProvider.java
|
|
+++ b/chrome/browser/educational_tip/java/src/org/chromium/chrome/browser/educational_tip/HomeTipsModulesProvider.java
|
|
@@ -43,10 +43,10 @@ public class HomeTipsModulesProvider {
|
|
if (moduleType == ModuleType.SETUP_LIST_TWO_CELL_CONTAINER) {
|
|
moduleRegistry.registerModule(
|
|
moduleType,
|
|
- new EducationalTipModuleTwoCellBuilder(moduleType, actionDelegate));
|
|
+ new EducationalTipModuleTwoCellBuilder(moduleType, actionDelegate), /*active*/ false);
|
|
} else {
|
|
moduleRegistry.registerModule(
|
|
- moduleType, new EducationalTipModuleBuilder(moduleType, actionDelegate));
|
|
+ moduleType, new EducationalTipModuleBuilder(moduleType, actionDelegate), /*active*/ false);
|
|
}
|
|
}
|
|
}
|
|
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
|
|
@@ -449,6 +449,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
|
|
&kSearchInCCTAlternateTapHandlingIfEnabledByEmbedder,
|
|
&kSearchInCCTIfEnabledByEmbedder,
|
|
&kSettingsMultiColumn,
|
|
+ &kShowNtpAtStartupAndroid,
|
|
&kSettingsSingleActivity,
|
|
&kShareCustomActionsInCCT,
|
|
&kShortCircuitUnfocusAnimation,
|
|
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/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesMediator.java b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesMediator.java
|
|
--- a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesMediator.java
|
|
+++ b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesMediator.java
|
|
@@ -125,6 +125,14 @@ public class HomeModulesMediator {
|
|
// 0. Get the set of currently enabled (eligible) modules.
|
|
mEnabledModuleSet = null;
|
|
Set<Integer> enabledModuleSet = getFilteredEnabledModuleSet();
|
|
+ List<Integer> enabledModuleList = new ArrayList<>(enabledModuleSet);
|
|
+
|
|
+ buildModulesAndShow(
|
|
+ enabledModuleList,
|
|
+ moduleDelegate,
|
|
+ onHomeModulesChangedCallback,
|
|
+ /*durationMs*/ 0);
|
|
+ if ((true)) return;
|
|
|
|
// 1. Get the sorted list of manually ranked modules, filtered by eligibility.
|
|
List<Integer> manuallyRankedModules = getSortedManuallyRankedModules(enabledModuleSet);
|
|
diff --git a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/ModuleRegistry.java b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/ModuleRegistry.java
|
|
--- a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/ModuleRegistry.java
|
|
+++ b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/ModuleRegistry.java
|
|
@@ -68,7 +68,8 @@ public class ModuleRegistry {
|
|
* @param moduleType The type of the module.
|
|
* @param builder The object of the module builder.
|
|
*/
|
|
- public void registerModule(@ModuleType int moduleType, ModuleProviderBuilder builder) {
|
|
+ public void registerModule(@ModuleType int moduleType, ModuleProviderBuilder builder, boolean active) {
|
|
+ if (!active) return;
|
|
mModuleBuildersMap.put(moduleType, builder);
|
|
}
|
|
|
|
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
|
|
@@ -382,6 +382,7 @@ base::DictValue BackgroundTabLoadingPolicy::DescribeSystemNodeData(
|
|
|
|
bool BackgroundTabLoadingPolicy::ShouldLoad(
|
|
const PageNodeToLoadData& page_node_data) {
|
|
+ if ((true)) return false;
|
|
if (tab_loads_started_ < min_tabs_to_load_) {
|
|
return true;
|
|
}
|
|
@@ -583,6 +584,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
|
|
@@ -964,6 +964,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
|
|
@@ -114,6 +114,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/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
|
|
@@ -115,6 +115,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/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java
|
|
--- a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java
|
|
+++ b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java
|
|
@@ -51,7 +51,6 @@ public final class HomeModulesRankingHelper {
|
|
* @param moduleLabel the module label to notify the module ranker
|
|
*/
|
|
public static void notifyCardInteracted(Profile profile, String moduleLabel) {
|
|
- HomeModulesRankingHelperJni.get().notifyCardInteracted(profile, moduleLabel);
|
|
}
|
|
|
|
/**
|
|
@@ -61,7 +60,6 @@ public final class HomeModulesRankingHelper {
|
|
* @param moduleLabel the module label to notify the module ranker
|
|
*/
|
|
public static void notifyCardShown(Profile profile, String moduleLabel) {
|
|
- HomeModulesRankingHelperJni.get().notifyCardShown(profile, moduleLabel);
|
|
}
|
|
|
|
/**
|
|
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
|
|
@@ -933,7 +933,13 @@ class SessionRestoreImpl : public BrowserCollectionObserver {
|
|
// 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;
|
|
@@ -1253,6 +1259,7 @@ class SessionRestoreImpl : public BrowserCollectionObserver {
|
|
}
|
|
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/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
|
|
@@ -110,6 +110,7 @@ public class SingleTabSwitcherOnNtpMediator {
|
|
mSingleTabCardClickedCallback = null;
|
|
}
|
|
});
|
|
+ if (mSeeMoreLinkClickedCallback != null)
|
|
mPropertyModel.set(
|
|
SEE_MORE_LINK_CLICK_LISTENER,
|
|
() -> {
|
|
@@ -272,14 +273,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
|
|
@@ -243,7 +243,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
|
|
@@ -650,6 +650,14 @@ StartupBrowserCreatorImpl::DetermineStartupTabs(
|
|
if (prefs_tabs.empty()) {
|
|
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);
|
|
+ }
|
|
}
|
|
|
|
// Maybe add any tabs which the user has previously pinned.
|
|
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);
|
|
--
|