From 80bacb8d58c9c7bc1850944420a3a0820157d477 Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Fri, 19 Jul 2024 09:46:06 +0200 Subject: [PATCH] v127 need review (#1293) --- build/cromite_patches_list.txt | 1 + build/patches/Add-cromite-flags-support.patch | 144 +++--- .../Add-option-to-force-tablet-UI.patch | 89 +--- .../Bookmarks-select-all-menu-entry.patch | 33 +- build/patches/DoH-improvements.patch | 73 +-- .../Enable-native-Android-autofill.patch | 287 +++--------- ...le-search-engine-settings-desktop-ui.patch | 77 ++- build/patches/Internal-firewall.patch | 38 +- .../Keep-ComputePressure-disabled.patch | 13 +- .../Move-navigation-bar-to-bottom.patch | 443 +++++++++--------- .../patches/Partition-HSTS-cache-by-NAK.patch | 150 +++--- ...ning-all-cookies-by-top-frame-domain.patch | 76 +-- ...ore-BookmarkToolbar-setCurrentFolder.patch | 79 ++++ .../Restore-Simplified-NTP-launch.patch | 80 +--- build/patches/Show-NTP-at-startup.patch | 83 ++-- .../Use-4-tile-rows-never-show-logo.patch | 25 +- build/patches/User-agent-customization.patch | 110 ++--- 17 files changed, 835 insertions(+), 966 deletions(-) create mode 100644 build/patches/Restore-BookmarkToolbar-setCurrentFolder.patch diff --git a/build/cromite_patches_list.txt b/build/cromite_patches_list.txt index cfda283c..41181e43 100644 --- a/build/cromite_patches_list.txt +++ b/build/cromite_patches_list.txt @@ -49,6 +49,7 @@ Multiple-fingerprinting-mitigations.patch Add-flag-to-configure-maximum-connections-per-host.patch Do-not-ignore-download-location-prompt-setting.patch Add-support-for-writing-URIs.patch +Restore-BookmarkToolbar-setCurrentFolder.patch Add-bookmark-import-export-actions.patch Bookmarks-select-all-menu-entry.patch Add-an-always-incognito-mode.patch diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index 6a686efc..c3f7bb7a 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -122,7 +122,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -220,6 +220,8 @@ buildflag_header("message_pump_buildflags") { +@@ -202,6 +202,8 @@ buildflag_header("message_pump_buildflags") { # This does not include test code (test support and anything in the test # directory) which should use source_set as is recommended for GN targets). component("base") { @@ -131,7 +131,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1071,7 +1073,7 @@ component("base") { +@@ -1054,7 +1056,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -143,7 +143,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc --- a/base/android/feature_map.cc +++ b/base/android/feature_map.cc -@@ -43,6 +43,11 @@ const Feature* FeatureMap::FindFeatureExposedToJava( +@@ -45,6 +45,11 @@ const Feature* FeatureMap::FindFeatureExposedToJava( static jboolean JNI_FeatureMap_IsEnabled(JNIEnv* env, jlong jfeature_map, std::string& feature_name) { @@ -167,8 +167,8 @@ diff --git a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.jav // Create the key only once to avoid String concatenation every flag check. if (mPreferenceKey == null) { mPreferenceKey = CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName); -@@ -174,6 +174,12 @@ public class CachedFlag extends Flag { - .removeKeysWithPrefix(CachedFlagsSharedPreferences.FLAGS_CACHED); +@@ -169,6 +169,12 @@ public class CachedFlag extends Flag { + } } + public void setValueReturnedOverride(@Nullable Boolean value) { @@ -430,7 +430,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml -@@ -70,6 +70,10 @@ found in the LICENSE file. +@@ -75,6 +75,10 @@ found in the LICENSE file. android:title="@string/tabgrid_use_icons_title" android:summary="@string/tabgrid_use_icons_summary" android:defaultValue="false" /> @@ -485,7 +485,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -128,7 +128,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -127,7 +127,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private static final String PREF_HISTORY_EXPIRE_DAYS_THRESHOLD = "history_expire_days_threshold"; @Override @@ -505,7 +505,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -@@ -84,6 +85,7 @@ import org.chromium.chrome.browser.ui.device_lock.MissingDeviceLockLauncher; +@@ -85,6 +86,7 @@ import org.chromium.chrome.browser.ui.device_lock.MissingDeviceLockLauncher; import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; @@ -513,7 +513,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory; import org.chromium.components.browser_ui.bottomsheet.ManagedBottomSheetController; -@@ -124,6 +126,36 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -126,6 +128,36 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, SnackbarManageable, DisplayStyleObserver { @@ -550,7 +550,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) public static final String EXTRA_SHOW_FRAGMENT = "show_fragment"; -@@ -377,6 +409,10 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -379,6 +411,10 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity ((AccessibilitySettings) fragment) .getDelegate()).setSnackbarManager(mSnackbarManager); } @@ -558,13 +558,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin + ((ChromeBaseSettingsFragment)fragment).setRequestRestartDelegate( + new RequestRestartDelegate(mSnackbarManager, this)); + } - if (fragment instanceof ClearBrowsingDataFragment) { - ((ClearBrowsingDataFragment) fragment).setSnackbarManager(mSnackbarManager); + if (fragment instanceof AccountManagementFragment) { + ((AccountManagementFragment) fragment).setSnackbarManager(mSnackbarManager); } diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -372,6 +372,10 @@ using flags_ui::kOsLinux; +@@ -376,6 +376,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -575,9 +575,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -3815,6 +3819,10 @@ const FeatureEntry::FeatureVariation kComposeProactiveNudgeVariations[] = { - std::size(kComposeProactiveNudge_LargeUI_100), nullptr}}; - #endif // ENABLE_COMPOSE +@@ -4076,6 +4080,10 @@ const FeatureEntry::FeatureVariation kAutofillUpstreamUpdatedUiOptions[] = { + kAutofillUpstreamUpdatedUi_Education_Animated, + std::size(kAutofillUpstreamUpdatedUi_Education_Animated), nullptr}}; +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -586,7 +586,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc // RECORDING USER METRICS FOR FLAGS: // ----------------------------------------------------------------------------- // The first line of the entry is the internal name. -@@ -3841,6 +3849,9 @@ const FeatureEntry::FeatureVariation kComposeProactiveNudgeVariations[] = { +@@ -4102,6 +4110,9 @@ const FeatureEntry::FeatureVariation kAutofillUpstreamUpdatedUiOptions[] = { const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -599,9 +599,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_features.cc --- a/chrome/browser/browser_features.cc +++ b/chrome/browser/browser_features.cc -@@ -415,4 +415,5 @@ BASE_FEATURE(kWebUsbDeviceDetection, - "WebUsbDeviceDetection", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -401,4 +401,5 @@ BASE_FEATURE(kBrowserDynamicCodeDisabled, + base::FEATURE_DISABLED_BY_DEFAULT); + #endif // BUILDFLAG(IS_WIN) +#include "cromite_flags/chrome_browser_browser_features_cc.inc" } // namespace features @@ -647,7 +647,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn 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 -@@ -1002,5 +1002,6 @@ BASE_FEATURE(kWebApkAllowIconUpdate, +@@ -1036,5 +1036,6 @@ BASE_FEATURE(kWebApkAllowIconUpdate, "WebApkAllowIconUpdate", base::FEATURE_DISABLED_BY_DEFAULT); @@ -657,7 +657,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h -@@ -189,6 +189,7 @@ constexpr base::FeatureParam kAuxiliarySearchMaxTabsCountParam( +@@ -193,6 +193,7 @@ constexpr base::FeatureParam kAuxiliarySearchMaxTabsCountParam( "auxiliary_search_max_donation_tab", 100); @@ -679,7 +679,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -700,7 +704,7 @@ public abstract class ChromeFeatureList { +@@ -719,7 +723,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sVerticalAutomotiveBackButtonToolbar = newCachedFlag(VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR, true); @@ -688,7 +688,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f List.of( sAccountReauthenticationRecentTimeWindow, sAllowUserCertificates, -@@ -793,6 +797,13 @@ public abstract class ChromeFeatureList { +@@ -816,6 +820,13 @@ public abstract class ChromeFeatureList { sUseLibunwindstackNativeUnwinderAndroid, sVerticalAutomotiveBackButtonToolbar); @@ -855,7 +855,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc -@@ -537,4 +537,5 @@ BASE_FEATURE(kStopLoadingAnimationForHiddenWindow, +@@ -517,4 +517,5 @@ BASE_FEATURE(kStopLoadingAnimationForHiddenWindow, "StopLoadingAnimationForHiddenWindow", base::FEATURE_ENABLED_BY_DEFAULT); @@ -864,7 +864,7 @@ diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc -@@ -1655,4 +1655,5 @@ BASE_FEATURE(kEventBasedLogUpload, +@@ -1674,4 +1674,5 @@ BASE_FEATURE(kEventBasedLogUpload, base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -907,9 +907,9 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium +import androidx.annotation.Nullable; +import android.content.res.TypedArray; + - import androidx.annotation.ColorRes; + import androidx.annotation.ColorInt; + import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; - import androidx.appcompat.content.res.AppCompatResources; @@ -31,6 +34,11 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat { /** Indicates if the preference uses a custom layout. */ private final boolean mHasCustomLayout; @@ -949,13 +949,13 @@ diff --git a/components/components_strings.grd b/components/components_strings.g + - - - + + + diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc --- a/components/content_settings/core/common/features.cc +++ b/components/content_settings/core/common/features.cc -@@ -118,5 +118,6 @@ BASE_FEATURE(kIndexedHostContentSettingsMap, +@@ -113,5 +113,6 @@ BASE_FEATURE(kIndexedHostContentSettingsMap, "IndexedHostContentSettingsMap", base::FEATURE_ENABLED_BY_DEFAULT); @@ -995,9 +995,9 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat const SwitchEntry& entry = entry_it->second; if (!entry.switch_name.empty()) -@@ -668,6 +683,27 @@ void FlagsState::GetFlagFeatureEntries( - bool is_default_value = IsDefaultValue(entry, enabled_entries); - data.Set("is_default", is_default_value); +@@ -676,6 +691,27 @@ void FlagsState::GetFlagFeatureEntries( + data.Set("links", std::move(links)); + } + if (entry.type == FeatureEntry::FEATURE_VALUE + || entry.type == FeatureEntry::FEATURE_WITH_PARAMS_VALUE) { @@ -1023,7 +1023,7 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat switch (entry.type) { case FeatureEntry::SINGLE_VALUE: case FeatureEntry::SINGLE_DISABLE_VALUE: -@@ -796,6 +832,16 @@ void FlagsState::AddSwitchesToCommandLine( +@@ -804,6 +840,16 @@ void FlagsState::AddSwitchesToCommandLine( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); if (entry_it == name_to_switch_map.end()) { @@ -1037,10 +1037,10 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat + continue; + } + } - NOTREACHED(); + NOTREACHED_IN_MIGRATION(); continue; } -@@ -1048,6 +1094,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName( +@@ -1056,6 +1102,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName( bool FlagsState::IsSupportedFeature(const FlagsStorage* storage, const std::string& name, int platform_mask) const { @@ -1138,7 +1138,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource private announceStatusDelayMs: number = 100; private featuresResolver: PromiseResolver = new PromiseResolver(); private flagSearch: FlagSearch = new FlagSearch(this); -@@ -205,6 +206,10 @@ export class FlagsAppElement extends CustomElement { +@@ -209,6 +210,10 @@ export class FlagsAppElement extends CustomElement { // tabs: Tab[] = [ @@ -1149,7 +1149,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource { tabEl: this.getRequiredElement('#tab-available'), panelEl: this.getRequiredElement('#tab-content-available'), -@@ -218,6 +223,11 @@ export class FlagsAppElement extends CustomElement { +@@ -222,6 +227,11 @@ export class FlagsAppElement extends CustomElement { ]; connectedCallback() { @@ -1158,10 +1158,10 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource + this.getRequiredElement("#appcontainer").classList.add('cromite'); + document.title = "Cromite Flags List"; + } - // Get and display the data upon loading. - this.requestExperimentalFeaturesData(); - // There is no restart button on iOS. -@@ -278,20 +288,29 @@ export class FlagsAppElement extends CustomElement { + // + const pathname = new URL(window.location.href).pathname; + this.isFlagsDeprecatedUrl_ = +@@ -306,20 +316,29 @@ export class FlagsAppElement extends CustomElement { const defaultFeatures: Feature[] = []; const nonDefaultFeatures: Feature[] = []; @@ -1194,7 +1194,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource // this.showRestartToast(experimentalFeaturesData.needsRestart); -@@ -402,16 +421,23 @@ export class FlagsAppElement extends CustomElement { +@@ -438,16 +457,23 @@ export class FlagsAppElement extends CustomElement { } private renderExperiments( @@ -1219,7 +1219,7 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource if (select) { experiment.addEventListener('select-change', e => { e.preventDefault(); -@@ -435,9 +461,14 @@ export class FlagsAppElement extends CustomElement { +@@ -471,9 +497,14 @@ export class FlagsAppElement extends CustomElement { this.showRestartToast(true); }); } @@ -1305,7 +1305,7 @@ diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/r const description = this.getRequiredElement('.description'); description.textContent = feature.description; -@@ -125,6 +136,7 @@ export class FlagsExperimentElement extends CustomElement { +@@ -134,6 +145,7 @@ export class FlagsExperimentElement extends CustomElement { const permalink = this.getRequiredElement('.permalink'); permalink.href = `#${feature.internal_name}`; permalink.textContent = `#${feature.internal_name}`; @@ -1313,7 +1313,7 @@ diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/r const smallScreenCheck = window.matchMedia('(max-width: 480px)'); // Toggling of experiment description overflow content on smaller screens. -@@ -153,6 +165,10 @@ export class FlagsExperimentElement extends CustomElement { +@@ -162,6 +174,10 @@ export class FlagsExperimentElement extends CustomElement { const optionEl = document.createElement('option'); optionEl.selected = option.selected; optionEl.textContent = option.description; @@ -1362,7 +1362,7 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -142,6 +142,7 @@ BASE_FEATURE(kCpssQuietChipTextUpdate, +@@ -149,6 +149,7 @@ BASE_FEATURE(kCpssQuietChipTextUpdate, "CpssQuietChipTextUpdate", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1385,7 +1385,7 @@ diff --git a/components/version_ui/version_handler_helper.cc b/components/versio diff --git a/content/common/features.cc b/content/common/features.cc --- a/content/common/features.cc +++ b/content/common/features.cc -@@ -543,4 +543,5 @@ BASE_FEATURE(kWindowOpenFileSelectFix, +@@ -579,4 +579,5 @@ BASE_FEATURE(kWindowOpenFileSelectFix, // Please keep features in alphabetical order. @@ -1394,7 +1394,7 @@ diff --git a/content/common/features.cc b/content/common/features.cc diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -1286,4 +1286,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() { +@@ -1295,4 +1295,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() { VideoCaptureServiceConfiguration::kEnabledForBrowserProcess; } @@ -1403,7 +1403,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h -@@ -280,6 +280,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcPipeWireCapturer); +@@ -286,6 +286,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcPipeWireCapturer); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); @@ -1701,7 +1701,7 @@ new file mode 100755 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -1934,5 +1934,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1904,5 +1904,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -1711,7 +1711,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc diff --git a/media/base/media_switches.h b/media/base/media_switches.h --- a/media/base/media_switches.h +++ b/media/base/media_switches.h -@@ -582,5 +582,5 @@ MEDIA_EXPORT OOPVDMode GetOutOfProcessVideoDecodingMode(); +@@ -576,5 +576,5 @@ MEDIA_EXPORT OOPVDMode GetOutOfProcessVideoDecodingMode(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -1721,8 +1721,8 @@ diff --git a/media/base/media_switches.h b/media/base/media_switches.h diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -549,4 +549,5 @@ BASE_FEATURE(kStoreConnectionSubtype, - "StoreConnectionSubtype", +@@ -550,4 +550,5 @@ BASE_FEATURE(kSpdySessionForProxyAdditionalChecks, + "SpdySessionForProxyAdditionalChecks", base::FEATURE_ENABLED_BY_DEFAULT); +#include "cromite_flags/net_base_features_cc.inc" @@ -1730,9 +1730,9 @@ diff --git a/net/base/features.cc b/net/base/features.cc diff --git a/net/base/features.h b/net/base/features.h --- a/net/base/features.h +++ b/net/base/features.h -@@ -530,6 +530,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kDeviceBoundSessions); - // save the cost of the JNI call for future access. - NET_EXPORT BASE_DECLARE_FEATURE(kStoreConnectionSubtype); +@@ -522,6 +522,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kStorageAccessHeaders); + // not causing any problems. + NET_EXPORT BASE_DECLARE_FEATURE(kSpdySessionForProxyAdditionalChecks); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -1741,28 +1741,28 @@ diff --git a/net/base/features.h b/net/base/features.h diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc -@@ -483,4 +483,5 @@ BASE_FEATURE(kDocumentIsolationPolicy, - "DocumentIsolationPolicy", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -518,4 +518,5 @@ const base::FeatureParam kNetworkContextPrefetchMaxLoaders{ + &kNetworkContextPrefetch, + /*name=*/"max_loaders", /*default_value=*/10}; +#include "cromite_flags/services_network_public_cpp_features_cc.inc" } // namespace network::features diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h -@@ -195,6 +195,7 @@ BASE_DECLARE_FEATURE(kAvoidResourceRequestCopies); - - COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kDocumentIsolationPolicy); +@@ -212,6 +212,7 @@ BASE_DECLARE_FEATURE(kNetworkContextPrefetch); + COMPONENT_EXPORT(NETWORK_CPP) + extern const base::FeatureParam kNetworkContextPrefetchMaxLoaders; +#include "cromite_flags/services_network_public_cpp_features_h.inc" - } // namespace features - } // namespace network + } // namespace network::features + #endif // SERVICES_NETWORK_PUBLIC_CPP_FEATURES_H_ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -2647,5 +2647,6 @@ BASE_FEATURE(kRenderSizeInScoreAdBrowserSignals, - "RenderSizeInScoreAdBrowserSignals", +@@ -2678,5 +2678,6 @@ BASE_FEATURE(kOptimizeLoadingDataUrls, + "OptimizeLoadingDataUrls", base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/third_party_blink_common_features_cc.inc" @@ -1771,9 +1771,9 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h -@@ -1712,6 +1712,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kNoThrottlingVisibleAgent); - // https://github.com/WICG/turtledove/blob/main/FLEDGE.md#23-scoring-bids - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kRenderSizeInScoreAdBrowserSignals); +@@ -1747,6 +1747,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kRenderSizeInScoreAdBrowserSignals); + // Optimize loading data: URLs. + BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kOptimizeLoadingDataUrls); +#include "cromite_flags/third_party_blink_common_features_h.inc" } // namespace features diff --git a/build/patches/Add-option-to-force-tablet-UI.patch b/build/patches/Add-option-to-force-tablet-UI.patch index 70c81498..c6982282 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -16,7 +16,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../chrome/browser/app/ChromeActivity.java | 4 ++- .../overlays/strip/StripLayoutHelper.java | 10 +++++-- .../strip/StripLayoutHelperManager.java | 7 ++++- - .../browser/tasks/ReturnToChromeUtil.java | 4 ++- .../chrome/browser/ui/RootUiCoordinator.java | 5 +++- chrome/browser/preferences/BUILD.gn | 1 + .../preferences/ChromePreferenceKeys.java | 1 + @@ -30,7 +29,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../java/res/values-sw600dp/dimens.xml | 5 ++-- .../toolbar/java/res/values/dimens.xml | 5 ++-- .../browser/toolbar/ControlContainer.java | 2 +- - .../browser/toolbar/ToolbarFeatures.java | 4 ++- .../top/TabStripTransitionCoordinator.java | 2 +- .../toolbar/top/ToolbarControlContainer.java | 28 ++++++++++++++++++- .../browser/toolbar/top/ToolbarLayout.java | 5 +++- @@ -38,12 +36,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../res/xml/accessibility_preferences.xml | 5 ++++ .../AccessibilitySettingsDelegate.java | 11 ++++++++ .../chromium/ui/base/DeviceFormFactor.java | 9 ++++++ - 34 files changed, 174 insertions(+), 35 deletions(-) + 32 files changed, 168 insertions(+), 33 deletions(-) diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java --- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java +++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java -@@ -100,6 +100,7 @@ import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; +@@ -97,6 +97,7 @@ import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.prefs.PrefService; import org.chromium.content_public.browser.LoadUrlParams; @@ -51,7 +49,7 @@ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/ import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.text.EmptyTextWatcher; import org.chromium.ui.util.ColorUtils; -@@ -1130,7 +1131,9 @@ class StartSurfaceMediator +@@ -1124,7 +1125,9 @@ class StartSurfaceMediator int getTopToolbarPlaceholderHeight() { // If logo is visible in Start surface instead of in the toolbar, we don't need to show the // top margin of the fake search box. @@ -103,7 +101,7 @@ diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml -@@ -123,9 +123,13 @@ found in the LICENSE file. +@@ -120,9 +120,13 @@ found in the LICENSE file. 16dp @@ -121,7 +119,7 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res 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 -@@ -2277,7 +2277,9 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -862,7 +862,9 @@ public abstract class ChromeActivity // Inflate the correct toolbar layout for the device. int toolbarLayoutId = getToolbarLayoutId(); if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { @@ -244,15 +242,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java -@@ -73,6 +73,7 @@ import org.chromium.chrome.browser.tasks.tab_management.TabUiThemeUtil; - import org.chromium.components.browser_ui.styles.ChromeColors; - import org.chromium.components.browser_ui.styles.SemanticColorUtils; +@@ -84,6 +84,7 @@ import org.chromium.components.feature_engagement.Tracker; + import org.chromium.components.prefs.PrefService; import org.chromium.components.tab_groups.TabGroupColorId; + import org.chromium.components.user_prefs.UserPrefs; +import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.interpolators.Interpolators; -@@ -4883,8 +4884,13 @@ public class StripLayoutHelper implements StripLayoutTabDelegate, StripLayoutGro +@@ -5059,8 +5060,13 @@ public class StripLayoutHelper implements StripLayoutTabDelegate, StripLayoutGro mTabMenu.setAnchorView(tabView); // 3. Set the vertical offset to align the tab menu with bottom of the tab strip int tabHeight = mManagerHost.getHeight(); @@ -271,7 +269,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -78,6 +78,7 @@ import org.chromium.chrome.browser.ui.system.StatusBarColorController; +@@ -80,6 +80,7 @@ import org.chromium.chrome.browser.ui.system.StatusBarColorController; import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.scrim.ScrimProperties; import org.chromium.content_public.browser.LoadUrlParams; @@ -279,7 +277,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; -@@ -402,11 +403,15 @@ public class StripLayoutHelperManager +@@ -405,11 +406,15 @@ public class StripLayoutHelperManager mIsLayoutOptimizationsEnabled = ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled(true); @@ -296,24 +294,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mTopPadding = mHeight - mScrollableStripHeight; mDesktopWindowStateProvider = desktopWindowStateProvider; -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 -@@ -929,7 +929,9 @@ public final class ReturnToChromeUtil { - // TODO(b/331667743): Clean up the flag for scrollable mvt while cleaning up surface polish - // code. - boolean isSurfacePolishEnabled = ChromeFeatureList.sSurfacePolish.isEnabled(); -- if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(context)) { -+ if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(context) || -+ ChromeSharedPreferences.getInstance().readBoolean( -+ ChromePreferenceKeys.FLAGS_FORCE_TABLET_UI_ENABLED, false)) { - // On phones, parameter SURFACE_POLISH_SCROLLABLE_MVT is checked when feature flag - // surface polish is enabled; otherwise, feature flag - // SHOW_SCROLLABLE_MVT_ON_NTP_PHONE_ANDROID is checked. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -97,6 +97,7 @@ import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; +@@ -98,6 +98,7 @@ import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer; import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; import org.chromium.chrome.browser.pdf.PdfPage; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; @@ -321,7 +305,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.price_tracking.CurrentTabPriceTrackingStateSupplier; import org.chromium.chrome.browser.price_tracking.PriceTrackingButtonController; import org.chromium.chrome.browser.profiles.Profile; -@@ -1610,7 +1611,9 @@ public class RootUiCoordinator +@@ -1611,7 +1612,9 @@ public class RootUiCoordinator if (!mSupportsFindInPageSupplier.getAsBoolean()) return; int stubId = R.id.find_toolbar_stub; @@ -346,7 +330,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU 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 -@@ -268,6 +268,7 @@ public final class ChromePreferenceKeys { +@@ -265,6 +265,7 @@ public final class ChromePreferenceKeys { /** Whether the app-specific history info text was already seen by users. */ public static final String HISTORY_APP_SPECIFIC_INFO_SEEN = "Chrome.History.AppSpecificInfoSeen"; @@ -401,19 +385,19 @@ diff --git a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/brow import org.chromium.ui.modelutil.PropertyModel; import org.chromium.url.GURL; -@@ -90,7 +91,7 @@ public class SingleTabSwitcherOnNtpMediator implements ConfigurationChangedObser +@@ -87,7 +88,7 @@ public class SingleTabSwitcherOnNtpMediator { mSingleTabCardClickedCallback = singleTabCardClickedCallback; - mIsSurfacePolishEnabled = tabContentManager != null; + mSeeMoreLinkClickedCallback = seeMoreLinkClickedCallback; mUiConfig = uiConfig; - mIsTablet = isTablet; + mIsTablet = isTablet && !DeviceFormFactor.isForceTabletUI(); mModuleDelegate = moduleDelegate; - mMarginNarrowWindowOnTablet = + mMarginForPhoneAndNarrowWindowOnTablet = diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -774,7 +774,7 @@ public class LocationBarCoordinator +@@ -778,7 +778,7 @@ public class LocationBarCoordinator } private boolean isTabletWindow() { @@ -425,7 +409,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow 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 -@@ -1632,6 +1632,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1664,6 +1664,13 @@ Your Google account may have other forms of browsing history like searches and a Hide your IP address @@ -547,31 +531,10 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * @return The {@link ViewResourceAdapter} that exposes this {@link View} as a CC resource. -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarFeatures.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarFeatures.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarFeatures.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ToolbarFeatures.java -@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.toolbar; - import androidx.annotation.OptIn; - import androidx.core.os.BuildCompat; - -+import org.chromium.ui.base.DeviceFormFactor; - import org.chromium.base.ResettersForTesting; - import org.chromium.base.cached_flags.BooleanCachedFieldTrialParameter; - import org.chromium.base.cached_flags.IntCachedFieldTrialParameter; -@@ -71,7 +72,8 @@ public final class ToolbarFeatures { - * is enabled. - */ - public static boolean isDynamicTopChromeEnabled() { -- return ChromeFeatureList.sDynamicTopChrome.isEnabled(); -+ return ChromeFeatureList.sDynamicTopChrome.isEnabled() -+ && !DeviceFormFactor.isForceTabletUI(); - } - - /** Returns if we are using optimized window layout for tab strip. */ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TabStripTransitionCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TabStripTransitionCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TabStripTransitionCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TabStripTransitionCoordinator.java -@@ -154,7 +154,7 @@ public class TabStripTransitionCoordinator implements ComponentCallbacks, AppHea +@@ -155,7 +155,7 @@ public class TabStripTransitionCoordinator implements ComponentCallbacks, AppHea mTabStripReservedTopPadding = controlContainerView() .getResources() @@ -637,7 +600,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import org.chromium.ui.util.TokenHolder; import org.chromium.url.GURL; -@@ -595,7 +596,9 @@ public abstract class ToolbarLayout extends FrameLayout +@@ -596,7 +597,9 @@ public abstract class ToolbarLayout extends FrameLayout * not have a tab strip. */ protected int getTabStripHeightFromResource() { @@ -660,7 +623,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn disallowed_extension_deps_ = [ # Components should largely not depend on //extensions. Since // extensions # is not a component target and is linked with //chrome, depending on most -@@ -843,7 +843,7 @@ test("components_unittests") { +@@ -851,7 +851,7 @@ test("components_unittests") { # On other platforms, no components should depend on Chrome. # Since //chrome depends on //extensions, we also only assert_no_deps on # extensions targets for non-lacros builds. @@ -669,7 +632,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn assert_no_deps = [ "//chrome/*" ] assert_no_deps += disallowed_extension_deps_ } -@@ -1129,7 +1129,7 @@ if (use_blink) { +@@ -1137,7 +1137,7 @@ if (use_blink) { # dependency. On other platforms, no components should depend on Chrome. # Since //chrome depends on //extensions, we also only assert_no_deps on # extensions targets for non-lacros builds. diff --git a/build/patches/Bookmarks-select-all-menu-entry.patch b/build/patches/Bookmarks-select-all-menu-entry.patch index 25a20d19..797b3b31 100644 --- a/build/patches/Bookmarks-select-all-menu-entry.patch +++ b/build/patches/Bookmarks-select-all-menu-entry.patch @@ -2,12 +2,14 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sat, 9 Apr 2022 23:01:55 +0200 Subject: Bookmarks select all menu entry +Requires: Restore-BookmarkToolbar-setCurrentFolder.patch + License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../res/menu/bookmark_toolbar_menu_improved.xml | 7 +++++++ - .../chrome/browser/bookmarks/BookmarkToolbar.java | 15 +++++++++++++++ - .../ui/android/strings/android_chrome_strings.grd | 3 +++ - 3 files changed, 25 insertions(+) + .../menu/bookmark_toolbar_menu_improved.xml | 7 +++++++ + .../browser/bookmarks/BookmarkToolbar.java | 18 ++++++++++++++++++ + .../android/strings/android_chrome_strings.grd | 3 +++ + 3 files changed, 28 insertions(+) diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml --- a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml @@ -29,7 +31,7 @@ diff --git a/chrome/android/java/res/menu/bookmark_toolbar_menu_improved.xml b/c diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java -@@ -28,6 +28,8 @@ import java.util.ArrayList; +@@ -25,6 +25,8 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Function; @@ -38,15 +40,24 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * Main toolbar of bookmark UI. It is responsible for displaying title and buttons associated with * the current context. -@@ -159,6 +161,7 @@ public class BookmarkToolbar extends SelectableListToolbar - +@@ -183,12 +185,16 @@ public class BookmarkToolbar extends SelectableListToolbar void setCurrentFolder(BookmarkId folder) { mCurrentFolder = mBookmarkModel.getBookmarkById(folder); -+ getMenu().findItem(R.id.select_all_menu_id).setVisible(true); + enableImportExportMenu(); ++ enableSelectAllMenu(); + } + + void enableImportExportMenu() { getMenu().findItem(R.id.import_menu_id).setVisible(true); getMenu().findItem(R.id.export_menu_id).setVisible(true); } -@@ -187,6 +190,17 @@ public class BookmarkToolbar extends SelectableListToolbar ++ ++ void enableSelectAllMenu() { ++ getMenu().findItem(R.id.select_all_menu_id).setVisible(true); + } + + void setNavigateBackRunnable(Runnable navigateBackRunnable) { +@@ -215,6 +221,17 @@ public class BookmarkToolbar extends SelectableListToolbar mExportBookmarkRunnable.run(); return true; } @@ -64,7 +75,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm return mMenuIdClickedFunction.apply(menuItem.getItemId()); } -@@ -204,6 +218,7 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -232,6 +249,7 @@ public class BookmarkToolbar extends SelectableListToolbar getMenu().findItem(R.id.import_menu_id).setVisible(mCurrentFolder != null); getMenu().findItem(R.id.export_menu_id).setVisible(mCurrentFolder != null); @@ -75,7 +86,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm 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 -@@ -250,6 +250,9 @@ CHAR_LIMIT guidelines: +@@ -245,6 +245,9 @@ CHAR_LIMIT guidelines: Sites diff --git a/build/patches/DoH-improvements.patch b/build/patches/DoH-improvements.patch index cb010487..5906da1d 100644 --- a/build/patches/DoH-improvements.patch +++ b/build/patches/DoH-improvements.patch @@ -7,45 +7,50 @@ Always enforce DoH even with inconsistent system DNS configuration License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../browser/net/stub_resolver_config_reader.cc | 17 +---------------- - net/dns/dns_client.cc | 11 ++++++++--- - net/dns/host_resolver_manager.cc | 1 + - 3 files changed, 10 insertions(+), 19 deletions(-) + chrome/browser/net/secure_dns_config.cc | 2 +- + chrome/browser/net/stub_resolver_config_reader.cc | 3 +++ + net/dns/dns_client.cc | 11 ++++++++--- + net/dns/host_resolver_manager.cc | 1 + + 4 files changed, 13 insertions(+), 4 deletions(-) +diff --git a/chrome/browser/net/secure_dns_config.cc b/chrome/browser/net/secure_dns_config.cc +--- a/chrome/browser/net/secure_dns_config.cc ++++ b/chrome/browser/net/secure_dns_config.cc +@@ -27,7 +27,7 @@ std::optional SecureDnsConfig::ParseMode( + if (name == kModeSecure) { + return net::SecureDnsMode::kSecure; + } else if (name == kModeAutomatic) { +- return net::SecureDnsMode::kAutomatic; ++ return net::SecureDnsMode::kSecure; + } else if (name == kModeOff) { + return net::SecureDnsMode::kOff; + } diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/net/stub_resolver_config_reader.cc --- a/chrome/browser/net/stub_resolver_config_reader.cc +++ b/chrome/browser/net/stub_resolver_config_reader.cc -@@ -151,7 +151,7 @@ StubResolverConfigReader::StubResolverConfigReader(PrefService* local_state, - if (entries.count("dns-over-https@1")) { - // The user has "Enabled" selected. - local_state_->SetString(prefs::kDnsOverHttpsMode, -- SecureDnsConfig::kModeAutomatic); -+ SecureDnsConfig::kModeSecure); - } else if (entries.count("dns-over-https@2")) { - // The user has "Disabled" selected. - local_state_->SetString(prefs::kDnsOverHttpsMode, -@@ -348,22 +348,7 @@ SecureDnsConfig StubResolverConfigReader::GetAndUpdateConfiguration( - check_parental_controls = false; - } +@@ -83,6 +83,7 @@ enum class SecureDnsModeDetailsForHistogram { -- // Check parental controls last because it can be expensive and should only be -- // checked if necessary for the otherwise-determined mode. - if (check_parental_controls) { -- if (ShouldDisableDohForParentalControls()) { -- forced_management_mode = -- SecureDnsConfig::ManagementMode::kDisabledParentalControls; -- secure_dns_mode = net::SecureDnsMode::kOff; -- mode_details = -- SecureDnsModeDetailsForHistogram::kOffByDetectedParentalControls; -- -- // If parental controls had not previously been checked, need to update -- // network service. -- if (!parental_controls_checked_) -- update_network_service = true; -- } -- - parental_controls_checked_ = true; - } + #if BUILDFLAG(IS_WIN) + bool ShouldDisableDohForWindowsParentalControls() { ++ if ((true)) return false; + return GetWinParentalControls().web_filter; + } + #endif // BUILDFLAG(IS_WIN) +@@ -189,6 +190,7 @@ void StubResolverConfigReader::UpdateNetworkService(bool record_metrics) { + } + + bool StubResolverConfigReader::ShouldDisableDohForManaged() { ++ if ((true)) return false; + // This function ignores cloud policies which are loaded on a per-profile basis. + #if BUILDFLAG(IS_ANDROID) + // Check for MDM/management/owner apps. android_has_owner_ is true if either a +@@ -217,6 +219,7 @@ bool StubResolverConfigReader::ShouldDisableDohForManaged() { + } + + bool StubResolverConfigReader::ShouldDisableDohForParentalControls() { ++ if ((true)) return false; + if (parental_controls_testing_override_.has_value()) + return parental_controls_testing_override_.value(); diff --git a/net/dns/dns_client.cc b/net/dns/dns_client.cc --- a/net/dns/dns_client.cc diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index 5f64ed2b..e4e4c066 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -25,7 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/flag_descriptions.cc | 6 -- chrome/browser/flag_descriptions.h | 3 - .../strings/android_chrome_strings.grd | 6 ++ - .../ui/autofill/autofill_client_provider.cc | 32 +------- + .../ui/autofill/autofill_client_provider.cc | 34 +------- .../ui/autofill/autofill_client_provider.h | 6 -- chrome/browser/ui/tab_helpers.cc | 4 +- components/android_autofill/browser/BUILD.gn | 1 + @@ -34,7 +34,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../autofill/AutofillManagerWrapper.java | 5 +- .../components/autofill/AutofillProvider.java | 7 ++ .../BrowserSelectionActionMenuDelegate.java | 62 ++++++++++++++ - .../browser/content_autofill_driver.cc | 59 +++++++++++++ + .../browser/content_autofill_driver.cc | 12 +++ .../content/browser/content_autofill_driver.h | 10 +++ .../content_autofill_driver_factory.cc | 12 +++ .../content/renderer/autofill_agent.cc | 6 ++ @@ -47,7 +47,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../autofill/core/common/autofill_features.h | 4 - .../autofill/core/common/autofill_prefs.cc | 4 +- .../autofill/core/common/autofill_prefs.h | 5 ++ - 32 files changed, 314 insertions(+), 94 deletions(-) + 32 files changed, 267 insertions(+), 96 deletions(-) create mode 100644 components/android_autofill/browser/java/src/org/chromium/components/autofill/BrowserSelectionActionMenuDelegate.java diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java @@ -61,7 +61,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage import org.chromium.base.metrics.RecordHistogram; import org.chromium.chrome.R; import org.chromium.chrome.browser.password_check.PasswordCheck; -@@ -58,6 +59,11 @@ import java.lang.annotation.Retention; +@@ -59,6 +60,11 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Locale; @@ -73,7 +73,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage /** * The "Passwords" screen in Settings, which allows the user to enable or disable password saving, * to view saved passwords (just the username and URL), and to delete saved passwords. -@@ -65,7 +71,7 @@ import java.util.Locale; +@@ -66,7 +72,7 @@ import java.util.Locale; public class PasswordSettings extends ChromeBaseSettingsFragment implements PasswordListObserver, Preference.OnPreferenceClickListener, @@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage @IntDef({ TrustedVaultBannerState.NOT_SHOWN, TrustedVaultBannerState.OFFER_OPT_IN, -@@ -95,6 +101,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -96,6 +102,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment public static final String PREF_TRUSTED_VAULT_BANNER = "trusted_vault_banner"; public static final String PREF_KEY_MANAGE_ACCOUNT_LINK = "manage_account_link"; @@ -95,7 +95,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage private static final String PREF_KEY_CATEGORY_SAVED_PASSWORDS = "saved_passwords"; private static final String PREF_KEY_CATEGORY_EXCEPTIONS = "exceptions"; private static final String PREF_KEY_SAVED_PASSWORDS_NO_TEXT = "saved_passwords_no_text"; -@@ -127,6 +139,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -128,6 +140,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment private Preference mLinkPref; private Menu mMenu; @@ -104,7 +104,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage private @ManagePasswordsReferrer int mManagePasswordsReferrer; private BottomSheetController mBottomSheetController; -@@ -301,6 +315,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -307,6 +321,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment } createSavePasswordsSwitch(); @@ -112,7 +112,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage if (shouldShowAutoSigninOption()) { createAutoSignInCheckbox(); } -@@ -574,6 +589,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment +@@ -580,6 +595,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_SERVICE)); } @@ -187,7 +187,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -410,8 +410,7 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -436,8 +436,7 @@ public class MainSettings extends ChromeBaseSettingsFragment private void updateAutofillPreferences() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O @@ -200,7 +200,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe 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 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -88,6 +88,13 @@ import org.chromium.url.GURL; +@@ -91,6 +91,13 @@ import java.lang.annotation.RetentionPolicy; import java.nio.ByteBuffer; import java.util.Objects; @@ -214,7 +214,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This * class is not intended to be extended. -@@ -938,6 +945,11 @@ class TabImpl implements Tab { +@@ -970,6 +977,11 @@ class TabImpl implements Tab { for (TabObserver observer : mObservers) observer.onDestroyed(this); mObservers.clear(); @@ -226,7 +226,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav mUserDataHost.destroy(); mTabViewManager.destroy(); hideNativePage(false, null); -@@ -1210,8 +1222,7 @@ class TabImpl implements Tab { +@@ -1242,8 +1254,7 @@ class TabImpl implements Tab { */ boolean providesAutofillStructure() { // TODO(b/326231439): Check pref and AutofillService! @@ -236,7 +236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav } // Forwarded from TabWebContentsDelegateAndroid. -@@ -1867,15 +1878,20 @@ class TabImpl implements Tab { +@@ -1958,15 +1969,20 @@ class TabImpl implements Tab { * @return true if the the provider is available for the given WebContents. */ private boolean prepareAutofillProvider(WebContents newWebContents) { @@ -263,7 +263,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav mAutofillProvider = new AutofillProvider( getContext(), -@@ -1884,7 +1900,16 @@ class TabImpl implements Tab { +@@ -1975,7 +1991,16 @@ class TabImpl implements Tab { getContext().getString(R.string.app_name)); TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid); } @@ -284,9 +284,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -3759,19 +3759,6 @@ const FeatureEntry::FeatureVariation kLinkPreviewTriggerTypeVariations[] = { - std::size(kLinkPreviewTriggerTypeLongPress), nullptr}}; - #endif // !BUILDFLAG(IS_ANDROID) +@@ -3944,19 +3944,6 @@ const FeatureEntry::FeatureVariation kAutofillGranularFillingAvailableVariations + kAutofillGranularFillingAvailableVariationWithExpandControlVisibleOnSelectionOnly), + nullptr}}; -#if BUILDFLAG(IS_ANDROID) -inline constexpr flags_ui::FeatureEntry::FeatureParam @@ -304,7 +304,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc const FeatureEntry::FeatureParam kDefaultBrowserPromptRefreshAggressive[] = { {"max_prompt_count", "-1"}, {"reprompt_duration", "7d"}, -@@ -5749,15 +5736,6 @@ const FeatureEntry kFeatureEntries[] = { +@@ -6019,15 +6006,6 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_ANDROID) @@ -361,9 +361,9 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -653,12 +653,6 @@ const char kAutofillUpdateChromeSettingsLinkToGPayWebDescription[] = - "When enabled, Chrome Settings link directs to GPay Web rather than " - "Payments Center for payment methods management."; +@@ -652,12 +652,6 @@ const char kAutofillUpstreamUpdatedUiDescription[] = + "When enabled, shows different text and images in the UI of the credit " + "card upload save bubble."; -const char kAutofillVirtualViewStructureAndroidName[] = - "Enable the setting to provide a virtual view structure for Autofill"; @@ -377,9 +377,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -388,9 +388,6 @@ extern const char kAutofillUpdateChromeSettingsLinkToGPayWebDescription[]; - extern const char kAutofillMoreProminentPopupName[]; - extern const char kAutofillMoreProminentPopupDescription[]; +@@ -388,9 +388,6 @@ extern const char kAutofillSyncEwalletAccountsDescription[]; + extern const char kAutofillUpstreamUpdatedUiName[]; + extern const char kAutofillUpstreamUpdatedUiDescription[]; -extern const char kAutofillVirtualViewStructureAndroidName[]; -extern const char kAutofillVirtualViewStructureAndroidDescription[]; @@ -390,7 +390,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -679,6 +679,12 @@ CHAR_LIMIT guidelines: +@@ -672,6 +672,12 @@ For more settings that use data to improve your Chrome experience, go to Save passwords @@ -400,8 +400,8 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro + + Enable native Android autofill in incognito + - - Auto Sign-in + + Use and save passwords in your Google Account diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/browser/ui/autofill/autofill_client_provider.cc --- a/chrome/browser/ui/autofill/autofill_client_provider.cc @@ -414,7 +414,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro #include "chrome/browser/keyboard_accessory/android/manual_filling_controller_impl.h" #include "components/android_autofill/browser/android_autofill_client.h" #endif // BUILDFLAG(IS_ANDROID) -@@ -21,32 +20,13 @@ +@@ -21,35 +20,14 @@ namespace autofill { namespace { @@ -424,6 +424,9 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro - features::kAutofillVirtualViewStructureAndroid)) { - return false; - } +- if (!prefs->GetBoolean(prefs::kAutofillThirdPartyPasswordManagersAllowed)) { +- return false; +- } - if (!prefs->GetBoolean(prefs::kAutofillUsingVirtualViewStructure)) { - return false; - } @@ -435,7 +438,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro - return false; -#endif // BUILDFLAG(IS_ANDROID) -} -- + } // namespace -AutofillClientProvider::AutofillClientProvider(PrefService* prefs) @@ -449,7 +452,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro #endif // BUILDFLAG(IS_ANDROID) } -@@ -54,15 +34,7 @@ AutofillClientProvider::~AutofillClientProvider() = default; +@@ -57,15 +35,7 @@ AutofillClientProvider::~AutofillClientProvider() = default; void AutofillClientProvider::CreateClientForWebContents( content::WebContents* web_contents) { @@ -457,7 +460,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro -#if BUILDFLAG(IS_ANDROID) - android_autofill::AndroidAutofillClient::CreateForWebContents(web_contents); -#else -- NOTREACHED(); +- NOTREACHED_IN_MIGRATION(); -#endif - } else { ChromeAutofillClient::CreateForWebContents(web_contents); @@ -485,7 +488,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.h b/chrome/brow diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc -@@ -380,9 +380,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -382,9 +382,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents); chrome::ChainedBackNavigationTracker::CreateForWebContents(web_contents); chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents); @@ -668,170 +671,29 @@ new file mode 100644 diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc --- a/components/autofill/content/browser/content_autofill_driver.cc +++ b/components/autofill/content/browser/content_autofill_driver.cc -@@ -420,6 +420,10 @@ void ContentAutofillDriver::FormsSeen( - const std::vector& removed_forms) { - target->GetAutofillManager().OnFormsSeen( - WithNewVersion(updated_forms), removed_forms); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnFormsSeen( -+ WithNewVersion(updated_forms), removed_forms); -+ } - }); - } - -@@ -437,6 +441,10 @@ void ContentAutofillDriver::FormSubmitted( - bool known_success, mojom::SubmissionSource submission_source) { - target->GetAutofillManager().OnFormSubmitted( - WithNewVersion(form), known_success, submission_source); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnFormSubmitted( -+ WithNewVersion(form), known_success, submission_source); -+ } - }); - } - -@@ -457,6 +465,10 @@ void ContentAutofillDriver::CaretMovedInFormField( - const FormFieldData& field, const gfx::Rect& caret_bounds) { - target->GetAutofillManager().OnCaretMovedInFormField( - WithNewVersion(form), field, caret_bounds); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnCaretMovedInFormField( -+ WithNewVersion(form), field, caret_bounds); -+ } - }); - } - -@@ -475,6 +487,10 @@ void ContentAutofillDriver::TextFieldDidChange(const FormData& raw_form, - const FormFieldData& field, base::TimeTicks timestamp) { - target->GetAutofillManager().OnTextFieldDidChange(WithNewVersion(form), - field, timestamp); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnTextFieldDidChange( -+ WithNewVersion(form), field, timestamp); -+ } - }); - } - -@@ -492,6 +508,10 @@ void ContentAutofillDriver::TextFieldDidScroll(const FormData& raw_form, - const FormFieldData& field) { - target->GetAutofillManager().OnTextFieldDidScroll(WithNewVersion(form), - field); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnTextFieldDidScroll( -+ WithNewVersion(form), field); -+ } - }); - } - -@@ -510,6 +530,10 @@ void ContentAutofillDriver::SelectControlDidChange( - const FormFieldData& field) { - target->GetAutofillManager().OnSelectControlDidChange( - WithNewVersion(form), field); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnSelectControlDidChange( -+ WithNewVersion(form), field); -+ } - }); - } - -@@ -532,6 +556,10 @@ void ContentAutofillDriver::AskForValuesToFill( - AutofillSuggestionTriggerSource trigger_source) { - target->GetAutofillManager().OnAskForValuesToFill( - WithNewVersion(form), field, caret_bounds, trigger_source); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnAskForValuesToFill( -+ WithNewVersion(form), field, caret_bounds, trigger_source); -+ } - }); - } - -@@ -543,6 +571,8 @@ void ContentAutofillDriver::HidePopup() { - DCHECK(!target->IsPrerendering()) - << "We should never affect UI while prerendering"; - target->GetAutofillManager().OnHidePopup(); -+ if (target->secondary_autofill_manager()) -+ target->secondary_autofill_manager()->OnHidePopup(); - }); - } - -@@ -554,6 +584,8 @@ void ContentAutofillDriver::FocusOnNonFormField(bool had_interacted_form) { - this, had_interacted_form, - [](autofill::AutofillDriver* target, bool had_interacted_form) { - target->GetAutofillManager().OnFocusOnNonFormField(had_interacted_form); -+ if (target->secondary_autofill_manager()) -+ target->secondary_autofill_manager()->OnFocusOnNonFormField(had_interacted_form); - }); - } - -@@ -571,9 +603,16 @@ void ContentAutofillDriver::FocusOnFormField(const FormData& raw_form, - const FormFieldData& field) { - target->GetAutofillManager().OnFocusOnFormField(WithNewVersion(form), - field); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnFocusOnFormField( -+ WithNewVersion(form), field); +@@ -247,6 +247,12 @@ void RouteToManager(ContentAutofillDriver& source, + AutofillManager& manager = target.GetAutofillManager(); + (manager.* + manager_fun)(WithNewVersion(std::forward(args))...); ++ ++ AutofillManager& secondary_autofill_manager = target.secondary_autofill_manager(); ++ if (secondary_autofill_manager) { ++ (secondary_autofill_manager.* ++ manager_fun)(WithNewVersion(std::forward(args))...); + } }, - [](autofill::AutofillDriver* target) { - target->GetAutofillManager().OnFocusOnNonFormField(true); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnFocusOnNonFormField(true); -+ } - }); + source, Lift(source, std::forward(args))...); } - -@@ -588,6 +627,10 @@ void ContentAutofillDriver::DidFillAutofillFormData(const FormData& raw_form, - base::TimeTicks timestamp) { - target->GetAutofillManager().OnDidFillAutofillFormData( - WithNewVersion(form), timestamp); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnDidFillAutofillFormData( -+ WithNewVersion(form), timestamp); -+ } - }); - } - -@@ -597,6 +640,8 @@ void ContentAutofillDriver::DidEndTextFieldEditing() { - } - router().DidEndTextFieldEditing(this, [](autofill::AutofillDriver* target) { - target->GetAutofillManager().OnDidEndTextFieldEditing(); -+ if (target->secondary_autofill_manager()) -+ target->secondary_autofill_manager()->OnDidEndTextFieldEditing(); - }); - } - -@@ -611,6 +656,10 @@ void ContentAutofillDriver::SelectOrSelectListFieldOptionsDidChange( - cast(target) - ->GetAutofillManager() - .OnSelectOrSelectListFieldOptionsDidChange(WithNewVersion(form)); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnSelectOrSelectListFieldOptionsDidChange( -+ WithNewVersion(form)); -+ } - }); - } - -@@ -632,6 +681,10 @@ void ContentAutofillDriver::JavaScriptChangedAutofilledValue( - bool formatting_only) { - target->GetAutofillManager().OnJavaScriptChangedAutofilledValue( - WithNewVersion(form), field, old_value, formatting_only); -+ if (target->secondary_autofill_manager()) { -+ target->secondary_autofill_manager()->OnJavaScriptChangedAutofilledValue( -+ WithNewVersion(form), field, old_value, formatting_only); -+ } - }); - } - -@@ -639,6 +692,8 @@ void ContentAutofillDriver::Reset() { - owner_->router().UnregisterDriver(this, - /*driver_is_dying=*/false); +@@ -589,6 +595,8 @@ void ContentAutofillDriver::JavaScriptChangedAutofilledValue( + void ContentAutofillDriver::Reset() { + owner_->router().UnregisterDriver(*this, /*driver_is_dying=*/false); autofill_manager_->Reset(); + if (secondary_autofill_manager_) + secondary_autofill_manager_->Reset(); } const mojo::AssociatedRemote& -@@ -651,6 +706,10 @@ ContentAutofillDriver::GetAutofillAgent() { +@@ -601,6 +609,10 @@ ContentAutofillDriver::GetAutofillAgent() { return autofill_agent_; } @@ -839,13 +701,13 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co + return secondary_autofill_manager_.get(); +} + - void ContentAutofillDriver::SetFrameAndFormMetaData( - FormData& form, - base::optional_ref field) const { + void ContentAutofillDriver::LiftForTest(FormData& form) { + form = Lift(*this, form); + } diff --git a/components/autofill/content/browser/content_autofill_driver.h b/components/autofill/content/browser/content_autofill_driver.h --- a/components/autofill/content/browser/content_autofill_driver.h +++ b/components/autofill/content/browser/content_autofill_driver.h -@@ -128,6 +128,12 @@ class ContentAutofillDriver : public AutofillDriver, +@@ -123,6 +123,12 @@ class ContentAutofillDriver : public AutofillDriver, ContentAutofillDriver& operator=(const ContentAutofillDriver&) = delete; ~ContentAutofillDriver() override; @@ -858,7 +720,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.h b/com content::RenderFrameHost* render_frame_host() { return &*render_frame_host_; } const content::RenderFrameHost* render_frame_host() const { return &*render_frame_host_; -@@ -309,6 +315,10 @@ class ContentAutofillDriver : public AutofillDriver, +@@ -282,6 +288,10 @@ class ContentAutofillDriver : public AutofillDriver, // The factory that created this driver. Outlives `this`. const raw_ref owner_; @@ -901,7 +763,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc --- a/components/autofill/content/renderer/autofill_agent.cc +++ b/components/autofill/content/renderer/autofill_agent.cc -@@ -1221,12 +1221,16 @@ void AutofillAgent::ShowSuggestions( +@@ -1250,12 +1250,16 @@ void AutofillAgent::ShowSuggestions( password_generation_agent_->ShowPasswordGenerationSuggestions( input_element)) { is_popup_possibly_visible_ = true; @@ -918,13 +780,12 @@ diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components } } -@@ -1237,11 +1241,13 @@ void AutofillAgent::ShowSuggestions( +@@ -1266,10 +1270,12 @@ void AutofillAgent::ShowSuggestions( // parenthesis to not match a regex). In this specific case we are actually // interested in whether the field is currently a password field, not whether // it has ever been a password field. +#if !BUILDFLAG(IS_ANDROID) - if (!input_element.IsNull() && - input_element.IsPasswordField /*disable presubmit*/ () && + if (input_element && input_element.IsPasswordField /*disable presubmit*/ () && !config_.query_password_suggestions) { return; } @@ -935,7 +796,7 @@ diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc --- a/components/autofill/content/renderer/password_autofill_agent.cc +++ b/components/autofill/content/renderer/password_autofill_agent.cc -@@ -836,7 +836,10 @@ void PasswordAutofillAgent::UpdatePasswordStateForTextChange( +@@ -849,7 +849,10 @@ void PasswordAutofillAgent::UpdatePasswordStateForTextChange( void PasswordAutofillAgent::TrackAutofilledElement( const blink::WebFormControlElement& element) { @@ -958,23 +819,23 @@ diff --git a/components/autofill/core/browser/autofill_driver.h b/components/aut + // Returns whether the AutofillDriver instance is associated with an active // frame in the MPArch sense. - virtual bool IsInActiveFrame() const = 0; + virtual bool IsActive() const = 0; diff --git a/components/autofill/core/browser/autofill_manager.h b/components/autofill/core/browser/autofill_manager.h --- a/components/autofill/core/browser/autofill_manager.h +++ b/components/autofill/core/browser/autofill_manager.h -@@ -196,6 +196,8 @@ class AutofillManager +@@ -201,6 +201,8 @@ class AutofillManager ~AutofillManager() override; + virtual bool IsAndroidAutofill() const = 0; + - // The following will fail a DCHECK if called for a prerendered main frame. - AutofillClient& client() { - DCHECK(!driver().IsPrerendering()); + AutofillClient& client() { return driver_->GetAutofillClient(); } + const AutofillClient& client() const { return driver_->GetAutofillClient(); } + diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/components/autofill/core/browser/browser_autofill_manager.cc --- a/components/autofill/core/browser/browser_autofill_manager.cc +++ b/components/autofill/core/browser/browser_autofill_manager.cc -@@ -606,6 +606,8 @@ BrowserAutofillManager::~BrowserAutofillManager() { +@@ -693,6 +693,8 @@ BrowserAutofillManager::~BrowserAutofillManager() { // (due to a navigation). } @@ -986,7 +847,7 @@ diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/comp diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/components/autofill/core/browser/browser_autofill_manager.h --- a/components/autofill/core/browser/browser_autofill_manager.h +++ b/components/autofill/core/browser/browser_autofill_manager.h -@@ -136,6 +136,8 @@ class BrowserAutofillManager : public AutofillManager { +@@ -146,6 +146,8 @@ class BrowserAutofillManager : public AutofillManager { ~BrowserAutofillManager() override; @@ -998,7 +859,7 @@ diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/compo diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc -@@ -726,7 +726,7 @@ BASE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid, +@@ -774,7 +774,7 @@ BASE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid, BASE_FEATURE(kAutofillVirtualViewStructureAndroid, "AutofillVirtualViewStructureAndroid", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1010,7 +871,7 @@ diff --git a/components/autofill/core/common/autofill_features.cc b/components/a diff --git a/components/autofill/core/common/autofill_features.h b/components/autofill/core/common/autofill_features.h --- a/components/autofill/core/common/autofill_features.h +++ b/components/autofill/core/common/autofill_features.h -@@ -231,10 +231,6 @@ BASE_DECLARE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid); +@@ -240,10 +240,6 @@ BASE_DECLARE_FEATURE(kAutofillEnableSecurityTouchEventFilteringAndroid); COMPONENT_EXPORT(AUTOFILL) BASE_DECLARE_FEATURE(kAutofillVirtualViewStructureAndroid); @@ -1024,7 +885,7 @@ diff --git a/components/autofill/core/common/autofill_features.h b/components/au diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/autofill/core/common/autofill_prefs.cc --- a/components/autofill/core/common/autofill_prefs.cc +++ b/components/autofill/core/common/autofill_prefs.cc -@@ -64,6 +64,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -66,6 +66,8 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref( prefs::kAutofillCreditCardFidoAuthOfferCheckboxState, true); #endif @@ -1033,19 +894,19 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto registry->RegisterIntegerPref(prefs::kAutocompleteLastVersionRetentionPolicy, 0); registry->RegisterStringPref(prefs::kAutofillUploadEncodingSeed, ""); -@@ -104,7 +106,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -107,7 +109,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kAutofillUsingVirtualViewStructure, - false); + true); - #endif - - #if BUILDFLAG(IS_ANDROID) + registry->RegisterBooleanPref( + prefs::kAutofillThirdPartyPasswordManagersAllowed, true); + registry->RegisterBooleanPref( diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autofill/core/common/autofill_prefs.h --- a/components/autofill/core/common/autofill_prefs.h +++ b/components/autofill/core/common/autofill_prefs.h -@@ -87,6 +87,11 @@ inline constexpr char kAutofillUploadEventsLastResetTimestamp[] = +@@ -100,6 +100,11 @@ inline constexpr char kAutofillUploadEventsLastResetTimestamp[] = // retention policy was run. inline constexpr char kAutocompleteLastVersionRetentionPolicy[] = "autocomplete.retention_policy_last_version"; diff --git a/build/patches/Enable-search-engine-settings-desktop-ui.patch b/build/patches/Enable-search-engine-settings-desktop-ui.patch index 78e1ac6a..adb7f895 100644 --- a/build/patches/Enable-search-engine-settings-desktop-ui.patch +++ b/build/patches/Enable-search-engine-settings-desktop-ui.patch @@ -50,7 +50,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../android/template_url_service_android.cc | 2 +- .../search_engines/template_url_service.cc | 8 +- .../search_engines/template_url_service.h | 6 +- - content/browser/webui/web_ui_impl.cc | 16 +- + content/browser/webui/web_ui_impl.cc | 14 +- content/browser/webui/web_ui_impl.h | 3 + content/public/browser/web_ui.h | 1 + ui/base/template_expressions.cc | 21 +- @@ -67,7 +67,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/webui/resources/include_polymer.gni | 2 +- ui/webui/resources/js/BUILD.gn | 2 +- ui/webui/resources/js/load_time_data.ts | 17 +- - 60 files changed, 1098 insertions(+), 62 deletions(-) + 60 files changed, 1097 insertions(+), 61 deletions(-) create mode 100644 chrome/app/settings_strings_android.grdp create mode 100644 chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml create mode 100644 chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc @@ -89,7 +89,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.base.IntentUtils; import org.chromium.chrome.browser.accessibility.settings.AccessibilitySettings; import org.chromium.chrome.browser.autofill.settings.AutofillPaymentMethodsFragment; -@@ -33,6 +36,13 @@ public class SettingsLauncherImpl implements SettingsLauncher { +@@ -36,6 +39,13 @@ public class SettingsLauncherImpl implements SettingsLauncher { public SettingsLauncherImpl() {} @@ -118,7 +118,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources -@@ -496,7 +501,7 @@ are declared in tools/grit/grit_rule.gni. +@@ -500,7 +505,7 @@ are declared in tools/grit/grit_rule.gni. Disable @@ -130,7 +130,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources 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 -@@ -2585,6 +2585,9 @@ +@@ -2594,6 +2594,9 @@ URL with %s in place of query @@ -408,7 +408,7 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3782,6 +3782,9 @@ static_library("browser") { +@@ -3764,6 +3764,9 @@ static_library("browser") { "//components/user_scripts/android", ] } @@ -449,11 +449,10 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/browser/resources/settings/page_visibility.ts --- a/chrome/browser/resources/settings/page_visibility.ts +++ b/chrome/browser/resources/settings/page_visibility.ts -@@ -47,7 +47,35 @@ export interface PrivacyPageVisibility { - */ - export let pageVisibility: PageVisibility; +@@ -42,8 +42,36 @@ export interface PrivacyPageVisibility { + searchPrediction: boolean; + } --if (loadTimeData.getBoolean('isGuest')) { +const isAndroid = (loadTimeData.getString('chromeAndroid') !== ""); +if (isAndroid) { + // @ts-expect-error @@ -482,10 +481,12 @@ diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/brows + chrome.settingsPrivate = chrome.settingsPrivate_; +} + -+if (loadTimeData.getBoolean('isGuest') || isAndroid) { - // "if not chromeos" and "if chromeos" in two completely separate blocks - // to work around closure compiler. - // + function createPageVisibility(): PageVisibility|undefined { +- if (!loadTimeData.getBoolean('isGuest')) { ++ if (!loadTimeData.getBoolean('isGuest') || isAndroid) { + return undefined; + } + diff --git a/chrome/browser/resources/settings/search_engines_page/search_engine_edit_dialog.html b/chrome/browser/resources/settings/search_engines_page/search_engine_edit_dialog.html --- a/chrome/browser/resources/settings/search_engines_page/search_engine_edit_dialog.html +++ b/chrome/browser/resources/settings/search_engines_page/search_engine_edit_dialog.html @@ -798,7 +799,7 @@ diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -1076,6 +1076,18 @@ static_library("ui") { +@@ -1098,6 +1098,18 @@ static_library("ui") { # TODO(b/335257259): Resolve circular deps. allow_circular_includes_from += [ "//chrome/browser/facilitated_payments" ] @@ -1000,7 +1001,7 @@ diff --git a/chrome/browser/ui/search_engines/template_url_table_model.h b/chrom diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc -@@ -123,6 +123,8 @@ +@@ -122,6 +122,8 @@ #include "chrome/browser/ui/webui/webapks/webapks_ui.h" #include "components/feed/buildflags.h" #include "components/feed/feed_feature_list.h" @@ -1009,7 +1010,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom #else // BUILDFLAG(IS_ANDROID) #include "chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h" #include "chrome/browser/media/router/media_router_feature.h" -@@ -579,6 +581,10 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -588,6 +590,10 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, return &NewWebUI; } #endif // !BUILDFLAG(IS_ANDROID) @@ -1215,7 +1216,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome + else if (field_name.compare(kSuggestionUrlField) == 0) + is_valid = field_value.empty() || edit_controller_->IsURLValid(field_value); else - NOTREACHED(); + NOTREACHED_IN_MIGRATION(); @@ -415,18 +427,20 @@ void SearchEnginesHandler::HandleSearchEngineEditCompleted( if (!edit_controller_.get()) @@ -1257,7 +1258,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.h b/chrome/ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2390,6 +2390,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { +@@ -2407,6 +2407,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { {"searchEnginesQueryURL", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL}, {"searchEnginesQueryURLExplanation", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL_EXPLANATION}, @@ -1266,7 +1267,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide {"searchEnginesMakeDefault", IDS_SETTINGS_SEARCH_ENGINES_MAKE_DEFAULT}, {"searchEnginesActivate", IDS_SETTINGS_SEARCH_ENGINES_ACTIVATE}, {"searchEnginesDeactivate", IDS_SETTINGS_SEARCH_ENGINES_DEACTIVATE}, -@@ -3677,6 +3679,12 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3711,6 +3713,12 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, AddSystemStrings(html_source); #endif @@ -1780,7 +1781,7 @@ new file mode 100644 diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni -@@ -149,6 +149,17 @@ template("chrome_extra_paks") { +@@ -156,6 +156,17 @@ template("chrome_extra_paks") { sources += invoker.additional_paks } @@ -1801,8 +1802,8 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni diff --git a/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsLauncher.java b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsLauncher.java --- a/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsLauncher.java +++ b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsLauncher.java -@@ -44,6 +44,8 @@ public interface SettingsLauncher { - int ACCESSIBILITY = 6; +@@ -53,6 +53,8 @@ public interface SettingsLauncher { + int MANAGE_SYNC = 9; } + void launchUrlInCustomTab(Context context, String url); @@ -1824,7 +1825,7 @@ new file mode 100644 diff --git a/components/search_engines/android/template_url_service_android.cc b/components/search_engines/android/template_url_service_android.cc --- a/components/search_engines/android/template_url_service_android.cc +++ b/components/search_engines/android/template_url_service_android.cc -@@ -417,7 +417,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( +@@ -419,7 +419,7 @@ jboolean TemplateUrlServiceAndroid::SetPlayAPISearchEngine( if (existing_play_api_turl->safe_for_autoreplace()) { template_url_service_->ResetTemplateURL( existing_play_api_turl, existing_play_api_turl->short_name(), @@ -1836,7 +1837,7 @@ diff --git a/components/search_engines/android/template_url_service_android.cc b diff --git a/components/search_engines/template_url_service.cc b/components/search_engines/template_url_service.cc --- a/components/search_engines/template_url_service.cc +++ b/components/search_engines/template_url_service.cc -@@ -707,13 +707,15 @@ TemplateURL* TemplateURLService::AddWithOverrides( +@@ -708,13 +708,15 @@ TemplateURL* TemplateURLService::AddWithOverrides( std::unique_ptr template_url, const std::u16string& short_name, const std::u16string& keyword, @@ -1853,7 +1854,7 @@ diff --git a/components/search_engines/template_url_service.cc b/components/sear return Add(std::move(template_url)); } -@@ -909,7 +911,8 @@ void TemplateURLService::IncrementUsageCount(TemplateURL* url) { +@@ -918,7 +920,8 @@ void TemplateURLService::IncrementUsageCount(TemplateURL* url) { void TemplateURLService::ResetTemplateURL(TemplateURL* url, const std::u16string& title, const std::u16string& keyword, @@ -1863,7 +1864,7 @@ diff --git a/components/search_engines/template_url_service.cc b/components/sear DCHECK(!IsCreatedByExtension(url)); DCHECK(!keyword.empty()); DCHECK(!search_url.empty()); -@@ -921,6 +924,7 @@ void TemplateURLService::ResetTemplateURL(TemplateURL* url, +@@ -930,6 +933,7 @@ void TemplateURLService::ResetTemplateURL(TemplateURL* url, // The urls have changed, reset the favicon url. data.favicon_url = GURL(); } @@ -1884,7 +1885,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc // Removes the keyword from the model. This deletes the supplied TemplateURL. // This fails if the supplied template_url is the default search provider. -@@ -316,7 +317,8 @@ class TemplateURLService final : public WebDataServiceConsumer, +@@ -319,7 +320,8 @@ class TemplateURLService final : public WebDataServiceConsumer, void ResetTemplateURL(TemplateURL* url, const std::u16string& title, const std::u16string& keyword, @@ -1897,7 +1898,7 @@ diff --git a/components/search_engines/template_url_service.h b/components/searc diff --git a/content/browser/webui/web_ui_impl.cc b/content/browser/webui/web_ui_impl.cc --- a/content/browser/webui/web_ui_impl.cc +++ b/content/browser/webui/web_ui_impl.cc -@@ -255,6 +255,10 @@ void WebUIImpl::RegisterMessageCallback(std::string_view message, +@@ -246,6 +246,10 @@ void WebUIImpl::RegisterMessageCallback(std::string_view message, message_callbacks_.emplace(message, std::move(callback)); } @@ -1908,17 +1909,15 @@ diff --git a/content/browser/webui/web_ui_impl.cc b/content/browser/webui/web_ui void WebUIImpl::ProcessWebUIMessage(const GURL& source_url, const std::string& message, base::Value::List args) { -@@ -268,9 +272,15 @@ void WebUIImpl::ProcessWebUIMessage(const GURL& source_url, +@@ -259,8 +263,14 @@ void WebUIImpl::ProcessWebUIMessage(const GURL& source_url, return; } -- DUMP_WILL_BE_NOTREACHED_NORETURN() -- << "Unhandled chrome.send(\"" << message << "\", " << args << "); from " -- << source_url; +- DUMP_WILL_BE_NOTREACHED() << "Unhandled chrome.send(\"" << message << "\", " +- << args << "); from " << source_url; + if (!do_not_crash_on_unhandled_message_) { -+ DUMP_WILL_BE_NOTREACHED_NORETURN() -+ << "Unhandled chrome.send(\"" << message << "\", " << args << "); from " -+ << source_url; ++ DUMP_WILL_BE_NOTREACHED() << "Unhandled chrome.send(\"" << message << "\", " ++ << args << "); from " << source_url; + } else { + DLOG(INFO) + << "---Unhandled chrome.send(\"" << message << "\", " << args << "); from " @@ -1930,7 +1929,7 @@ diff --git a/content/browser/webui/web_ui_impl.cc b/content/browser/webui/web_ui diff --git a/content/browser/webui/web_ui_impl.h b/content/browser/webui/web_ui_impl.h --- a/content/browser/webui/web_ui_impl.h +++ b/content/browser/webui/web_ui_impl.h -@@ -83,6 +83,7 @@ class CONTENT_EXPORT WebUIImpl : public WebUI, public mojom::WebUIHost { +@@ -80,6 +80,7 @@ class CONTENT_EXPORT WebUIImpl : public WebUI, public mojom::WebUIHost { void ProcessWebUIMessage(const GURL& source_url, const std::string& message, base::Value::List args) override; @@ -1938,7 +1937,7 @@ diff --git a/content/browser/webui/web_ui_impl.h b/content/browser/webui/web_ui_ bool CanCallJavascript() override; void CallJavascriptFunctionUnsafe(std::string_view function_name) override; void CallJavascriptFunctionUnsafe( -@@ -154,6 +155,8 @@ class CONTENT_EXPORT WebUIImpl : public WebUI, public mojom::WebUIHost { +@@ -151,6 +152,8 @@ class CONTENT_EXPORT WebUIImpl : public WebUI, public mojom::WebUIHost { std::unique_ptr controller_; @@ -2099,7 +2098,7 @@ diff --git a/ui/webui/resources/cr_elements/cr_dialog/cr_dialog.css b/ui/webui/r diff --git a/ui/webui/resources/cr_elements/cr_shared_vars.css b/ui/webui/resources/cr_elements/cr_shared_vars.css --- a/ui/webui/resources/cr_elements/cr_shared_vars.css +++ b/ui/webui/resources/cr_elements/cr_shared_vars.css -@@ -226,6 +226,10 @@ html { +@@ -228,6 +228,10 @@ html { --cr-form-field-label-line-height: 1; } diff --git a/build/patches/Internal-firewall.patch b/build/patches/Internal-firewall.patch index 0d22a37a..0ab9977a 100644 --- a/build/patches/Internal-firewall.patch +++ b/build/patches/Internal-firewall.patch @@ -59,7 +59,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2608,6 +2608,7 @@ static_library("browser") { +@@ -2575,6 +2575,7 @@ static_library("browser") { "//third_party/ungoogled:switches", "//services/device/public/mojom", "//services/device/public/mojom:usb", @@ -81,7 +81,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/download/android/download_controller.cc b/chrome/browser/download/android/download_controller.cc --- a/chrome/browser/download/android/download_controller.cc +++ b/chrome/browser/download/android/download_controller.cc -@@ -164,6 +164,36 @@ bool ShouldOpenPdfInline(DownloadItem* item) { +@@ -170,6 +170,36 @@ bool ShouldOpenPdfInline(DownloadItem* item) { !item->IsMustDownload() && item->IsTransient(); } @@ -118,7 +118,7 @@ diff --git a/chrome/browser/download/android/download_controller.cc b/chrome/bro } // namespace static void JNI_DownloadController_OnAcquirePermissionResult( -@@ -210,7 +240,7 @@ static void JNI_DownloadController_DownloadUrl(JNIEnv* env, +@@ -216,7 +246,7 @@ static void JNI_DownloadController_DownloadUrl(JNIEnv* env, if (download_manager) { auto dl_params = std::make_unique( GURL(url), @@ -130,7 +130,7 @@ diff --git a/chrome/browser/download/android/download_controller.cc b/chrome/bro diff --git a/chrome/browser/offline_pages/android/downloads/offline_page_download_bridge.cc b/chrome/browser/offline_pages/android/downloads/offline_page_download_bridge.cc --- a/chrome/browser/offline_pages/android/downloads/offline_page_download_bridge.cc +++ b/chrome/browser/offline_pages/android/downloads/offline_page_download_bridge.cc -@@ -268,13 +268,43 @@ content::WebContents::Getter GetWebContentsGetter( +@@ -270,13 +270,43 @@ content::WebContents::Getter GetWebContentsGetter( web_contents->GetPrimaryMainFrame()->GetRoutingID()); } @@ -289,7 +289,7 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1047,6 +1047,7 @@ component("net") { +@@ -1049,6 +1049,7 @@ component("net") { "//build:chromeos_buildflags", "//components/miracle_parameter/common", "//net/http:transport_security_state_generated_files", @@ -300,7 +300,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn diff --git a/net/traffic_annotation/network_traffic_annotation.h b/net/traffic_annotation/network_traffic_annotation.h --- a/net/traffic_annotation/network_traffic_annotation.h +++ b/net/traffic_annotation/network_traffic_annotation.h -@@ -373,10 +373,6 @@ struct MutablePartialNetworkTrafficAnnotationTag { +@@ -378,10 +378,6 @@ struct MutablePartialNetworkTrafficAnnotationTag { } // namespace net // Placeholder for unannotated usages. @@ -314,7 +314,7 @@ diff --git a/net/traffic_annotation/network_traffic_annotation.h b/net/traffic_a diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -337,6 +337,9 @@ URLRequestHttpJob::URLRequestHttpJob( +@@ -391,6 +391,9 @@ URLRequestHttpJob::URLRequestHttpJob( : URLRequestJob(request), http_user_agent_settings_(http_user_agent_settings) { ResetTimer(); @@ -324,7 +324,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque } URLRequestHttpJob::~URLRequestHttpJob() { -@@ -623,6 +626,18 @@ void URLRequestHttpJob::MaybeStartTransactionInternal(int result) { +@@ -677,6 +680,18 @@ void URLRequestHttpJob::MaybeStartTransactionInternal(int result) { void URLRequestHttpJob::StartTransactionInternal() { DCHECK(!override_response_headers_); @@ -1647,7 +1647,7 @@ new file mode 100644 diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -93,6 +93,7 @@ +@@ -94,6 +94,7 @@ #include "net/url_request/url_request.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_context_builder.h" @@ -1655,7 +1655,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont #include "services/network/brokered_client_socket_factory.h" #include "services/network/cookie_manager.h" #include "services/network/cors/cors_url_loader_factory.h" -@@ -1619,6 +1620,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { +@@ -1680,6 +1681,9 @@ void NetworkContext::OnNewSCTAuditingReportSent() { void NetworkContext::CreateUDPSocket( mojo::PendingReceiver receiver, mojo::PendingRemote listener) { @@ -1665,7 +1665,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateUDPSocket(std::move(receiver), std::move(listener)); } -@@ -1631,6 +1635,17 @@ void NetworkContext::CreateRestrictedUDPSocket( +@@ -1692,6 +1696,17 @@ void NetworkContext::CreateRestrictedUDPSocket( mojo::PendingRemote listener, CreateRestrictedUDPSocketCallback callback) { // SimpleHostResolver is transitively owned by |this|. @@ -1683,7 +1683,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateRestrictedUDPSocket( addr, mode, traffic_annotation, std::move(params), std::move(receiver), std::move(listener), SimpleHostResolver::Create(this), -@@ -1643,6 +1658,17 @@ void NetworkContext::CreateTCPServerSocket( +@@ -1704,6 +1719,17 @@ void NetworkContext::CreateTCPServerSocket( const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, mojo::PendingReceiver receiver, CreateTCPServerSocketCallback callback) { @@ -1701,7 +1701,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPServerSocket( local_addr, std::move(options), static_cast(traffic_annotation), -@@ -1657,6 +1683,21 @@ void NetworkContext::CreateTCPConnectedSocket( +@@ -1718,6 +1744,21 @@ void NetworkContext::CreateTCPConnectedSocket( mojo::PendingReceiver receiver, mojo::PendingRemote observer, CreateTCPConnectedSocketCallback callback) { @@ -1723,7 +1723,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPConnectedSocket( local_addr, remote_addr_list, std::move(tcp_connected_socket_options), static_cast(traffic_annotation), -@@ -1668,6 +1709,20 @@ void NetworkContext::CreateTCPBoundSocket( +@@ -1729,6 +1770,20 @@ void NetworkContext::CreateTCPBoundSocket( const net::MutableNetworkTrafficAnnotationTag& traffic_annotation, mojo::PendingReceiver receiver, CreateTCPBoundSocketCallback callback) { @@ -1744,7 +1744,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont socket_factory_->CreateTCPBoundSocket( local_addr, static_cast(traffic_annotation), -@@ -1734,6 +1789,24 @@ void NetworkContext::CreateWebSocket( +@@ -1795,6 +1850,24 @@ void NetworkContext::CreateWebSocket( mojo::PendingRemote auth_handler, mojo::PendingRemote header_client, const std::optional& throttling_profile_id) { @@ -1772,7 +1772,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont diff --git a/services/network/public/cpp/simple_url_loader.cc b/services/network/public/cpp/simple_url_loader.cc --- a/services/network/public/cpp/simple_url_loader.cc +++ b/services/network/public/cpp/simple_url_loader.cc -@@ -1276,6 +1276,8 @@ SimpleURLLoaderImpl::SimpleURLLoaderImpl( +@@ -1277,6 +1277,8 @@ SimpleURLLoaderImpl::SimpleURLLoaderImpl( timeout_timer_(timeout_tick_clock_) { // Allow creation and use on different threads. DETACH_FROM_SEQUENCE(sequence_checker_); @@ -1781,7 +1781,7 @@ diff --git a/services/network/public/cpp/simple_url_loader.cc b/services/network #if DCHECK_IS_ON() if (resource_request_->request_body) { for (const DataElement& element : -@@ -1717,6 +1719,22 @@ void SimpleURLLoaderImpl::StartRequest( +@@ -1724,6 +1726,22 @@ void SimpleURLLoaderImpl::StartRequest( resource_request_->request_body->AppendDataPipe( string_upload_data_pipe_getter_->GetRemoteForNewUpload()); } @@ -1815,7 +1815,7 @@ diff --git a/services/network/public/cpp/simple_url_loader.h b/services/network/ class GURL; -@@ -408,6 +409,8 @@ class COMPONENT_EXPORT(NETWORK_CPP) SimpleURLLoader { +@@ -413,6 +414,8 @@ class COMPONENT_EXPORT(NETWORK_CPP) SimpleURLLoader { protected: SimpleURLLoader(); @@ -1833,7 +1833,7 @@ diff --git a/third_party/blink/renderer/platform/loader/fetch/fetch_utils.cc b/t case network::mojom::RequestDestination::kFencedframe: - case network::mojom::RequestDestination::kWebIdentity: - case network::mojom::RequestDestination::kSharedStorageWorklet: - NOTREACHED(); + NOTREACHED_IN_MIGRATION(); [[fallthrough]]; + // Split destination with new annotations diff --git a/build/patches/Keep-ComputePressure-disabled.patch b/build/patches/Keep-ComputePressure-disabled.patch index d899e245..65b0642e 100644 --- a/build/patches/Keep-ComputePressure-disabled.patch +++ b/build/patches/Keep-ComputePressure-disabled.patch @@ -4,18 +4,21 @@ Subject: Keep ComputePressure disabled License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../blink/renderer/platform/runtime_enabled_features.json5 | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) + .../renderer/platform/runtime_enabled_features.json5 | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -699,8 +699,9 @@ +@@ -707,11 +707,9 @@ + status: "experimental", }, { - // Shipping in M125. Should be removed after M127. - name: "ComputePressure", -- status: "stable", +- status: { +- "Android": "", +- "default": "stable", +- } + name: "ComputePressure", // disabled + status: "experimental", // by default + public: true, diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index efce068d..4f55ae94 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -25,7 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tab_management/TabGroupUiViewBinder.java | 3 + .../TabListContainerViewBinder.java | 15 +- .../tab_management/TabListCoordinator.java | 151 +++++++++++++++++- - .../TabListEmptyCoordinator.java | 7 +- + .../TabListEmptyCoordinator.java | 8 + .../tab_management/TabListRecyclerView.java | 19 ++- .../tab_management/TabSwitcherMediator.java | 27 +++- .../settings/AccessibilitySettings.java | 26 +++ @@ -46,7 +46,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../modaldialog/ChromeTabModalPresenter.java | 2 +- .../chrome/browser/ntp/NewTabPage.java | 14 +- .../chrome/browser/ntp/NewTabPageLayout.java | 8 + - .../chrome/browser/ntp/RecentTabsPage.java | 26 ++- + .../chrome/browser/ntp/RecentTabsPage.java | 30 +++- .../browser/searchwidget/SearchActivity.java | 13 +- .../browser/settings/SettingsActivity.java | 5 + .../StatusIndicatorCoordinator.java | 9 ++ @@ -65,8 +65,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/ui/appmenu/AppMenu.java | 40 ++++- .../ui/appmenu/AppMenuHandlerImpl.java | 10 ++ .../omnibox/LocationBarCoordinator.java | 7 +- - ...mniboxSuggestionsDropdownEmbedderImpl.java | 24 ++- - .../suggestions/AutocompleteCoordinator.java | 16 +- + ...mniboxSuggestionsDropdownEmbedderImpl.java | 18 ++- + .../suggestions/AutocompleteCoordinator.java | 13 ++ .../suggestions/AutocompleteMediator.java | 6 +- .../DropdownItemViewInfoListManager.java | 7 +- .../OmniboxSuggestionsDropdown.java | 39 ++++- @@ -88,13 +88,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../AccessibilitySettingsDelegate.java | 7 + .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 17 ++ - 75 files changed, 1023 insertions(+), 90 deletions(-) + 75 files changed, 1023 insertions(+), 86 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc diff --git a/cc/base/features.cc b/cc/base/features.cc --- a/cc/base/features.cc +++ b/cc/base/features.cc -@@ -36,6 +36,14 @@ BASE_FEATURE(kSynchronizedScrolling, +@@ -38,6 +38,14 @@ BASE_FEATURE(kSynchronizedScrolling, base::FEATURE_ENABLED_BY_DEFAULT); #endif @@ -112,7 +112,7 @@ diff --git a/cc/base/features.cc b/cc/base/features.cc diff --git a/cc/base/features.h b/cc/base/features.h --- a/cc/base/features.h +++ b/cc/base/features.h -@@ -15,6 +15,8 @@ namespace features { +@@ -17,6 +17,8 @@ namespace features { CC_BASE_EXPORT BASE_DECLARE_FEATURE(kAnimatedImageResume); CC_BASE_EXPORT extern bool IsImpulseScrollAnimationEnabled(); CC_BASE_EXPORT BASE_DECLARE_FEATURE(kSynchronizedScrolling); @@ -124,7 +124,7 @@ diff --git a/cc/base/features.h b/cc/base/features.h diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_controls_offset_manager.cc --- a/cc/input/browser_controls_offset_manager.cc +++ b/cc/input/browser_controls_offset_manager.cc -@@ -17,6 +17,7 @@ +@@ -20,6 +20,7 @@ #include "ui/gfx/animation/tween.h" #include "ui/gfx/geometry/transform.h" #include "ui/gfx/geometry/vector2d_f.h" @@ -132,7 +132,7 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont namespace cc { namespace { -@@ -484,6 +485,11 @@ gfx::Vector2dF BrowserControlsOffsetManager::ScrollBy( +@@ -496,6 +497,11 @@ gfx::Vector2dF BrowserControlsOffsetManager::ScrollBy( // content. If the top controls have no height, the content should scroll // immediately. gfx::Vector2dF applied_delta(0.f, old_top_offset - ContentTopOffset()); @@ -147,7 +147,7 @@ diff --git a/cc/input/browser_controls_offset_manager.cc b/cc/input/browser_cont diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc -@@ -4332,6 +4332,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { +@@ -4448,6 +4448,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { if (scroll_delta.IsZero()) return false; @@ -160,7 +160,7 @@ diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java --- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java +++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java -@@ -108,6 +108,8 @@ import org.chromium.url.GURL; +@@ -105,6 +105,8 @@ import org.chromium.url.GURL; import java.util.List; @@ -169,7 +169,7 @@ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/ /** The mediator implements the logic to interact with the surfaces and caller. */ class StartSurfaceMediator implements TabSwitcher.TabSwitcherViewObserver, -@@ -974,6 +976,8 @@ class StartSurfaceMediator +@@ -968,6 +970,8 @@ class StartSurfaceMediator } private void setTopMargin(int topMargin) { @@ -181,7 +181,7 @@ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java -@@ -43,6 +43,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -38,6 +38,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import org.chromium.ui.resources.dynamics.DynamicResourceLoader; @@ -189,7 +189,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import java.util.List; -@@ -168,7 +169,8 @@ public class TabGroupUiCoordinator +@@ -153,7 +154,8 @@ public class TabGroupUiCoordinator public void initializeWithNative( Activity activity, BottomControlsCoordinator.BottomControlsVisibilityController visibilityController, @@ -199,7 +199,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser var currentTabModelFilterSupplier = mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilterSupplier(); try (TraceEvent e = TraceEvent.scoped("TabGroupUiCoordinator.initializeWithNative")) { -@@ -228,7 +230,8 @@ public class TabGroupUiCoordinator +@@ -211,7 +213,8 @@ public class TabGroupUiCoordinator mLayoutStateProviderSupplier, mIncognitoStateProvider, mTabGridDialogControllerSupplier, @@ -208,7 +208,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + topUiThemeColorProvider, tabSupplier); TabGroupUtils.startObservingForCreationIPH(); - + } diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiMediator.java @@ -335,7 +335,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser void setupLeftButtonOnClickListener(View.OnClickListener listener) { mModel.set(TabGroupUiProperties.LEFT_BUTTON_ON_CLICK_LISTENER, listener); } -@@ -526,6 +575,7 @@ public class TabGroupUiMediator implements BackPressHandler { +@@ -524,6 +573,7 @@ public class TabGroupUiMediator implements BackPressHandler { } public void destroy() { @@ -479,7 +479,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import android.graphics.Rect; import android.util.Size; import android.view.LayoutInflater; -@@ -59,6 +63,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; +@@ -58,6 +62,8 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; import org.chromium.ui.resources.dynamics.DynamicResourceLoader; import org.chromium.ui.widget.ViewLookupCachingFrameLayout; @@ -617,7 +617,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * Construct a coordinator for UI that shows a list of tabs. * -@@ -363,6 +491,12 @@ public class TabListCoordinator +@@ -355,6 +483,12 @@ public class TabListCoordinator checkAwaitingLayout(); } }; @@ -630,7 +630,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mRecyclerView.setLayoutManager(gridLayoutManager); mMediator.registerOrientationListener(gridLayoutManager); mMediator.updateSpanCount( -@@ -374,8 +508,7 @@ public class TabListCoordinator +@@ -366,8 +500,7 @@ public class TabListCoordinator .getDecorView() .getWindowVisibleDisplayFrame(frame); updateGridCardLayout(frame.width()); @@ -640,7 +640,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser LinearLayoutManager layoutManager = new LinearLayoutManager( context, -@@ -390,6 +523,17 @@ public class TabListCoordinator +@@ -382,6 +515,17 @@ public class TabListCoordinator } }; mRecyclerView.setLayoutManager(layoutManager); @@ -658,7 +658,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } mMediator.setRecyclerViewItemAnimationToggle(mRecyclerView::setDisableItemAnimations); } -@@ -699,6 +843,9 @@ public class TabListCoordinator +@@ -708,6 +852,9 @@ public class TabListCoordinator void prepareTabSwitcherView() { registerLayoutChangeListener(); mRecyclerView.prepareTabSwitcherView(); @@ -671,7 +671,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListEmptyCoordinator.java -@@ -15,6 +15,7 @@ import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider +@@ -13,6 +13,7 @@ import android.widget.TextView; import org.chromium.chrome.tab_ui.R; import org.chromium.ui.modelutil.ListObservable; import org.chromium.ui.modelutil.ListObservable.ListObserver; @@ -679,19 +679,20 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * Empty coordinator that is responsible for showing an empty state view in tab switcher when we are -@@ -131,7 +132,11 @@ class TabListEmptyCoordinator { - int toolbarHeightPx = mBrowserControlsStateProvider.getTopControlsHeight(); - FrameLayout.LayoutParams emptyViewParams = - (FrameLayout.LayoutParams) mEmptyView.getLayoutParams(); -- emptyViewParams.topMargin = toolbarHeightPx; +@@ -121,6 +122,13 @@ class TabListEmptyCoordinator { + public void attachEmptyView() { + if (mEmptyView != null && mEmptyView.getParent() == null) { + mRootView.addView(mEmptyView); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { ++ FrameLayout.LayoutParams emptyViewParams = ++ (FrameLayout.LayoutParams) mEmptyView.getLayoutParams(); ++ int toolbarHeightPx = mBrowserControlsStateProvider.getTopControlsHeight(); + emptyViewParams.bottomMargin = toolbarHeightPx; -+ } else { -+ emptyViewParams.topMargin = toolbarHeightPx; ++ mEmptyView.setLayoutParams(emptyViewParams); + } - mEmptyView.setLayoutParams(emptyViewParams); } setEmptyViewVisibility(View.GONE); + } diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java @@ -978,7 +979,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -253,6 +253,9 @@ import org.chromium.webapk.lib.client.WebApkNavigationClient; +@@ -252,6 +252,9 @@ import org.chromium.webapk.lib.client.WebApkNavigationClient; import java.util.ArrayList; import java.util.List; @@ -988,7 +989,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv /** * A {@link AsyncInitializationActivity} that builds and manages a {@link CompositorViewHolder} * and associated classes. -@@ -873,6 +876,16 @@ public abstract class ChromeActivity +@@ -866,6 +869,16 @@ public abstract class ChromeActivity controlContainer.initWithToolbar(toolbarLayoutId, DeviceFormFactor.isForceTabletUI() ? R.dimen.control_container_height_tabletui : 0); @@ -1048,7 +1049,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo import java.util.List; import java.util.concurrent.Callable; -@@ -310,7 +311,10 @@ public class LayoutManagerChrome extends LayoutManagerImpl +@@ -311,7 +312,10 @@ public class LayoutManagerChrome extends LayoutManagerImpl @Override public SwipeHandler createToolbarSwipeHandler(boolean supportSwipeDown) { @@ -1060,7 +1061,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } @Override -@@ -564,9 +568,11 @@ public class LayoutManagerChrome extends LayoutManagerImpl +@@ -566,9 +570,11 @@ public class LayoutManagerChrome extends LayoutManagerImpl private static final float SWIPE_RANGE_DEG = 25; private final boolean mSupportSwipeDown; @@ -1073,7 +1074,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } @Override -@@ -597,6 +603,10 @@ public class LayoutManagerChrome extends LayoutManagerImpl +@@ -599,6 +605,10 @@ public class LayoutManagerChrome extends LayoutManagerImpl if (mSupportSwipeDown && mScrollDirection == ScrollDirection.DOWN) { RecordUserAction.record("MobileToolbarSwipeOpenStackView"); showLayout(LayoutType.TAB_SWITCHER, true); @@ -1084,7 +1085,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } else if (mScrollDirection == ScrollDirection.LEFT || mScrollDirection == ScrollDirection.RIGHT) { startShowing(mToolbarSwipeLayout, true); -@@ -647,6 +657,8 @@ public class LayoutManagerChrome extends LayoutManagerImpl +@@ -650,6 +660,8 @@ public class LayoutManagerChrome extends LayoutManagerImpl direction = ScrollDirection.RIGHT; } else if (swipeAngle < 270 + SWIPE_RANGE_DEG && swipeAngle > 270 - SWIPE_RANGE_DEG) { direction = ScrollDirection.DOWN; @@ -1093,7 +1094,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo } return direction; -@@ -663,7 +675,8 @@ public class LayoutManagerChrome extends LayoutManagerImpl +@@ -666,7 +678,8 @@ public class LayoutManagerChrome extends LayoutManagerImpl return direction == ScrollDirection.DOWN || direction == ScrollDirection.LEFT @@ -1106,7 +1107,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/LayoutManagerChromeTablet.java -@@ -38,6 +38,7 @@ import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator; +@@ -39,6 +39,7 @@ import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.dragdrop.DragAndDropDelegate; import org.chromium.ui.resources.dynamics.DynamicResourceLoader; @@ -1114,12 +1115,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo import java.util.concurrent.Callable; -@@ -142,7 +143,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { - browserControlsStateProvider, +@@ -145,7 +146,8 @@ public class LayoutManagerChromeTablet extends LayoutManagerChrome { windowAndroid, toolbarManager, -- desktopWindowStateProvider); -+ desktopWindowStateProvider, + desktopWindowStateProvider, +- actionConfirmationManager); ++ actionConfirmationManager, + /*browserControlsManagerSupplier*/ () -> getBrowserControlsManager()); addSceneOverlay(mTabStripLayoutHelperManager); addObserver(mTabStripLayoutHelperManager.getTabSwitcherObserver()); @@ -1165,7 +1166,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java -@@ -746,7 +746,7 @@ public class StripLayoutHelper implements StripLayoutTabDelegate, StripLayoutGro +@@ -775,7 +775,7 @@ public class StripLayoutHelper implements StripLayoutTabDelegate, StripLayoutGro boolean isRtl = LocalizationUtils.isLayoutRtl(); boolean useUnadjustedScrollOffset = isRtl != isLeft; float offset = @@ -1177,15 +1178,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -27,6 +27,7 @@ import androidx.annotation.VisibleForTesting; - import androidx.appcompat.content.res.AppCompatResources; +@@ -28,6 +28,7 @@ import androidx.appcompat.content.res.AppCompatResources; + import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.supplier.ObservableSupplier; +import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.LayerTitleCache; -@@ -88,6 +89,8 @@ import org.chromium.ui.interpolators.Interpolators; +@@ -90,6 +91,8 @@ import org.chromium.ui.interpolators.Interpolators; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.util.ColorUtils; import org.chromium.url.GURL; @@ -1194,7 +1195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.ArrayList; import java.util.List; -@@ -226,12 +229,16 @@ public class StripLayoutHelperManager +@@ -228,12 +231,16 @@ public class StripLayoutHelperManager // Drag-Drop @Nullable private TabDragSource mTabDragSource; @@ -1211,7 +1212,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton.onDown(x, y, fromMouse)) { return; } -@@ -254,6 +261,7 @@ public class StripLayoutHelperManager +@@ -256,6 +263,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1219,7 +1220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mModelSelectorButton.drag(x, y); getActiveStripLayoutHelper().drag(time(), x, y, dx); } -@@ -263,6 +271,7 @@ public class StripLayoutHelperManager +@@ -265,6 +273,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1227,7 +1228,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over long time = time(); if (mModelSelectorButton.click(x, y)) { mModelSelectorButton.handleClick(time); -@@ -276,6 +285,7 @@ public class StripLayoutHelperManager +@@ -278,6 +287,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1235,7 +1236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().fling(time(), x, y, velocityX, velocityY); } -@@ -284,6 +294,7 @@ public class StripLayoutHelperManager +@@ -286,6 +296,7 @@ public class StripLayoutHelperManager if (DragDropGlobalState.hasValue()) { return; } @@ -1243,26 +1244,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onLongPress(time(), x, y); } -@@ -385,7 +396,8 @@ public class StripLayoutHelperManager - // TODO(crbug.com/40939440): Avoid passing the ToolbarManager instance. Potentially +@@ -388,7 +399,8 @@ public class StripLayoutHelperManager // implement an interface to manage strip transition states. @NonNull ToolbarManager toolbarManager, -- @Nullable DesktopWindowStateProvider desktopWindowStateProvider) { -+ @Nullable DesktopWindowStateProvider desktopWindowStateProvider, + @Nullable DesktopWindowStateProvider desktopWindowStateProvider, +- ActionConfirmationManager actionConfirmationManager) { ++ ActionConfirmationManager actionConfirmationManager, + Supplier browserControlsManagerSupplier) { Resources res = context.getResources(); mUpdateHost = updateHost; mLayerTitleCacheSupplier = layerTitleCacheSupplier; -@@ -527,6 +539,8 @@ public class StripLayoutHelperManager - mTabDragSource, - toolbarContainerView, - windowAndroid); +@@ -534,6 +546,8 @@ public class StripLayoutHelperManager + windowAndroid, + actionConfirmationManager, + toolbarManager.getTabStripHeightSupplier().get()); + mBrowserControlsManagerSupplier = browserControlsManagerSupplier; + mDpToPx = context.getResources().getDisplayMetrics().density; tabHoverCardViewStub.setOnInflateListener( (viewStub, view) -> { -@@ -686,6 +700,10 @@ public class StripLayoutHelperManager +@@ -694,6 +708,10 @@ public class StripLayoutHelperManager // value. yOffset -= getHeight(); } @@ -1273,7 +1274,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mTabStripTreeProvider.pushAndUpdateStrip( this, mLayerTitleCacheSupplier.get(), -@@ -699,7 +717,9 @@ public class StripLayoutHelperManager +@@ -707,7 +725,9 @@ public class StripLayoutHelperManager scrimOpacity, mLeftPadding, mRightPadding, @@ -1284,7 +1285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over return mTabStripTreeProvider; } -@@ -758,11 +778,21 @@ public class StripLayoutHelperManager +@@ -763,11 +783,21 @@ public class StripLayoutHelperManager mLeftPadding, mRightPadding); @@ -1311,7 +1312,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java -@@ -16,6 +16,8 @@ import org.chromium.chrome.browser.tab_ui.TabContentManager; +@@ -17,6 +17,8 @@ import org.chromium.chrome.browser.tab_ui.TabContentManager; import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; @@ -1320,7 +1321,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen /** A SceneLayer to render a static tab. */ @JNINamespace("android") public class StaticTabSceneLayer extends SceneLayer { -@@ -48,7 +50,10 @@ public class StaticTabSceneLayer extends SceneLayer { +@@ -49,7 +51,10 @@ public class StaticTabSceneLayer extends SceneLayer { float y = model.get(LayoutTab.CONTENT_OFFSET) + model.get(LayoutTab.RENDER_Y) * LayoutTab.sDpToPx; @@ -1424,7 +1425,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/findinpage/Find diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/BrowserControlsManager.java -@@ -46,6 +46,8 @@ import org.chromium.ui.util.TokenHolder; +@@ -48,6 +48,8 @@ import org.chromium.ui.util.TokenHolder; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -1433,7 +1434,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow /** A class that manages browser control visibility and positioning. */ public class BrowserControlsManager implements ActivityStateListener, BrowserControlsSizer { // The amount of time to delay the control show request after returning to a once visible -@@ -431,6 +433,14 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon +@@ -464,6 +466,14 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon return mTopControlContainerHeight; } @@ -1448,7 +1449,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow @Override public int getTopControlsMinHeight() { return mTopControlsMinHeight; -@@ -497,6 +507,8 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon +@@ -530,6 +540,8 @@ public class BrowserControlsManager implements ActivityStateListener, BrowserCon @Override public float getTopVisibleContentOffset() { @@ -1512,15 +1513,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -112,6 +112,7 @@ import org.chromium.content_public.browser.NavigationController; - import org.chromium.ui.base.DeviceFormFactor; +@@ -114,6 +114,7 @@ import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; + import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.url.GURL; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import java.util.List; -@@ -672,11 +673,16 @@ public class NewTabPage +@@ -682,11 +683,16 @@ public class NewTabPage final int topControlsDistanceToRest = mBrowserControlsStateProvider.getContentOffset() - mBrowserControlsStateProvider.getTopControlsHeight(); @@ -1539,7 +1540,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) { layoutParams.topMargin = topMargin; -@@ -692,9 +698,7 @@ public class NewTabPage +@@ -702,9 +708,7 @@ public class NewTabPage * strip. */ private int getToolbarExtraYOffset() { @@ -1553,8 +1554,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. 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 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -18,6 +18,8 @@ import android.view.DragEvent; - import android.view.Gravity; +@@ -17,6 +17,8 @@ import android.util.AttributeSet; + import android.view.DragEvent; import android.view.LayoutInflater; import android.view.ViewStub; +import android.view.ViewGroup.LayoutParams; @@ -1562,7 +1563,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -@@ -199,6 +201,12 @@ public class NewTabPageLayout extends LinearLayout { +@@ -176,6 +178,12 @@ public class NewTabPageLayout extends LinearLayout { mMiddleSpacer = findViewById(R.id.ntp_middle_spacer); mFakeSearchBoxLayout = findViewById(R.id.search_box); insertSiteSectionView(); @@ -1578,7 +1579,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsPage.java -@@ -26,6 +26,7 @@ import org.chromium.components.browser_ui.styles.SemanticColorUtils; +@@ -25,6 +25,7 @@ import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.ViewUtils; @@ -1586,7 +1587,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP /** * The native recent tabs page. Lists recently closed tabs, open windows and tabs from the user's -@@ -99,7 +100,8 @@ public class RecentTabsPage +@@ -98,7 +99,8 @@ public class RecentTabsPage mView.addOnAttachStateChangeListener(this); @@ -1596,22 +1597,32 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP mBrowserControlsStateProvider = browserControlsStateProvider; mBrowserControlsStateProvider.addObserver(this); onBottomControlsHeightChanged( -@@ -111,7 +113,13 @@ public class RecentTabsPage +@@ -110,14 +112,22 @@ public class RecentTabsPage mTabStripHeightSupplier = tabStripHeightSupplier; mView.setPadding(0, mTabStripHeightSupplier.get(), 0, 0); -- if (ToolbarFeatures.isDynamicTopChromeEnabled()) { +- mTabStripHeightChangeCallback = + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + mView.setPadding( + mView.getPaddingLeft(), + 0, + mView.getPaddingRight(), + mView.getPaddingBottom()); -+ } else if (ToolbarFeatures.isDynamicTopChromeEnabled()) { - mTabStripHeightChangeCallback = - newHeight -> - mView.setPadding( -@@ -300,7 +308,7 @@ public class RecentTabsPage ++ } else { ++ mTabStripHeightChangeCallback = + newHeight -> + mView.setPadding( + mView.getPaddingLeft(), + newHeight, + mView.getPaddingRight(), + mView.getPaddingBottom()); +- mTabStripHeightSupplier.addObserver(mTabStripHeightChangeCallback); ++ mTabStripHeightSupplier.addObserver(mTabStripHeightChangeCallback); ++ } + + onUpdated(); + } +@@ -297,7 +307,7 @@ public class RecentTabsPage private void updateMargins() { final View recentTabsRoot = mView.findViewById(R.id.recent_tabs_root); @@ -1620,7 +1631,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP final int contentOffset = mBrowserControlsStateProvider.getContentOffset(); ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) recentTabsRoot.getLayoutParams(); -@@ -316,9 +324,17 @@ public class RecentTabsPage +@@ -313,9 +323,17 @@ public class RecentTabsPage // If the content offset is different from the margin, we use translationY to position the // view in line with the content offset. @@ -1655,7 +1666,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se import java.lang.ref.WeakReference; /** Queries the user's default search engine and shows autocomplete suggestions. */ -@@ -292,6 +297,12 @@ public class SearchActivity extends AsyncInitializationActivity +@@ -290,6 +295,12 @@ public class SearchActivity extends AsyncInitializationActivity (SearchActivityLocationBarLayout) contentView.findViewById(R.id.search_location_bar); View anchorView = contentView.findViewById(R.id.toolbar); @@ -1668,7 +1679,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se // Update the status bar's color based on the toolbar color. Drawable anchorViewBackground = anchorView.getBackground(); -@@ -308,7 +319,7 @@ public class SearchActivity extends AsyncInitializationActivity +@@ -306,7 +317,7 @@ public class SearchActivity extends AsyncInitializationActivity mLocationBarCoordinator = new LocationBarCoordinator( @@ -1680,7 +1691,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -372,6 +372,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -374,6 +374,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity if (fragment instanceof INeedSnackbarManager) { ((INeedSnackbarManager)fragment).setSnackbarManager(mSnackbarManager); } @@ -1689,8 +1700,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin + ((AccessibilitySettings) fragment) + .getDelegate()).setSnackbarManager(mSnackbarManager); + } - if (fragment instanceof ClearBrowsingDataFragment) { - ((ClearBrowsingDataFragment) fragment).setSnackbarManager(mSnackbarManager); + if (fragment instanceof AccountManagementFragment) { + ((AccountManagementFragment) fragment).setSnackbarManager(mSnackbarManager); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java @@ -1744,7 +1755,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -200,6 +200,9 @@ import org.chromium.url.GURL; +@@ -199,6 +199,9 @@ import org.chromium.url.GURL; import java.util.List; @@ -1752,9 +1763,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar +import android.view.Gravity; + /** - * Contains logic for managing the toolbar visual component. This class manages the interactions + * Contains logic for managing the toolbar visual component. This class manages the interactions * with the rest of the application to ensure the toolbar is always visually up to date. -@@ -866,7 +869,7 @@ public class ToolbarManager +@@ -863,7 +866,7 @@ public class ToolbarManager LocationBarCoordinator locationBarCoordinator = new LocationBarCoordinator( mActivity.findViewById(R.id.location_bar), @@ -1763,7 +1774,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar profileSupplier, PrivacyPreferencesManagerImpl.getInstance(), mLocationBarModel, -@@ -1175,6 +1178,7 @@ public class ToolbarManager +@@ -1176,6 +1179,7 @@ public class ToolbarManager // the height won't be measured by the background image. if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1771,7 +1782,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar } else if (mLayoutChangeListener == null) { mLayoutChangeListener = (view, -@@ -1188,6 +1192,7 @@ public class ToolbarManager +@@ -1189,6 +1193,7 @@ public class ToolbarManager oldBottom) -> { if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1779,7 +1790,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mControlContainer.removeOnLayoutChangeListener( mLayoutChangeListener); mLayoutChangeListener = null; -@@ -1363,6 +1368,13 @@ public class ToolbarManager +@@ -1365,6 +1370,13 @@ public class ToolbarManager public void setTabSwitcherFullScreenView(ViewGroup containerView) { ViewStub toolbarStub = containerView.findViewById(R.id.fullscreen_tab_switcher_toolbar_stub); @@ -1793,7 +1804,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mToolbar.setFullScreenToolbarStub(toolbarStub); } -@@ -1652,14 +1664,26 @@ public class ToolbarManager +@@ -1658,14 +1670,26 @@ public class ToolbarManager return ((LocationBarCoordinator) mLocationBar).getUrlBarTextWithoutAutocomplete(); } @@ -1819,11 +1830,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mActivity, - root.findViewById(R.id.bottom_container_slot), + mBottomRoot.findViewById(R.id.bottom_container_slot), - mBrowserControlsSizer, + mBrowserControlsVisibilityManager, mIncognitoStateProvider, mScrimCoordinator, -@@ -1684,7 +1708,7 @@ public class ToolbarManager - mBrowserControlsSizer, +@@ -1688,7 +1712,7 @@ public class ToolbarManager + mBottomControlsStacker, mFullscreenManager, mEdgeToEdgeControllerSupplier, - (ScrollingBottomViewResourceFrameLayout) root, @@ -1831,7 +1842,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mTabGroupUi, mTabObscuringHandler, mOverlayPanelVisibilitySupplier, -@@ -1692,7 +1716,8 @@ public class ToolbarManager +@@ -1696,7 +1720,8 @@ public class ToolbarManager /* readAloudRestoringSupplier= */ () -> { final var readAloud = mReadAloudControllerSupplier.get(); return readAloud != null && readAloud.isRestoringPlayer(); @@ -1841,7 +1852,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mBottomControlsCoordinatorSupplier.set(bottomControlsCoordinator); if (mBackPressManager != null) { mBackPressManager.addHandler( -@@ -2247,6 +2272,8 @@ public class ToolbarManager +@@ -2245,6 +2270,8 @@ public class ToolbarManager */ private int getToolbarExtraYOffset() { int toolbarHairlineHeight = mToolbarHairline.getHeight(); @@ -1850,7 +1861,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar final int controlContainerHeight = mControlContainer.getHeight(); // Offset can't be calculated if control container height isn't known yet. -@@ -2654,6 +2681,15 @@ public class ToolbarManager +@@ -2653,6 +2680,15 @@ public class ToolbarManager private void setControlContainerTopMargin(int margin) { final ViewGroup.MarginLayoutParams layoutParams = ((ViewGroup.MarginLayoutParams) mControlContainer.getLayoutParams()); @@ -1946,7 +1957,7 @@ diff --git a/chrome/browser/android/compositor/layer/toolbar_layer.cc b/chrome/b #include "cc/resources/scoped_ui_resource.h" #include "cc/slim/layer.h" #include "cc/slim/nine_patch_layer.h" -@@ -113,8 +114,13 @@ void ToolbarLayer::PushResource(int toolbar_resource_id, +@@ -115,8 +116,13 @@ void ToolbarLayer::PushResource(int toolbar_resource_id, debug_layer_->RemoveFromParent(); // Position the toolbar at the bottom of the space available for top controls. @@ -1959,21 +1970,21 @@ diff --git a/chrome/browser/android/compositor/layer/toolbar_layer.cc b/chrome/b + layer_->SetPosition( + gfx::PointF(x_offset, content_offset - layer_->bounds().height())); + } - } - int ToolbarLayer::GetIndexOfLayer(scoped_refptr layer) { + // TODO(peilinwang): update layer_ with offset_tag. + } diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc --- a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc +++ b/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc -@@ -21,6 +21,7 @@ +@@ -20,6 +20,7 @@ #include "ui/gfx/geometry/point_f.h" #include "ui/gfx/geometry/rounded_corners_f.h" #include "ui/gfx/geometry/transform.h" +#include "cc/base/features.h" - using base::android::JavaParamRef; - using base::android::JavaRef; -@@ -95,8 +96,10 @@ void TabStripSceneLayer::SetContentTree( + // Must come after all headers that specialize FromJniType() / ToJniType(). + #include "chrome/android/chrome_jni_headers/TabStripSceneLayer_jni.h" +@@ -97,8 +98,10 @@ void TabStripSceneLayer::SetContentTree( content_tree_ = content_tree; if (content_tree) { layer()->InsertChild(content_tree->layer(), 0); @@ -1986,7 +1997,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer } } } -@@ -145,7 +148,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -147,7 +150,12 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, jfloat right_padding, jfloat top_padding) { gfx::RectF content(0, y_offset, width, height); @@ -2000,7 +2011,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer tab_strip_layer_->SetBounds(gfx::Size(width, height)); tab_strip_layer_->SetBackgroundColor(SkColor4f::FromColor(background_color)); -@@ -157,7 +165,7 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, +@@ -159,7 +167,7 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, group_indicator_layer_->SetPosition(gfx::PointF(0, top_padding)); // Content tree should not be affected by tab strip scene layer visibility. @@ -2034,7 +2045,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider.java b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider.java --- a/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider.java +++ b/chrome/browser/browser_controls/android/java/src/org/chromium/chrome/browser/browser_controls/BrowserControlsStateProvider.java -@@ -64,6 +64,12 @@ public interface BrowserControlsStateProvider { +@@ -81,6 +81,12 @@ public interface BrowserControlsStateProvider { */ int getTopControlsHeight(); @@ -2080,8 +2091,8 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse +#include "cc/base/features.h" #include "chrome/browser/browser_features.h" #include "chrome/browser/flags/android/chrome_session_state.h" - #include "chrome/browser/flags/jni_headers/ChromeFeatureMap_jni.h" -@@ -237,6 +238,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { + #include "chrome/browser/notifications/chime/android/features.h" +@@ -250,6 +251,8 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kMultiInstanceApplicationStatusCleanup, &kNavBarColorMatchesTabBackground, &kNewTabSearchEngineUrlAndroid, @@ -2093,7 +2104,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -352,6 +352,10 @@ public abstract class ChromeFeatureList { +@@ -361,6 +361,10 @@ public abstract class ChromeFeatureList { "NavBarColorMatchesTabBackground"; public static final String NEW_TAB_SEARCH_ENGINE_URL_ANDROID = "NewTabSearchEngineUrlAndroid"; public static final String NOTIFICATION_ONE_TAP_UNSUBSCRIBE = "NotificationOneTapUnsubscribe"; @@ -2104,8 +2115,8 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant"; public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET = "NotificationPermissionBottomSheet"; -@@ -620,6 +624,10 @@ public abstract class ChromeFeatureList { - newCachedFlag(PRICE_INSIGHTS, false); +@@ -641,6 +645,10 @@ public abstract class ChromeFeatureList { + public static final CachedFlag sPriceInsights = newCachedFlag(PRICE_INSIGHTS, false); public static final CachedFlag sPrivacyGuideAndroid3 = newCachedFlag(PRIVACY_GUIDE_ANDROID_3, false); + public static final CachedFlag sDisableToolbarSwipeUp = @@ -2115,7 +2126,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sPrivacyGuidePreloadAndroid = newCachedFlag(PRIVACY_GUIDE_PRELOAD_ANDROID, false); public static final CachedFlag sOptimizationGuidePushNotifications = -@@ -743,6 +751,8 @@ public abstract class ChromeFeatureList { +@@ -767,6 +775,8 @@ public abstract class ChromeFeatureList { sPrivacyGuideAndroid3, sPrivacyGuidePreloadAndroid, sOptimizationGuidePushNotifications, @@ -2127,7 +2138,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -2285,7 +2285,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2383,7 +2383,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, #if BUILDFLAG(IS_ANDROID) registry->RegisterBooleanPref(prefs::kVirtualKeyboardResizesLayoutByDefault, @@ -2278,7 +2289,7 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java -@@ -90,6 +90,7 @@ public class LocationBarCoordinator +@@ -92,6 +92,7 @@ public class LocationBarCoordinator private StatusCoordinator mStatusCoordinator; private WindowDelegate mWindowDelegate; private WindowAndroid mWindowAndroid; @@ -2286,7 +2297,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private LocationBarMediator mLocationBarMediator; private View mUrlBar; private View mDeleteButton; -@@ -148,7 +149,7 @@ public class LocationBarCoordinator +@@ -149,7 +150,7 @@ public class LocationBarCoordinator */ public LocationBarCoordinator( View locationBarLayout, @@ -2303,12 +2314,12 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow Context context = mLocationBarLayout.getContext(); OneshotSupplierImpl templateUrlServiceSupplier = new OneshotSupplierImpl<>(); -@@ -197,7 +199,8 @@ public class LocationBarCoordinator - autocompleteAnchorView, +@@ -200,7 +202,8 @@ public class LocationBarCoordinator mLocationBarLayout, uiOverrides.isForcedPhoneStyleOmnibox(), -- baseChromeLayout); -+ baseChromeLayout, + baseChromeLayout, +- deferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight); ++ deferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight, + mContainerView); mUrlBar = mLocationBarLayout.findViewById(R.id.url_bar); @@ -2316,8 +2327,8 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl.java -@@ -22,6 +22,7 @@ import org.chromium.base.Callback; - import org.chromium.base.supplier.ObservableSupplierImpl; +@@ -23,6 +23,7 @@ import org.chromium.base.supplier.ObservableSupplierImpl; + import org.chromium.base.supplier.Supplier; import org.chromium.chrome.browser.omnibox.styles.OmniboxResourceProvider; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxSuggestionsDropdownEmbedder; +import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -2326,27 +2337,26 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.ui.base.WindowAndroid; @@ -42,6 +43,7 @@ class OmniboxSuggestionsDropdownEmbedderImpl private final @NonNull WindowAndroid mWindowAndroid; - private final @NonNull WindowDelegate mWindowDelegate; private final @NonNull View mAnchorView; -+ private final @NonNull View mContainerView; private final @NonNull View mAlignmentView; ++ private final @NonNull View mContainerView; private final boolean mForcePhoneStyleOmnibox; + private final Supplier mKeyboardHeightSupplier; private final @NonNull Context mContext; -@@ -74,10 +76,12 @@ class OmniboxSuggestionsDropdownEmbedderImpl - @NonNull View anchorView, +@@ -72,9 +74,11 @@ class OmniboxSuggestionsDropdownEmbedderImpl @NonNull View alignmentView, boolean forcePhoneStyleOmnibox, -- @Nullable View baseChromeLayout) { -+ @Nullable View baseChromeLayout, + @Nullable View baseChromeLayout, +- Supplier keyboardHeightSupplier) { ++ Supplier keyboardHeightSupplier, + @NonNull View containerView) { mWindowAndroid = windowAndroid; - mWindowDelegate = windowDelegate; mAnchorView = anchorView; + mContainerView = containerView; mAlignmentView = alignmentView; mForcePhoneStyleOmnibox = forcePhoneStyleOmnibox; - mContext = mAnchorView.getContext(); -@@ -99,6 +103,16 @@ class OmniboxSuggestionsDropdownEmbedderImpl + mKeyboardHeightSupplier = keyboardHeightSupplier; +@@ -97,6 +101,16 @@ class OmniboxSuggestionsDropdownEmbedderImpl mOmniboxAlignmentSupplier.removeObserver(obs); } @@ -2363,25 +2373,19 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow @Nullable @Override public OmniboxAlignment getCurrentAlignment() { -@@ -117,9 +131,11 @@ class OmniboxSuggestionsDropdownEmbedderImpl - mAnchorView.addOnLayoutChangeListener(this); - mAlignmentView.addOnLayoutChangeListener(this); - mAnchorView.getViewTreeObserver().addOnGlobalLayoutListener(this); -- mDeferredIMEWindowInsetApplicationCallback = -- new DeferredIMEWindowInsetApplicationCallback(this::recalculateOmniboxAlignment); -- mDeferredIMEWindowInsetApplicationCallback.attach(mWindowAndroid); -+ if (!ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { -+ mDeferredIMEWindowInsetApplicationCallback = -+ new DeferredIMEWindowInsetApplicationCallback(this::recalculateOmniboxAlignment); -+ mDeferredIMEWindowInsetApplicationCallback.attach(mWindowAndroid); -+ } - onConfigurationChanged(mContext.getResources().getConfiguration()); - recalculateOmniboxAlignment(); - } +@@ -243,6 +257,8 @@ class OmniboxSuggestionsDropdownEmbedderImpl + } + + int keyboardHeight = mKeyboardHeightSupplier.get(); ++ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) ++ keyboardHeight = 0; + + int windowHeight; + if (BuildInfo.getInstance().isAutomotive diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java -@@ -60,6 +60,7 @@ import org.chromium.ui.modelutil.LazyConstructionPropertyMcp; +@@ -63,6 +63,7 @@ import org.chromium.ui.modelutil.LazyConstructionPropertyMcp; import org.chromium.ui.modelutil.MVCListAdapter; import org.chromium.ui.modelutil.MVCListAdapter.ModelList; import org.chromium.ui.modelutil.PropertyModel; @@ -2389,30 +2393,25 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.ArrayList; import java.util.List; -@@ -76,6 +77,7 @@ public class AutocompleteCoordinator implements UrlFocusChangeListener, UrlTextC +@@ -81,6 +82,7 @@ public class AutocompleteCoordinator private @Nullable OmniboxSuggestionsDropdown mDropdown; private @NonNull ObserverList mScrollListenerList = new ObserverList<>(); + private final @NonNull OmniboxSuggestionsDropdownEmbedder mDropdownEmbedder; - public AutocompleteCoordinator( - @NonNull ViewGroup parent, -@@ -102,6 +104,7 @@ public class AutocompleteCoordinator implements UrlFocusChangeListener, UrlTextC - PropertyModel listModel = new PropertyModel(SuggestionListProperties.ALL_KEYS); + /** An observer watching for changes to the visual state of the omnibox suggestions. */ + public interface OmniboxSuggestionsVisualStateObserver { +@@ -117,6 +119,7 @@ public class AutocompleteCoordinator + Context context = parent.getContext(); + ModelList listItems = new ModelList(); - + mDropdownEmbedder = dropdownEmbedder; - listModel.set(SuggestionListProperties.EMBEDDER, dropdownEmbedder); - listModel.set(SuggestionListProperties.VISIBLE, false); - listModel.set(SuggestionListProperties.DRAW_OVER_ANCHOR, false); -@@ -194,9 +197,20 @@ public class AutocompleteCoordinator implements UrlFocusChangeListener, UrlTextC - private void onAsyncInflationComplete(ViewGroup container) { - OmniboxSuggestionsDropdown dropdown = - new OmniboxSuggestionsDropdown( -- context, mRecycledViewPool, forcePhoneStyleOmnibox); -+ context, mRecycledViewPool, forcePhoneStyleOmnibox, -+ mDropdownEmbedder); + PropertyModel listModel = + new PropertyModel.Builder(SuggestionListProperties.ALL_KEYS) + .with(SuggestionListProperties.EMBEDDER, dropdownEmbedder) +@@ -233,6 +236,16 @@ public class AutocompleteCoordinator + dropdown.forcePhoneStyleOmnibox(forcePhoneStyleOmnibox); dropdown.setAdapter(mAdapter); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + // make margins works @@ -2424,13 +2423,13 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow + ((ViewGroup.MarginLayoutParams) params).bottomMargin = + mDropdownEmbedder.getAnchorView().getMeasuredHeight(); + } - + mRecycledViewPool.ifPresent(p -> dropdown.setRecycledViewPool(p)); mHolder = new SuggestionListViewHolder(container, dropdown); for (int i = 0; i < mCallbacks.size(); i++) { diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java -@@ -69,6 +69,8 @@ import org.chromium.ui.modelutil.PropertyModel; +@@ -68,6 +68,8 @@ import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; @@ -2439,7 +2438,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; -@@ -1127,7 +1129,9 @@ class AutocompleteMediator +@@ -1151,7 +1153,9 @@ class AutocompleteMediator @Override public void onSuggestionDropdownScroll() { mSuggestionsListScrolled = true; @@ -2477,9 +2476,9 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdown.java -@@ -41,6 +41,9 @@ import org.chromium.ui.KeyboardVisibilityDelegate; - import org.chromium.ui.base.DeviceFormFactor; - import org.chromium.ui.base.ViewUtils; +@@ -44,6 +44,9 @@ import org.chromium.ui.base.ViewUtils; + + import java.util.Optional; +import android.graphics.Rect; +import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -2487,17 +2486,17 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /** A widget for showing a list of omnibox suggestions. */ public class OmniboxSuggestionsDropdown extends RecyclerView { /** -@@ -220,7 +223,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { - public OmniboxSuggestionsDropdown( - @NonNull Context context, - RecycledViewPool recycledViewPool, -- boolean forcePhoneStyleOmnibox) { -+ boolean forcePhoneStyleOmnibox, +@@ -232,7 +235,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { + * + * @param context Context used for contained views. + */ +- public OmniboxSuggestionsDropdown(@NonNull Context context, AttributeSet attrs) { ++ public OmniboxSuggestionsDropdown(@NonNull Context context, AttributeSet attrs, + @NonNull OmniboxSuggestionsDropdownEmbedder embedder) { - super(context, null, android.R.attr.dropDownListViewStyle); + super(context, attrs, android.R.attr.dropDownListViewStyle); setFocusable(true); setFocusableInTouchMode(true); -@@ -232,7 +236,6 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -242,7 +246,6 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { setItemAnimator(null); mLayoutScrollListener = new SuggestionLayoutScrollListener(context); @@ -2505,7 +2504,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow mSelectionController = new RecyclerViewSelectionController(mLayoutScrollListener); addOnChildAttachStateChangeListener(mSelectionController); -@@ -241,6 +244,20 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -251,6 +254,20 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_bottom); int paddingTop = resources.getDimensionPixelOffset(R.dimen.omnibox_suggestion_list_padding_top); @@ -2525,14 +2524,14 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow + setLayoutManager(mLayoutScrollListener); ViewCompat.setPaddingRelative(this, 0, paddingTop, 0, paddingBottom); - mStandardBgColor = -@@ -416,8 +433,16 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { + if (OmniboxFeatures.sAsyncViewInflation.isEnabled()) { +@@ -417,8 +434,16 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { + try (TraceEvent tracing = TraceEvent.scoped("OmniboxSuggestionsList.Measure"); TimingMetric metric = OmniboxMetrics.recordSuggestionListMeasureTime(); TimingMetric metric2 = OmniboxMetrics.recordSuggestionListMeasureWallTime()) { - OmniboxAlignment omniboxAlignment = mEmbedder.getCurrentAlignment(); -- maybeUpdateLayoutParams(omniboxAlignment.top); -- int availableViewportHeight = omniboxAlignment.height; -+ int top = omniboxAlignment.top; +- maybeUpdateLayoutParams(mOmniboxAlignment.top); +- int availableViewportHeight = mOmniboxAlignment.height; ++ int top = mOmniboxAlignment.top; + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + top = 0; + } @@ -2540,12 +2539,12 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow + boolean useAlignmentSpecifiedHeight = + !ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled(); + int availableViewportHeight = useAlignmentSpecifiedHeight -+ ? omniboxAlignment.height ++ ? mOmniboxAlignment.height + : calculateAvailableViewportHeight() - top; - int desiredWidth = omniboxAlignment.width; + int desiredWidth = mOmniboxAlignment.width; adjustHorizontalPosition(); notifyObserversIfViewportHeightChanged(availableViewportHeight); -@@ -437,6 +462,12 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -438,6 +463,12 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { } } @@ -2569,7 +2568,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import androidx.annotation.NonNull; import androidx.annotation.Nullable; -@@ -110,6 +111,13 @@ public interface OmniboxSuggestionsDropdownEmbedder { +@@ -109,6 +110,13 @@ public interface OmniboxSuggestionsDropdownEmbedder { @NonNull OmniboxAlignment getCurrentAlignment(); @@ -2580,13 +2579,13 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow + @NonNull + View getAnchorContainerView(); + - /** Return the delegate used to interact with the Window. */ - @NonNull - WindowDelegate getWindowDelegate(); + /** Return whether the suggestions are being rendered in the tablet UI. */ + boolean isTablet(); + 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 -@@ -1664,6 +1664,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1696,6 +1696,12 @@ Your Google account may have other forms of browsing history like searches and a Force Tablet Mode @@ -2602,7 +2601,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/android/toolbar/BUILD.gn b/chrome/browser/ui/android/toolbar/BUILD.gn --- a/chrome/browser/ui/android/toolbar/BUILD.gn +++ b/chrome/browser/ui/android/toolbar/BUILD.gn -@@ -178,6 +178,7 @@ android_library("java") { +@@ -177,6 +177,7 @@ android_library("java") { "//content/public/android:content_java", "//third_party/android_deps:material_design_java", "//third_party/androidx:androidx_annotation_annotation_experimental_java", @@ -2674,7 +2673,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * The root coordinator for the bottom controls component. This component is intended for use with -@@ -73,6 +75,8 @@ public class BottomControlsCoordinator implements BackPressHandler { +@@ -72,6 +74,8 @@ public class BottomControlsCoordinator implements BackPressHandler { * @param constraintsSupplier Used to access current constraints of the browser controls. * @param readAloudRestoringSupplier Supplier that returns true if Read Aloud is currently * restoring its player, e.g. after theme change. @@ -2683,7 +2682,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow */ @SuppressLint("CutPasteId") // Not actually cut and paste since it's View vs ViewGroup. public BottomControlsCoordinator( -@@ -88,7 +92,9 @@ public class BottomControlsCoordinator implements BackPressHandler { +@@ -87,7 +91,9 @@ public class BottomControlsCoordinator implements BackPressHandler { TabObscuringHandler tabObscuringHandler, ObservableSupplier overlayPanelVisibilitySupplier, ObservableSupplier constraintsSupplier, @@ -2694,7 +2693,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mRootFrameLayout = root; root.setConstraintsSupplier(constraintsSupplier); PropertyModel model = new PropertyModel(BottomControlsProperties.ALL_KEYS); -@@ -147,7 +153,8 @@ public class BottomControlsCoordinator implements BackPressHandler { +@@ -146,7 +152,8 @@ public class BottomControlsCoordinator implements BackPressHandler { mMediator.setBottomControlsColor(color); } }, @@ -2707,7 +2706,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/bottom/BottomControlsMediator.java -@@ -22,6 +22,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeSupplier.ChangeObse +@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeSupplier.ChangeObse import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modelutil.PropertyModel; @@ -2715,7 +2714,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * This class is responsible for reacting to events from the outside world, interacting with other -@@ -143,6 +144,12 @@ class BottomControlsMediator +@@ -148,6 +149,12 @@ class BottomControlsMediator } void setBottomControlsVisible(boolean visible) { @@ -2728,27 +2727,27 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mIsBottomControlsVisible = visible; updateCompositedViewVisibility(); updateAndroidViewVisibility(); -@@ -175,6 +182,7 @@ class BottomControlsMediator +@@ -181,6 +188,7 @@ class BottomControlsMediator int bottomOffset, int bottomControlsMinHeightOffset, boolean needsAnimate) { + mModel.set(BottomControlsProperties.TOPCONTROLSMINHEIGHT_OFFSET, topControlsMinHeightOffset); - int minHeight = mBrowserControlsSizer.getBottomControlsMinHeight(); + int minHeight = getBrowserControls().getBottomControlsMinHeight(); mModel.set(BottomControlsProperties.Y_OFFSET, bottomOffset - minHeight); -@@ -288,10 +296,12 @@ class BottomControlsMediator +@@ -296,10 +304,12 @@ class BottomControlsMediator && !mIsInSwipeLayout - && mBrowserControlsSizer.getBottomControlOffset() == 0; + && getBrowserControls().getBottomControlOffset() == 0; if (visible) { - // Translate view so that its bottom is aligned with browser controls min height. - mModel.set( - BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y, -- -mBrowserControlsSizer.getBottomControlsMinHeight()); +- -getBrowserControls().getBottomControlsMinHeight()); + if (!ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + // Translate view so that its bottom is aligned with browser controls min height. + mModel.set( + BottomControlsProperties.ANDROID_VIEW_TRANSLATE_Y, -+ -mBrowserControlsSizer.getBottomControlsMinHeight()); ++ -getBrowserControls().getBottomControlsMinHeight()); + } } mModel.set(BottomControlsProperties.ANDROID_VIEW_VISIBLE, visible); @@ -2903,9 +2902,9 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayProperties.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayProperties.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayProperties.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarOverlayProperties.java -@@ -46,6 +46,12 @@ public class TopToolbarOverlayProperties { - /** The current y offset of the top toolbar. */ - public static final WritableFloatPropertyKey CONTENT_OFFSET = new WritableFloatPropertyKey(); +@@ -51,6 +51,12 @@ public class TopToolbarOverlayProperties { + public static final WritableObjectPropertyKey TOOLBAR_OFFSET_TAG = + new WritableObjectPropertyKey<>(); + /** The current height of the main visible view. */ + public static final WritableFloatPropertyKey VIEWPORT_HEIGHT = new WritableFloatPropertyKey(); @@ -2916,17 +2915,17 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow public static final PropertyKey[] ALL_KEYS = new PropertyKey[] { ANONYMIZE, -@@ -58,5 +64,5 @@ public class TopToolbarOverlayProperties { - VISIBLE, +@@ -64,5 +70,5 @@ public class TopToolbarOverlayProperties { X_OFFSET, - CONTENT_OFFSET + CONTENT_OFFSET, + TOOLBAR_OFFSET_TAG - }; + , VIEWPORT_HEIGHT, TOOLBAR_HEIGHT}; } diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/top/TopToolbarSceneLayer.java -@@ -14,6 +14,7 @@ import org.chromium.components.browser_ui.widget.ClipDrawableProgressBar.Drawing +@@ -15,6 +15,7 @@ import org.chromium.components.browser_ui.widget.ClipDrawableProgressBar.Drawing import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.resources.ResourceManager; @@ -2934,7 +2933,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** A SceneLayer to render the top toolbar. This is the "view" piece of the top toolbar overlay. */ @JNINamespace("android") -@@ -39,6 +40,13 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { +@@ -40,6 +41,13 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { /** Push all information about the texture to native at once. */ private void pushProperties(PropertyModel model) { if (mResourceManagerSupplier.get() == null) return; @@ -2948,7 +2947,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow TopToolbarSceneLayerJni.get() .updateToolbarLayer( mNativePtr, -@@ -49,7 +57,7 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { +@@ -50,7 +58,7 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { model.get(TopToolbarOverlayProperties.URL_BAR_RESOURCE_ID), model.get(TopToolbarOverlayProperties.URL_BAR_COLOR), model.get(TopToolbarOverlayProperties.X_OFFSET), @@ -2956,7 +2955,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow + offsetY, model.get(TopToolbarOverlayProperties.SHOW_SHADOW), model.get(TopToolbarOverlayProperties.VISIBLE), - model.get(TopToolbarOverlayProperties.ANONYMIZE)); + model.get(TopToolbarOverlayProperties.ANONYMIZE), diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml --- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml +++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml @@ -3006,9 +3005,9 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ #include "base/threading/scoped_blocking_call.h" +#include "cc/base/features.h" #include "cc/base/math_util.h" + #include "cc/input/browser_controls_offset_tags_info.h" #include "cc/slim/layer.h" - #include "components/viz/common/features.h" -@@ -854,6 +855,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( +@@ -857,6 +858,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( // factor. Thus, |top_content_offset| in CSS pixels is also in DIPs. float top_content_offset = metadata.top_controls_height * metadata.top_controls_shown_ratio; diff --git a/build/patches/Partition-HSTS-cache-by-NAK.patch b/build/patches/Partition-HSTS-cache-by-NAK.patch index fc71ed30..589c70bc 100644 --- a/build/patches/Partition-HSTS-cache-by-NAK.patch +++ b/build/patches/Partition-HSTS-cache-by-NAK.patch @@ -10,8 +10,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../web_package/signed_exchange_handler.cc | 7 +- .../web_package/signed_exchange_handler.h | 2 + .../web_package/signed_exchange_loader.cc | 2 +- - net/http/transport_security_state.cc | 106 ++++++++++++------ - net/http/transport_security_state.h | 38 ++++--- + net/http/transport_security_state.cc | 109 ++++++++++++------ + net/http/transport_security_state.h | 38 +++--- net/quic/crypto/proof_verifier_chromium.cc | 5 +- net/quic/quic_chromium_client_session.cc | 2 +- net/socket/ssl_client_socket_impl.cc | 5 +- @@ -22,12 +22,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html services/network/network_context.cc | 31 +++-- services/network/network_context.h | 13 ++- .../public/mojom/network_context.mojom | 9 +- - 18 files changed, 170 insertions(+), 101 deletions(-) + 18 files changed, 172 insertions(+), 102 deletions(-) diff --git a/chrome/browser/ssl/https_upgrades_interceptor.cc b/chrome/browser/ssl/https_upgrades_interceptor.cc --- a/chrome/browser/ssl/https_upgrades_interceptor.cc +++ b/chrome/browser/ssl/https_upgrades_interceptor.cc -@@ -362,6 +362,7 @@ void HttpsUpgradesInterceptor::MaybeCreateLoader( +@@ -359,6 +359,7 @@ void HttpsUpgradesInterceptor::MaybeCreateLoader( network::mojom::NetworkContext* network_context = profile->GetDefaultStoragePartition()->GetNetworkContext(); network_context->IsHSTSActiveForHost( @@ -78,7 +78,7 @@ diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/ diff --git a/components/password_manager/core/browser/hsts_query.cc b/components/password_manager/core/browser/hsts_query.cc --- a/components/password_manager/core/browser/hsts_query.cc +++ b/components/password_manager/core/browser/hsts_query.cc -@@ -58,6 +58,7 @@ void PostHSTSQueryForHostAndNetworkContext( +@@ -59,6 +59,7 @@ void PostHSTSQueryForHostAndNetworkContext( scoped_refptr callback_helper = base::MakeRefCounted(std::move(callback)); network_context->IsHSTSActiveForHost( @@ -89,7 +89,7 @@ diff --git a/components/password_manager/core/browser/hsts_query.cc b/components diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/browser/web_package/signed_exchange_handler.cc --- a/content/browser/web_package/signed_exchange_handler.cc +++ b/content/browser/web_package/signed_exchange_handler.cc -@@ -89,6 +89,7 @@ using VerifyCallback = +@@ -94,6 +94,7 @@ using VerifyCallback = void VerifyCert(const scoped_refptr& certificate, const GURL& url, @@ -97,7 +97,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br const std::string& ocsp_result, const std::string& sct_list, int frame_tree_node_id, -@@ -110,7 +111,7 @@ void VerifyCert(const scoped_refptr& certificate, +@@ -115,7 +116,7 @@ void VerifyCert(const scoped_refptr& certificate, } network_context->VerifyCertForSignedExchange( @@ -106,7 +106,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br } std::string OCSPErrorToString(const bssl::OCSPVerifyResult& ocsp_result) { -@@ -173,6 +174,7 @@ SignedExchangeHandler::SignedExchangeHandler( +@@ -178,6 +179,7 @@ SignedExchangeHandler::SignedExchangeHandler( std::unique_ptr body, ExchangeHeadersCallback headers_callback, std::unique_ptr cert_fetcher_factory, @@ -114,7 +114,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br const std::optional outer_request_isolation_info, int load_flags, const net::IPEndPoint& remote_endpoint, -@@ -186,6 +188,7 @@ SignedExchangeHandler::SignedExchangeHandler( +@@ -191,6 +193,7 @@ SignedExchangeHandler::SignedExchangeHandler( source_(std::move(body)), cert_fetcher_factory_(std::move(cert_fetcher_factory)), devtools_proxy_(std::move(devtools_proxy)), @@ -122,7 +122,7 @@ diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/br outer_request_isolation_info_(std::move(outer_request_isolation_info)), load_flags_(load_flags), remote_endpoint_(remote_endpoint), -@@ -529,7 +532,7 @@ void SignedExchangeHandler::OnCertReceived( +@@ -534,7 +537,7 @@ void SignedExchangeHandler::OnCertReceived( // property, or const std::string& stapled_ocsp_response = unverified_cert_chain_->ocsp(); @@ -165,7 +165,7 @@ diff --git a/content/browser/web_package/signed_exchange_loader.cc b/content/bro diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc --- a/net/http/transport_security_state.cc +++ b/net/http/transport_security_state.cc -@@ -82,7 +82,7 @@ bool AddHash(const char* sha256_hash, HashValueVector* out) { +@@ -87,7 +87,7 @@ bool AddHash(const char* sha256_hash, HashValueVector* out) { // Converts |hostname| from dotted form ("www.google.com") to the form // used in DNS: "\x03www\x06google\x03com", lowercases that, and returns // the result. @@ -174,7 +174,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // We cannot perform the operations as detailed in the spec here as `host` // has already undergone IDN processing before it reached us. Thus, we // lowercase the input (probably redudnant since most input here has been -@@ -103,6 +103,29 @@ std::vector CanonicalizeHost(const std::string& host) { +@@ -108,6 +108,29 @@ std::vector CanonicalizeHost(const std::string& host) { return new_host.value(); } @@ -204,7 +204,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // PreloadResult is the result of resolving a specific name in the preloaded // data. struct PreloadResult { -@@ -194,7 +217,7 @@ bool DecodeHSTSPreload(const std::string& search_hostname, PreloadResult* out) { +@@ -199,7 +222,7 @@ bool DecodeHSTSPreload(const std::string& search_hostname, PreloadResult* out) { // Ensure that |search_hostname| is a valid hostname before // processing. @@ -213,7 +213,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ return false; } // Normalize any trailing '.' used for DNS suffix searches. -@@ -255,18 +278,19 @@ TransportSecurityState::TransportSecurityState( +@@ -260,18 +283,19 @@ TransportSecurityState::TransportSecurityState( // Both HSTS and HPKP cause fatal SSL errors, so return true if a // host has either. @@ -236,20 +236,32 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ dict.Set("should_upgrade_to_ssl", sts_state.ShouldUpgradeToSSL()); dict.Set("host_found_in_hsts_bypass_list", hsts_host_bypass_list_.find(host) != hsts_host_bypass_list_.end()); -@@ -274,31 +298,33 @@ base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam( +@@ -279,13 +303,14 @@ base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam( + } + + SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( ++ const NetworkAnonymizationKey& nak, + const std::string& host, + const NetLogWithSource& net_log) { + net_log.AddEvent( + NetLogEventType::TRANSPORT_SECURITY_STATE_SHOULD_UPGRADE_TO_SSL, +- [&] { return NetLogUpgradeToSSLParam(host); }); ++ [&] { return NetLogUpgradeToSSLParam(nak, host); }); + STSState sts_state; +- if (GetDynamicSTSState(host, &sts_state)) { ++ if (GetDynamicSTSState(nak, host, &sts_state)) { + if (sts_state.ShouldUpgradeToSSL()) { + // If the static state also requires an upgrade, the dynamic state didn't + // need to be used in the decision. +@@ -305,27 +330,29 @@ SSLUpgradeDecision TransportSecurityState::GetSSLUpgradeDecision( } bool TransportSecurityState::ShouldUpgradeToSSL( + const NetworkAnonymizationKey& nak, const std::string& host, const NetLogWithSource& net_log) { - STSState sts_state; - net_log.AddEvent( - NetLogEventType::TRANSPORT_SECURITY_STATE_SHOULD_UPGRADE_TO_SSL, -- [&] { return NetLogUpgradeToSSLParam(host); }); -- return GetSTSState(host, &sts_state) && sts_state.ShouldUpgradeToSSL(); -+ [&] { return NetLogUpgradeToSSLParam(nak, host); }); -+ return GetSTSState(nak, host, &sts_state) && sts_state.ShouldUpgradeToSSL(); +- return GetSSLUpgradeDecision(host, net_log) != SSLUpgradeDecision::kNoUpgrade; ++ return GetSSLUpgradeDecision(nak, host, net_log) != SSLUpgradeDecision::kNoUpgrade; } TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPins( @@ -277,7 +289,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } TransportSecurityState::CTRequirementsStatus -@@ -379,12 +405,13 @@ void TransportSecurityState::UpdatePinList( +@@ -406,12 +433,13 @@ void TransportSecurityState::UpdatePinList( } void TransportSecurityState::AddHSTSInternal( @@ -292,7 +304,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return; -@@ -408,13 +435,14 @@ void TransportSecurityState::AddHSTSInternal( +@@ -435,13 +463,14 @@ void TransportSecurityState::AddHSTSInternal( DirtyNotify(); } @@ -309,7 +321,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return; -@@ -459,10 +487,12 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins( +@@ -486,10 +515,12 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins( return PKPStatus::VIOLATED; } @@ -324,7 +336,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return false; -@@ -539,7 +569,8 @@ void TransportSecurityState::DirtyNotify() { +@@ -566,7 +597,8 @@ void TransportSecurityState::DirtyNotify() { delegate_->StateIsDirty(this); } @@ -334,7 +346,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ const std::string& value) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); -@@ -558,23 +589,25 @@ bool TransportSecurityState::AddHSTSHeader(const std::string& host, +@@ -585,23 +617,25 @@ bool TransportSecurityState::AddHSTSHeader(const std::string& host, upgrade_mode = STSState::MODE_FORCE_HTTPS; } @@ -365,7 +377,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } size_t TransportSecurityState::num_sts_entries() const { -@@ -592,9 +625,10 @@ TransportSecurityState::PKPStatus +@@ -619,9 +653,10 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPinsImpl( const HostPortPair& host_port_pair, bool is_issued_by_known_root, @@ -378,7 +390,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ // HasPublicKeyPins should have returned true in order for this method to have // been called. -@@ -635,7 +669,7 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host, +@@ -662,7 +697,7 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host, PreloadResult result; if (host_pins_.has_value()) { // Ensure that |host| is a valid hostname before processing. @@ -387,7 +399,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ return false; } // Normalize any trailing '.' used for DNS suffix searches. -@@ -718,21 +752,24 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host, +@@ -745,21 +780,24 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host, return false; } @@ -418,7 +430,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return false; -@@ -769,11 +806,12 @@ bool TransportSecurityState::GetDynamicSTSState(const std::string& host, +@@ -796,11 +834,12 @@ bool TransportSecurityState::GetDynamicSTSState(const std::string& host, return false; } @@ -436,7 +448,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_state.h --- a/net/http/transport_security_state.h +++ b/net/http/transport_security_state.h -@@ -280,13 +280,14 @@ class NET_EXPORT TransportSecurityState { +@@ -297,13 +297,14 @@ class NET_EXPORT TransportSecurityState { // primary public interface; direct access to STS and PKP states is best // left to tests. The caller needs to handle the optional pinning override // when is_issued_by_known_root is false. @@ -455,7 +467,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // Returns CT_REQUIREMENTS_NOT_MET if a connection violates CT policy // requirements: that is, if a connection to |host|, using the validated -@@ -370,7 +371,7 @@ class NET_EXPORT TransportSecurityState { +@@ -387,7 +388,7 @@ class NET_EXPORT TransportSecurityState { // // If an entry is deleted, the new state will be persisted through // the Delegate (if any). @@ -464,7 +476,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // Returns true and updates |*result| if |host| has dynamic or static // HSTS/HPKP (respectively) state. If multiple entries match |host|, dynamic -@@ -380,8 +381,8 @@ class NET_EXPORT TransportSecurityState { +@@ -397,8 +398,8 @@ class NET_EXPORT TransportSecurityState { // // Note that these methods are not const because they opportunistically remove // entries that have expired. @@ -475,7 +487,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // Returns true and updates |*result| iff |host| has static HSTS/HPKP // (respectively) state. If multiple entries match |host|, the most specific -@@ -395,22 +396,24 @@ class NET_EXPORT TransportSecurityState { +@@ -412,22 +413,24 @@ class NET_EXPORT TransportSecurityState { // // Note that these methods are not const because they opportunistically remove // entries that have expired. @@ -505,7 +517,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s const base::Time& expiry, bool include_subdomains, const HashValueVector& hashes); -@@ -448,7 +451,7 @@ class NET_EXPORT TransportSecurityState { +@@ -465,7 +468,7 @@ class NET_EXPORT TransportSecurityState { typedef std::map STSStateMap; typedef std::map PKPStateMap; @@ -514,7 +526,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // IsBuildTimely returns true if the current build is new enough ensure that // built in security information (i.e. HSTS preloading and pinning -@@ -458,7 +461,8 @@ class NET_EXPORT TransportSecurityState { +@@ -475,7 +478,8 @@ class NET_EXPORT TransportSecurityState { // Helper method for actually checking pins. PKPStatus CheckPublicKeyPinsImpl(const HostPortPair& host_port_pair, bool is_issued_by_known_root, @@ -524,7 +536,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // If a Delegate is present, notify it that the internal state has // changed. -@@ -468,11 +472,13 @@ class NET_EXPORT TransportSecurityState { +@@ -485,11 +489,13 @@ class NET_EXPORT TransportSecurityState { // any previous state for the |host|, including static entries. // // The new state for |host| is persisted using the Delegate (if any). @@ -543,7 +555,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_verifier_chromium.cc --- a/net/quic/crypto/proof_verifier_chromium.cc +++ b/net/quic/crypto/proof_verifier_chromium.cc -@@ -403,7 +403,8 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) { +@@ -412,7 +412,8 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) { transport_security_state_->CheckPublicKeyPins( HostPortPair(hostname_, port_), cert_verify_result.is_issued_by_known_root, @@ -553,7 +565,7 @@ diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_ switch (pin_validity) { case TransportSecurityState::PKPStatus::VIOLATED: result = ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN; -@@ -430,7 +431,7 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) { +@@ -439,7 +440,7 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) { verify_details_->is_fatal_cert_error = IsCertStatusError(cert_status) && result != ERR_CERT_KNOWN_INTERCEPTION_BLOCKED && @@ -565,7 +577,7 @@ diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_ diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc --- a/net/quic/quic_chromium_client_session.cc +++ b/net/quic/quic_chromium_client_session.cc -@@ -1444,7 +1444,7 @@ bool QuicChromiumClientSession::CanPool( +@@ -1450,7 +1450,7 @@ bool QuicChromiumClientSession::CanPool( return SpdySession::CanPool(transport_security_state_, ssl_info, *ssl_config_service_, session_key_.host(), @@ -577,7 +589,7 @@ diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_c diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc --- a/net/socket/ssl_client_socket_impl.cc +++ b/net/socket/ssl_client_socket_impl.cc -@@ -1188,7 +1188,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { +@@ -1193,7 +1193,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { TransportSecurityState::PKPStatus pin_validity = context_->transport_security_state()->CheckPublicKeyPins( host_and_port_, server_cert_verify_result_.is_issued_by_known_root, @@ -587,7 +599,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket switch (pin_validity) { case TransportSecurityState::PKPStatus::VIOLATED: server_cert_verify_result_.cert_status |= -@@ -1210,7 +1211,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { +@@ -1215,7 +1216,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { IsCertStatusError(server_cert_verify_result_.cert_status) && result != ERR_CERT_KNOWN_INTERCEPTION_BLOCKED && context_->transport_security_state()->ShouldSSLErrorsBeFatal( @@ -599,7 +611,7 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc -@@ -733,7 +733,8 @@ bool SpdySession::CanPool(TransportSecurityState* transport_security_state, +@@ -738,7 +738,8 @@ bool SpdySession::CanPool(TransportSecurityState* transport_security_state, const SSLInfo& ssl_info, const SSLConfigService& ssl_config_service, std::string_view old_hostname, @@ -609,7 +621,7 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc // Pooling is prohibited if the server cert is not valid for the new domain, // and for connections on which client certs were sent. It is also prohibited // when channel ID was sent if the hosts are from different eTLDs+1. -@@ -752,7 +753,7 @@ bool SpdySession::CanPool(TransportSecurityState* transport_security_state, +@@ -757,7 +758,7 @@ bool SpdySession::CanPool(TransportSecurityState* transport_security_state, // Port is left at 0 as it is never used. if (transport_security_state->CheckPublicKeyPins( HostPortPair(new_hostname, 0), ssl_info.is_issued_by_known_root, @@ -618,7 +630,7 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc TransportSecurityState::PKPStatus::VIOLATED) { return false; } -@@ -973,7 +974,8 @@ bool SpdySession::VerifyDomainAuthentication(std::string_view domain) const { +@@ -978,7 +979,8 @@ bool SpdySession::VerifyDomainAuthentication(std::string_view domain) const { return true; // This is not a secure session, so all domains are okay. return CanPool(transport_security_state_, ssl_info, *ssl_config_service_, @@ -628,7 +640,7 @@ diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc } void SpdySession::EnqueueStreamWrite( -@@ -3009,7 +3011,8 @@ void SpdySession::OnAltSvc( +@@ -3014,7 +3016,8 @@ void SpdySession::OnAltSvc( return; } if (!CanPool(transport_security_state_, ssl_info, *ssl_config_service_, @@ -678,17 +690,17 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -280,7 +280,8 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { - - TransportSecurityState* hsts = request->context()->transport_security_state(); - bool should_upgrade_to_ssl = -- hsts && hsts->ShouldUpgradeToSSL(url.host(), request->net_log()); -+ hsts && hsts->ShouldUpgradeToSSL(request->isolation_info().network_anonymization_key(), +@@ -333,7 +333,8 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { + if (TransportSecurityState* hsts = + request->context()->transport_security_state()) { + upgrade_decision = +- hsts->GetSSLUpgradeDecision(url.host(), request->net_log()); ++ hsts->GetSSLUpgradeDecision(request->isolation_info().network_anonymization_key(), + url.host(), request->net_log()); + } // Check for reasons not to return a URLRequestHttpJob. These don't apply to - // https and wss requests. -@@ -1106,7 +1107,7 @@ void URLRequestHttpJob::ProcessStrictTransportSecurityHeader() { +@@ -1151,7 +1152,7 @@ void URLRequestHttpJob::ProcessStrictTransportSecurityHeader() { HttpResponseHeaders* headers = GetResponseHeaders(); std::string value; if (headers->EnumerateHeader(nullptr, "Strict-Transport-Security", &value)) @@ -697,7 +709,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque } void URLRequestHttpJob::OnStartCompleted(int result) { -@@ -1176,7 +1177,7 @@ void URLRequestHttpJob::OnStartCompleted(int result) { +@@ -1221,7 +1222,7 @@ void URLRequestHttpJob::OnStartCompleted(int result) { TransportSecurityState* state = context->transport_security_state(); NotifySSLCertificateError( result, transaction_->GetResponseInfo()->ssl_info, @@ -709,7 +721,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -1822,6 +1822,7 @@ void NetworkContext::CreateHostResolver( +@@ -1883,6 +1883,7 @@ void NetworkContext::CreateHostResolver( void NetworkContext::VerifyCertForSignedExchange( const scoped_refptr& certificate, const GURL& url, @@ -717,7 +729,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont const std::string& ocsp_result, const std::string& sct_list, VerifyCertForSignedExchangeCallback callback) { -@@ -1832,6 +1833,7 @@ void NetworkContext::VerifyCertForSignedExchange( +@@ -1893,6 +1894,7 @@ void NetworkContext::VerifyCertForSignedExchange( pending_cert_verify->result = std::make_unique(); pending_cert_verify->certificate = certificate; pending_cert_verify->url = url; @@ -725,7 +737,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont pending_cert_verify->ocsp_result = ocsp_result; pending_cert_verify->sct_list = sct_list; net::CertVerifier* cert_verifier = -@@ -1876,17 +1878,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin( +@@ -1937,17 +1939,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin( std::move(callback).Run(); } @@ -748,7 +760,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont IsHSTSActiveForHostCallback callback) { net::TransportSecurityState* security_state = url_request_context_->transport_security_state(); -@@ -1896,10 +1900,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, +@@ -1957,10 +1961,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, return; } @@ -761,7 +773,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont GetHSTSStateCallback callback) { base::Value::Dict result; -@@ -1937,10 +1941,10 @@ void NetworkContext::GetHSTSState(const std::string& domain, +@@ -1998,10 +2002,10 @@ void NetworkContext::GetHSTSState(const std::string& domain, net::TransportSecurityState::STSState dynamic_sts_state; net::TransportSecurityState::PKPState dynamic_pkp_state; bool found_sts_dynamic = transport_security_state->GetDynamicSTSState( @@ -774,7 +786,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont if (found_sts_dynamic) { result.Set("dynamic_upgrade_mode", static_cast(dynamic_sts_state.upgrade_mode)); -@@ -1978,6 +1982,7 @@ void NetworkContext::GetHSTSState(const std::string& domain, +@@ -2039,6 +2043,7 @@ void NetworkContext::GetHSTSState(const std::string& domain, } void NetworkContext::DeleteDynamicDataForHost( @@ -782,7 +794,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont const std::string& host, DeleteDynamicDataForHostCallback callback) { net::TransportSecurityState* transport_security_state = -@@ -1988,7 +1993,7 @@ void NetworkContext::DeleteDynamicDataForHost( +@@ -2049,7 +2054,7 @@ void NetworkContext::DeleteDynamicDataForHost( } std::move(callback).Run( @@ -791,7 +803,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont } void NetworkContext::EnableStaticKeyPinningForTesting( -@@ -2029,7 +2034,7 @@ void NetworkContext::PreconnectSockets( +@@ -2090,7 +2095,7 @@ void NetworkContext::PreconnectSockets( DCHECK(!require_network_anonymization_key_ || !network_anonymization_key.IsEmpty()); @@ -800,7 +812,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont // |PreconnectSockets| may receive arguments from the renderer, which is not // guaranteed to validate them. -@@ -2848,12 +2853,15 @@ void NetworkContext::OnConnectionError() { +@@ -2907,12 +2912,15 @@ void NetworkContext::OnConnectionError() { std::move(on_connection_close_callback_).Run(this); } @@ -817,7 +829,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont original_url.host())) { return original_url; } -@@ -2901,7 +2909,8 @@ void NetworkContext::OnVerifyCertForSignedExchangeComplete( +@@ -2960,7 +2968,8 @@ void NetworkContext::OnVerifyCertForSignedExchangeComplete( url_request_context_->transport_security_state()->CheckPublicKeyPins( net::HostPortPair::FromURL(pending_cert_verify->url), pending_cert_verify->result->is_issued_by_known_root, @@ -830,7 +842,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont diff --git a/services/network/network_context.h b/services/network/network_context.h --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -407,18 +407,21 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -410,18 +410,21 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext void VerifyCertForSignedExchange( const scoped_refptr& certificate, const GURL& url, @@ -855,7 +867,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte const std::string& host, DeleteDynamicDataForHostCallback callback) override; void SetCorsOriginAccessListsForOrigin( -@@ -727,7 +730,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -735,7 +738,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext mojo::PendingRemote cookie_observer, net::FirstPartySetMetadata first_party_set_metadata); @@ -865,7 +877,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte #if BUILDFLAG(IS_P2P_ENABLED) void DestroySocketManager(P2PSocketManager* socket_manager); -@@ -919,6 +923,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -924,6 +928,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext VerifyCertForSignedExchangeCallback callback; scoped_refptr certificate; GURL url; diff --git a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch index 1c1de149..13a8e89a 100644 --- a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch +++ b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ...storage_access_grant_permission_context.cc | 12 ++++ .../experiment/experiment_manager_impl.cc | 1 + .../core/browser/cookie_settings.cc | 2 + - .../core/common/cookie_settings_base.cc | 60 +------------------ + .../core/common/cookie_settings_base.cc | 66 +------------------ ...ioning-all-cookies-by-top-frame-domain.inc | 3 + ...ioning-all-cookies-by-top-frame-domain.inc | 1 + ...ioning-all-cookies-by-top-frame-domain.inc | 1 + @@ -27,14 +27,14 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html net/cookies/cookie_util.cc | 1 + net/cookies/parsed_cookie.h | 6 +- .../sqlite/sqlite_persistent_cookie_store.cc | 8 +++ - net/url_request/url_request_http_job.cc | 10 +--- + net/url_request/url_request_http_job.cc | 10 +-- services/network/cookie_settings.cc | 6 +- services/network/restricted_cookie_manager.cc | 6 ++ .../modules/cookie_store/cookie_init.idl | 2 +- .../modules/cookie_store/cookie_store.cc | 3 + .../cookie_store_delete_options.idl | 2 +- ui/webui/webui_allowlist.cc | 1 + - 25 files changed, 76 insertions(+), 84 deletions(-) + 25 files changed, 76 insertions(+), 90 deletions(-) create mode 100644 cromite_flags/components/content_settings/core/common/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc create mode 100644 cromite_flags/components/permissions/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc create mode 100644 cromite_flags/content/public/common/content_features_cc/Partitioning-all-cookies-by-top-frame-domain.inc @@ -43,7 +43,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -3484,7 +3484,7 @@ bool ChromeContentBrowserClient::IsFullCookieAccessAllowed( +@@ -3524,7 +3524,7 @@ bool ChromeContentBrowserClient::IsFullCookieAccessAllowed( scoped_refptr cookie_settings = CookieSettingsFactory::GetForProfile(profile); if (!cookie_settings) { @@ -69,7 +69,7 @@ diff --git a/chrome/browser/extensions/api/cookies/cookies_helpers.cc b/chrome/b diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/browser/net/profile_network_context_service.cc --- a/chrome/browser/net/profile_network_context_service.cc +++ b/chrome/browser/net/profile_network_context_service.cc -@@ -781,16 +781,16 @@ ProfileNetworkContextService::CreateCookieManagerParams( +@@ -799,16 +799,16 @@ ProfileNetworkContextService::CreateCookieManagerParams( // UI to interact with SameSite cookies on accounts.google.com, which is used // for displaying a list of available accounts on the NTP // (chrome://new-tab-page), etc. @@ -95,7 +95,7 @@ diff --git a/chrome/browser/net/profile_network_context_service.cc b/chrome/brow diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc --- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc +++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc -@@ -363,6 +363,7 @@ bool PrivacySandboxSettingsDelegate::IsCookieDeprecationLabelAllowed() const { +@@ -361,6 +361,7 @@ bool PrivacySandboxSettingsDelegate::IsCookieDeprecationLabelAllowed() const { bool PrivacySandboxSettingsDelegate:: AreThirdPartyCookiesBlockedByCookieDeprecationExperiment() const { @@ -139,7 +139,7 @@ diff --git a/chrome/browser/tpcd/experiment/experiment_manager_impl.cc b/chrome/ diff --git a/components/content_settings/core/browser/cookie_settings.cc b/components/content_settings/core/browser/cookie_settings.cc --- a/components/content_settings/core/browser/cookie_settings.cc +++ b/components/content_settings/core/browser/cookie_settings.cc -@@ -132,6 +132,7 @@ void CookieSettings::SetTemporaryCookieGrantForHeuristic( +@@ -133,6 +133,7 @@ void CookieSettings::SetTemporaryCookieGrantForHeuristic( const GURL& first_party_url, base::TimeDelta ttl, bool use_schemeless_patterns) { @@ -147,7 +147,7 @@ diff --git a/components/content_settings/core/browser/cookie_settings.cc b/compo if (url.is_empty() || first_party_url.is_empty()) { return; } -@@ -398,6 +399,7 @@ bool CookieSettings::MitigationsEnabledFor3pcdInternal() { +@@ -406,6 +407,7 @@ bool CookieSettings::MitigationsEnabledFor3pcdInternal() const { ->AreThirdPartyCookiesAllowedByEnterprise(); } @@ -158,7 +158,7 @@ diff --git a/components/content_settings/core/browser/cookie_settings.cc b/compo diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/components/content_settings/core/common/cookie_settings_base.cc --- a/components/content_settings/core/common/cookie_settings_base.cc +++ b/components/content_settings/core/common/cookie_settings_base.cc -@@ -39,16 +39,6 @@ using net::cookie_util::StorageAccessResult; +@@ -41,16 +41,6 @@ using net::cookie_util::StorageAccessResult; using ThirdPartyCookieAllowMechanism = CookieSettingsBase::ThirdPartyCookieAllowMechanism; @@ -174,22 +174,18 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c - constexpr StorageAccessResult GetStorageAccessResult( ThirdPartyCookieAllowMechanism mechanism) { - switch (mechanism) { -@@ -534,62 +524,14 @@ CookieSettingsBase::DecideAccess(const GURL& url, - return BlockAllCookies{}; + using AllowMechanism = ThirdPartyCookieAllowMechanism; +@@ -542,70 +532,16 @@ CookieSettingsBase::DecideAccess( + return AllowAllCookies{ThirdPartyCookieAllowMechanism::kNone}; } -- if (!ShouldBlockThirdPartyCookies() && -- !Are3pcsForceDisabledByOverride(overrides)) { +- if (!global_setting_or_embedder_blocks_third_party_cookies) { - return AllowAllCookies{ - ThirdPartyCookieAllowMechanism::kAllowByGlobalSetting}; - } - - if (!is_third_party_request) { - return AllowAllCookies{ThirdPartyCookieAllowMechanism::kNone}; - } - if (IsThirdPartyCookiesAllowedScheme(first_party_url.scheme())) { -- return AllowAllCookies{ThirdPartyCookieAllowMechanism::kNone}; +- return AllowAllCookies{ThirdPartyCookieAllowMechanism::kAllowByScheme}; - } - - // Site controlled mechanisms (ex: web APIs, deprecation trial): @@ -221,7 +217,7 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c - } - - // Enterprise Policies: -- if (is_explicit_setting && setting_source == SettingSource::kPolicy) { +- if (is_explicit_setting && setting_info.source == SettingSource::kPolicy) { - return AllowAllCookies{ThirdPartyCookieAllowMechanism:: - kAllowByEnterprisePolicyCookieAllowedForUrls}; - } @@ -229,8 +225,7 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c - // Chrome controlled mechanisms (ex. 3PCD Metadata Grants): - SettingInfo tpcd_metadata_info; - if (IsAllowedBy3pcdMetadataGrantsSettings(url, first_party_url, overrides, -- &tpcd_metadata_info) && -- !IgnoreTpcdDtGracePeriodMetadataEntry(tpcd_metadata_info)) { +- &tpcd_metadata_info)) { - return AllowAllCookies{TpcdMetadataSourceToAllowMechanism( - tpcd_metadata_info.metadata.tpcd_metadata_rule_source())}; - } @@ -238,15 +233,28 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c if (is_explicit_setting) { return AllowAllCookies{ ThirdPartyCookieAllowMechanism::kAllowByExplicitSetting}; -@@ -623,7 +565,7 @@ CookieSettingsBase::GetCookieSettingInternal( + } + +- // Check for a TRACKING_PROTECTION exception, which should also disable 3PCB. +- SettingInfo tp_info; +- if (IsAllowedByTrackingProtectionSetting(url, first_party_url, tp_info)) { +- setting_info = tp_info; +- return AllowAllCookies{ +- ThirdPartyCookieAllowMechanism::kAllowByTrackingProtectionException}; +- } +- + return AllowPartitionedCookies{}; + } + +@@ -637,7 +573,7 @@ CookieSettingsBase::GetCookieSettingInternal( } return CookieSettingWithMetadata{/*cookie_setting=*/CONTENT_SETTING_ALLOW, /*allow_partitioned_cookies=*/true, - /*is_explicit_setting=*/false, + /*is_explicit_setting=*/true, /*third_party_cookie_allow_mechanism=*/ - ThirdPartyCookieAllowMechanism::kNone}; - } + ThirdPartyCookieAllowMechanism::kNone, + is_third_party_request}; diff --git a/cromite_flags/components/content_settings/core/common/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc b/cromite_flags/components/content_settings/core/common/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc new file mode 100644 --- /dev/null @@ -284,7 +292,7 @@ new file mode 100644 diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc --- a/net/cookies/canonical_cookie.cc +++ b/net/cookies/canonical_cookie.cc -@@ -1001,9 +1001,6 @@ bool CanonicalCookie::IsCanonicalForFromStorage() const { +@@ -999,9 +999,6 @@ bool CanonicalCookie::IsCanonicalForFromStorage() const { if (CookiePartitionKey::HasNonce(PartitionKey())) { return true; } @@ -310,7 +318,7 @@ diff --git a/net/cookies/cookie_deletion_info.cc b/net/cookies/cookie_deletion_i diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc --- a/net/cookies/cookie_monster.cc +++ b/net/cookies/cookie_monster.cc -@@ -2216,6 +2216,7 @@ size_t CookieMonster::GarbageCollectPartitionedCookies( +@@ -2230,6 +2230,7 @@ size_t CookieMonster::GarbageCollectPartitionedCookies( if (cookie_partition_it == partitioned_cookies_.end()) return num_deleted; @@ -321,7 +329,7 @@ diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc diff --git a/net/cookies/cookie_util.cc b/net/cookies/cookie_util.cc --- a/net/cookies/cookie_util.cc +++ b/net/cookies/cookie_util.cc -@@ -726,6 +726,7 @@ bool IsCookiePartitionedValid(const GURL& url, +@@ -732,6 +732,7 @@ bool IsCookiePartitionedValid(const GURL& url, bool secure, bool is_partitioned, bool partition_has_nonce) { @@ -340,7 +348,7 @@ diff --git a/net/cookies/parsed_cookie.h b/net/cookies/parsed_cookie.h #include "net/base/net_export.h" #include "net/cookies/cookie_constants.h" -@@ -85,7 +86,10 @@ class NET_EXPORT ParsedCookie { +@@ -82,7 +83,10 @@ class NET_EXPORT ParsedCookie { CookieSameSite SameSite( CookieSameSiteString* samesite_string = nullptr) const; CookiePriority Priority() const; @@ -350,8 +358,8 @@ diff --git a/net/cookies/parsed_cookie.h b/net/cookies/parsed_cookie.h + return partitioned_index_ != 0; + } bool HasInternalHtab() const { return internal_htab_; } - TruncatingCharacterInCookieStringType - GetTruncatingCharacterInCookieStringType() const { + // Returns the number of attributes, for example, returning 2 for: + // "BLAH=hah; path=/; domain=.google.com" diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sqlite/sqlite_persistent_cookie_store.cc --- a/net/extras/sqlite/sqlite_persistent_cookie_store.cc +++ b/net/extras/sqlite/sqlite_persistent_cookie_store.cc @@ -373,7 +381,7 @@ diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sq diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -782,13 +782,9 @@ void URLRequestHttpJob::SetCookieHeaderAndStart( +@@ -836,13 +836,9 @@ void URLRequestHttpJob::SetCookieHeaderAndStart( AnnotateAndMoveUserBlockedCookies(maybe_included_cookies, excluded_cookies); } @@ -393,7 +401,7 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque diff --git a/services/network/cookie_settings.cc b/services/network/cookie_settings.cc --- a/services/network/cookie_settings.cc +++ b/services/network/cookie_settings.cc -@@ -42,8 +42,7 @@ namespace network { +@@ -43,8 +43,7 @@ namespace network { namespace { bool ShouldApply3pcdRelatedReasons(const net::CanonicalCookie& cookie) { @@ -403,7 +411,7 @@ diff --git a/services/network/cookie_settings.cc b/services/network/cookie_setti } bool IsValidType(ContentSettingsType type) { -@@ -118,8 +117,7 @@ bool IsOriginOpaqueHttpOrHttps(const url::Origin* top_frame_origin) { +@@ -112,8 +111,7 @@ bool IsOriginOpaqueHttpOrHttps(const url::Origin* top_frame_origin) { // static bool CookieSettings::IsCookieAllowed(const net::CanonicalCookie& cookie, const CookieSettingWithMetadata& setting) { @@ -416,7 +424,7 @@ diff --git a/services/network/cookie_settings.cc b/services/network/cookie_setti diff --git a/services/network/restricted_cookie_manager.cc b/services/network/restricted_cookie_manager.cc --- a/services/network/restricted_cookie_manager.cc +++ b/services/network/restricted_cookie_manager.cc -@@ -950,6 +950,12 @@ void RestrictedCookieManager::SetCookieFromString( +@@ -954,6 +954,12 @@ void RestrictedCookieManager::SetCookieFromString( std::move(callback).Run(); diff --git a/build/patches/Restore-BookmarkToolbar-setCurrentFolder.patch b/build/patches/Restore-BookmarkToolbar-setCurrentFolder.patch new file mode 100644 index 00000000..034996fb --- /dev/null +++ b/build/patches/Restore-BookmarkToolbar-setCurrentFolder.patch @@ -0,0 +1,79 @@ +From: uazo +Date: Thu, 18 Jul 2024 14:03:12 +0000 +Subject: Restore BookmarkToolbar#setCurrentFolder + +restore https://chromium-review.googlesource.com/c/chromium/src/+/5554182 + +License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html +--- + .../chromium/chrome/browser/bookmarks/BookmarkToolbar.java | 6 ++++++ + .../chrome/browser/bookmarks/BookmarkToolbarMediator.java | 1 + + .../chrome/browser/bookmarks/BookmarkToolbarProperties.java | 1 + + .../chrome/browser/bookmarks/BookmarkToolbarViewBinder.java | 2 ++ + 4 files changed, 10 insertions(+) + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java +@@ -10,6 +10,7 @@ import android.view.MenuItem; + import android.view.View.OnClickListener; + + import androidx.annotation.IdRes; ++import androidx.annotation.Nullable; + import androidx.appcompat.widget.Toolbar.OnMenuItemClickListener; + import androidx.core.view.MenuCompat; + +@@ -33,6 +34,7 @@ public class BookmarkToolbar extends SelectableListToolbar + private BookmarkOpener mBookmarkOpener; + private SelectionDelegate mSelectionDelegate; + ++ private @Nullable BookmarkItem mCurrentFolder; + private boolean mEditButtonVisible; + private boolean mNewFolderButtonVisible; + private boolean mNewFolderButtonEnabled; +@@ -167,6 +169,10 @@ public class BookmarkToolbar extends SelectableListToolbar + getMenu().findItem(id).setChecked(true); + } + ++ void setCurrentFolder(BookmarkId folder) { ++ mCurrentFolder = mBookmarkModel.getBookmarkById(folder); ++ } ++ + void setNavigateBackRunnable(Runnable navigateBackRunnable) { + mNavigateBackRunnable = navigateBackRunnable; + } +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarMediator.java +@@ -290,6 +290,7 @@ class BookmarkToolbarMediator + @Override + public void onFolderStateSet(BookmarkId folder) { + mCurrentFolder = folder; ++ mModel.set(BookmarkToolbarProperties.CURRENT_FOLDER, mCurrentFolder); + + BookmarkItem folderItem = + mCurrentFolder == null ? null : mBookmarkModel.getBookmarkById(mCurrentFolder); +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarProperties.java +@@ -88,6 +88,7 @@ class BookmarkToolbarProperties { + NEW_FOLDER_BUTTON_VISIBLE, + NEW_FOLDER_BUTTON_ENABLED, + NAVIGATION_BUTTON_STATE, ++ CURRENT_FOLDER, + SORT_MENU_IDS, + SORT_MENU_IDS_ENABLED, + CHECKED_SORT_MENU_ID, +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbarViewBinder.java +@@ -52,6 +52,8 @@ class BookmarkToolbarViewBinder { + } else if (key == BookmarkToolbarProperties.CHECKED_VIEW_MENU_ID) { + bookmarkToolbar.setCheckedViewMenuId( + model.get(BookmarkToolbarProperties.CHECKED_VIEW_MENU_ID)); ++ } else if (key == BookmarkToolbarProperties.CURRENT_FOLDER) { ++ bookmarkToolbar.setCurrentFolder(model.get(BookmarkToolbarProperties.CURRENT_FOLDER)); + } else if (key == BookmarkToolbarProperties.NAVIGATE_BACK_RUNNABLE) { + bookmarkToolbar.setNavigateBackRunnable( + model.get(BookmarkToolbarProperties.NAVIGATE_BACK_RUNNABLE)); +-- diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index 13f0ac44..3e461121 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -14,14 +14,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++++++++++ .../identity_disc/IdentityDiscController.java | 5 +- .../NativePageNavigationDelegateImpl.java | 4 +- - .../chrome/browser/ntp/NewTabPageLayout.java | 31 ++++++++- + .../chrome/browser/ntp/NewTabPageLayout.java | 21 ++++++ .../SuggestionsNavigationDelegate.java | 17 +++++ .../flags/android/chrome_feature_list.cc | 1 + .../browser/flags/ChromeFeatureList.java | 3 +- .../Restore-Simplified-NTP-launch.inc | 12 ++++ .../Restore-Simplified-NTP-launch.inc | 5 ++ .../Restore-Simplified-NTP-launch.inc | 1 + - 15 files changed, 186 insertions(+), 6 deletions(-) + 15 files changed, 178 insertions(+), 4 deletions(-) create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc @@ -31,7 +31,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -537,6 +537,7 @@ chrome_java_resources = [ +@@ -538,6 +538,7 @@ chrome_java_resources = [ "java/res/layout/new_tab_page_layout.xml", "java/res/layout/new_tab_page_tile_grid_placeholder.xml", "java/res/layout/open_full_chrome_history_header.xml", @@ -42,7 +42,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -623,6 +623,7 @@ chrome_java_sources = [ +@@ -622,6 +622,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java", "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java", "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java", @@ -53,7 +53,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml --- a/chrome/android/java/res/layout/new_tab_page_layout.xml +++ b/chrome/android/java/res/layout/new_tab_page_layout.xml -@@ -37,6 +37,13 @@ found in the LICENSE file. +@@ -38,6 +38,13 @@ found in the LICENSE file. android:layout_marginTop="16dp" android:visibility="gone"/> @@ -209,13 +209,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/I diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java -@@ -23,9 +23,9 @@ import org.chromium.ui.mojom.WindowOpenDisposition; +@@ -29,10 +29,10 @@ import java.util.List; /** {@link NativePageNavigationDelegate} implementation. */ public class NativePageNavigationDelegateImpl implements NativePageNavigationDelegate { - private final Profile mProfile; + protected final Profile mProfile; private final TabModelSelector mTabModelSelector; + private final TabGroupCreationDialogManager mTabGroupCreationDialogManager; - private final Tab mTab; + protected final Tab mTab; @@ -224,23 +225,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat 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 --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -17,6 +17,7 @@ import android.util.AttributeSet; +@@ -16,6 +16,7 @@ import android.text.Editable; + import android.util.AttributeSet; import android.view.DragEvent; - import android.view.Gravity; import android.view.LayoutInflater; +import android.view.ViewStub; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -@@ -34,6 +35,7 @@ import org.chromium.chrome.R; +@@ -32,6 +33,7 @@ import org.chromium.base.supplier.ObservableSupplier; + import org.chromium.chrome.R; import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; - import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.lens.LensEntryPoint; +import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.lens.LensMetrics; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.logo.LogoBridge.Logo; -@@ -98,6 +100,8 @@ public class NewTabPageLayout extends LinearLayout { +@@ -92,6 +94,8 @@ public class NewTabPageLayout extends LinearLayout { private @Nullable DisplayStyleObserver mDisplayStyleObserver; private CallbackController mCallbackController = new CallbackController(); @@ -249,44 +250,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL /** * Whether the tiles shown in the layout have finished loading. * With {@link #mHasShownView}, it's one of the 2 flags used to track initialisation progress. -@@ -308,6 +312,7 @@ public class NewTabPageLayout extends LinearLayout { - isScrollableMvtEnabled(), - searchProviderIsGoogle); +@@ -278,6 +282,7 @@ public class NewTabPageLayout extends LinearLayout { + initializeMostVisitedTilesCoordinator( + mProfile, lifecycleDispatcher, tileGroupDelegate, touchEnabledDelegate); initializeSearchBoxBackground(); + initializeShortcuts(); initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLensButton(); -@@ -808,12 +813,15 @@ public class NewTabPageLayout extends LinearLayout { - marginLayoutParams.leftMargin = lateralPaddingsForNtp; - marginLayoutParams.rightMargin = lateralPaddingsForNtp; - } -- marginLayoutParams.topMargin = -+ // when simplified NTP is enabled the top marging is included in its view's padding -+ if (mShortcutsView == null) { -+ marginLayoutParams.topMargin = - getResources() - .getDimensionPixelSize( - shouldShowLogo() - ? R.dimen.tile_grid_layout_top_margin - : R.dimen.tile_grid_layout_no_logo_top_margin); -+ } - marginLayoutParams.bottomMargin = - getResources() - .getDimensionPixelSize(R.dimen.tile_carousel_layout_bottom_margin); -@@ -821,7 +829,10 @@ public class NewTabPageLayout extends LinearLayout { - // Set a bit more top padding on the tile grid if there is no logo. - ViewGroup.LayoutParams layoutParams = mMvTilesContainerLayout.getLayoutParams(); - layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT; -- marginLayoutParams.topMargin = getGridMvtTopMargin(); -+ // when simplified NTP is enabled the top marging is included in its view's padding -+ if (mShortcutsView == null) { -+ marginLayoutParams.topMargin = getGridMvtTopMargin(); -+ } - marginLayoutParams.bottomMargin = getGridMvtBottomMargin(); - } - -@@ -1141,6 +1152,22 @@ public class NewTabPageLayout extends LinearLayout { +@@ -1017,6 +1022,22 @@ public class NewTabPageLayout extends LinearLayout { return mMostVisitedTilesCoordinator; } @@ -312,7 +284,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java -@@ -14,6 +14,11 @@ import org.chromium.chrome.browser.ui.native_page.NativePageHost; +@@ -15,6 +15,11 @@ import org.chromium.chrome.browser.ui.native_page.NativePageHost; import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.ui.base.PageTransition; @@ -324,8 +296,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug /** Extension of {@link NativePageNavigationDelegate} with suggestions-specific methods. */ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateImpl { public SuggestionsNavigationDelegate( -@@ -25,6 +30,18 @@ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateI - super(activity, profile, host, tabModelSelector, tab); +@@ -27,6 +32,18 @@ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateI + super(activity, profile, host, tabModelSelector, tabGroupCreationDialogManager, tab); } + public void navigateToBookmarks() { @@ -346,7 +318,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug 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 -@@ -228,6 +228,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -240,6 +240,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kGcmNativeBackgroundTask, &kIncognitoReauthenticationForAndroid, &kIncognitoScreenshot, @@ -357,23 +329,23 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -340,6 +340,7 @@ public abstract class ChromeFeatureList { - "LookalikeUrlNavigationSuggestionsUI"; - public static final String MAGIC_STACK_ANDROID = "MagicStackAndroid"; +@@ -349,6 +349,7 @@ public abstract class ChromeFeatureList { + public static final String MAYLAUNCHURL_USES_SEPARATE_STORAGE_PARTITION = + "MayLaunchUrlUsesSeparateStoragePartition"; public static final String MESSAGES_FOR_ANDROID_ADS_BLOCKED = "MessagesForAndroidAdsBlocked"; + public static final String SIMPLIFIED_NTP = "SimplifiedNTP"; public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String MIGRATE_ACCOUNT_MANAGEMENT_SETTINGS_TO_CAPABILITIES = "MigrateAccountManagementSettingsToCapabilities"; -@@ -637,7 +638,7 @@ public abstract class ChromeFeatureList { +@@ -658,7 +659,7 @@ public abstract class ChromeFeatureList { newCachedFlag(START_SURFACE_RETURN_TIME, true); public static final CachedFlag sStopAppIndexingReport = newCachedFlag(STOP_APP_INDEXING_REPORT, true); - public static final CachedFlag sSurfacePolish = newCachedFlag(SURFACE_POLISH, true); + public static final CachedFlag sSurfacePolish = newCachedFlag(SURFACE_POLISH, false); + public static final CachedFlag sSurfacePolishForToolbarKillSwitch = + newCachedFlag(SURFACE_POLISH_FOR_TOOLBAR_KILL_SWITCH, true); public static final CachedFlag sTabDragDropAsWindowAndroid = - newCachedFlag(TAB_DRAG_DROP_ANDROID, false); - public static final CachedFlag sTabGroupPaneAndroid = diff --git a/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Show-NTP-at-startup.patch b/build/patches/Show-NTP-at-startup.patch index 772d0e5f..af9dcda1 100644 --- a/build/patches/Show-NTP-at-startup.patch +++ b/build/patches/Show-NTP-at-startup.patch @@ -15,11 +15,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../chrome/browser/tasks/ReturnToChromeUtil.java | 12 +++++++++++- .../browser/preferences/ChromePreferenceKeys.java | 2 ++ .../preferences/LegacyChromePreferenceKeys.java | 1 + - .../java/res/layout/single_tab_view_layout.xml | 11 +++++++++-- - .../single_tab/SingleTabSwitcherOnNtpMediator.java | 10 ++++------ + .../single_tab/SingleTabSwitcherCoordinator.java | 2 +- + .../single_tab/SingleTabSwitcherOnNtpMediator.java | 6 ++---- .../show-ntp-at-startup.grdp | 9 +++++++++ .../chrome_feature_list_cc/show-ntp-at-startup.inc | 2 ++ - 11 files changed, 61 insertions(+), 10 deletions(-) + 11 files changed, 51 insertions(+), 7 deletions(-) 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/flags/android/chrome_feature_list_cc/show-ntp-at-startup.inc @@ -83,7 +83,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeInactivit 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 -@@ -1672,7 +1672,7 @@ public class ChromeTabbedActivity extends ChromeActivity onStandardActiveIndexRead = null; shouldShowNtpAsHomeSurfaceAtStartup = shouldShowNtpHomeSurfaceOnStartup(); boolean skipSavingNonActiveNtps = skipSavingNonActiveNtps(); @@ -92,15 +92,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct mHomeSurfaceTracker = new HomeSurfaceTracker(); } if (shouldShowNtpAsHomeSurfaceAtStartup) { -@@ -2389,6 +2389,8 @@ public class ChromeTabbedActivity extends ChromeActivity -@@ -55,11 +55,18 @@ found in the LICENSE file. - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_weight="1.0" -- android:layout_marginBottom="10dp" - android:layout_gravity="center_vertical" - android:gravity="center_vertical" - android:singleLine="true" - android:textAppearance="@style/TextAppearance.TextMedium" /> -+ - +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 +@@ -309,7 +309,7 @@ public class SingleTabSwitcherCoordinator implements TabSwitcher, ModuleProvider - +@@ -2767,7 +2767,7 @@ public abstract class ChromeActivity TabUtils.switchUserAgent( currentTab, usingDesktopUserAgent, @@ -269,15 +269,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java -@@ -52,6 +52,7 @@ import org.chromium.content_public.browser.BrowserStartupController; - import org.chromium.content_public.browser.DeviceUtils; - import org.chromium.content_public.browser.SpeechRecognition; - import org.chromium.net.NetworkChangeNotifier; +@@ -21,6 +21,7 @@ import org.chromium.chrome.browser.profiles.ProfileManager; + import org.chromium.chrome.browser.signin.SigninCheckerProvider; + import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; + import org.chromium.content_public.browser.BrowserStartupController; +import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; - import java.io.File; import java.util.ArrayList; -@@ -324,11 +325,13 @@ public class ChromeBrowserInitializer { + import java.util.List; +@@ -229,11 +230,13 @@ public class ChromeBrowserInitializer { @Override public void onSuccess() { @@ -540,7 +540,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java -@@ -139,6 +139,7 @@ public class RequestDesktopUtils { +@@ -137,6 +137,7 @@ public class RequestDesktopUtils { */ public static void setRequestDesktopSiteContentSettingsForUrl( Profile profile, GURL url, boolean useDesktopUserAgent) { @@ -551,7 +551,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesk 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 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -64,6 +64,9 @@ import org.chromium.components.autofill.AutofillFeatures; +@@ -66,6 +66,9 @@ import org.chromium.components.autofill.AutofillFeatures; import org.chromium.components.autofill.AutofillProvider; import org.chromium.components.autofill.AutofillSelectionActionMenuDelegate; import org.chromium.components.autofill.AutofillSelectionMenuItemHelper; @@ -561,7 +561,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.embedder_support.view.ContentView; -@@ -95,6 +98,9 @@ import org.chromium.chrome.browser.preferences.Pref; +@@ -98,6 +101,9 @@ import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.components.user_prefs.UserPrefs; @@ -571,33 +571,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This * class is not intended to be extended. -@@ -738,11 +744,6 @@ class TabImpl implements Tab { - return true; - } - -- // If desktop mode window setting is enabled, move switchUserAgentIfNeeded() from -- // loadIfNeeded() to restoreIfNeeded(); to avoid reload without explicit user intent. -- if (!ContentFeatureMap.isEnabled(ContentFeatureList.REQUEST_DESKTOP_SITE_WINDOW_SETTING)) { -- switchUserAgentIfNeeded(UseDesktopUserAgentCaller.LOAD_IF_NEEDED + caller); -- } - restoreIfNeeded(caller); - return true; - } -@@ -1814,13 +1815,6 @@ class TabImpl implements Tab { +@@ -1909,9 +1915,6 @@ class TabImpl implements Tab { } if (mWebContents != null) { -- // If desktop mode window setting is enabled, move switchUserAgentIfNeeded() from -- // loadIfNeeded() to restoreIfNeeded(); to avoid reload without explicit user -- // intent. -- if (ContentFeatureMap.isEnabled( -- ContentFeatureList.REQUEST_DESKTOP_SITE_WINDOW_SETTING)) { -- switchUserAgentIfNeeded(UseDesktopUserAgentCaller.LOAD_IF_NEEDED + caller); -- } +- // Invoke switchUserAgentIfNeeded() from restoreIfNeeded() instead of loadIfNeeded() +- // to avoid reload without explicit user intent. +- switchUserAgentIfNeeded(UseDesktopUserAgentCaller.LOAD_IF_NEEDED + caller); mWebContents.getNavigationController().loadIfNecessary(); } mIsBeingRestored = true; -@@ -2134,6 +2128,11 @@ class TabImpl implements Tab { +@@ -2225,6 +2228,11 @@ class TabImpl implements Tab { url = webContents.getVisibleUrl(); } @@ -609,7 +593,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav // Do not override UA if there is a tab level setting. if (tabUserAgent != TabUserAgent.DEFAULT) { recordHistogramUseDesktopUserAgent(currentRequestDesktopSite); -@@ -2207,6 +2206,54 @@ class TabImpl implements Tab { +@@ -2304,6 +2312,54 @@ class TabImpl implements Tab { } } @@ -701,7 +685,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabUtils.ja diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/android/content/content_utils.cc --- a/chrome/browser/android/content/content_utils.cc +++ b/chrome/browser/android/content/content_utils.cc -@@ -8,6 +8,20 @@ +@@ -7,9 +7,23 @@ #include "components/version_info/version_info.h" #include "content/public/browser/web_contents.h" @@ -711,6 +695,9 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an +#include "components/prefs/pref_service.h" +#include "chrome/common/pref_names.h" + + // Must come after all headers that specialize FromJniType() / ToJniType(). + #include "chrome/browser/android/content/jni_headers/ContentUtils_jni.h" + +using base::android::ConvertJavaStringToUTF8; +using base::android::ConvertUTF16ToJavaString; +using base::android::ConvertUTF8ToJavaString; @@ -722,7 +709,7 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an static base::android::ScopedJavaLocalRef JNI_ContentUtils_GetBrowserUserAgent(JNIEnv* env) { return base::android::ConvertUTF8ToJavaString( -@@ -18,6 +32,22 @@ static void JNI_ContentUtils_SetUserAgentOverride( +@@ -20,6 +34,22 @@ static void JNI_ContentUtils_SetUserAgentOverride( JNIEnv* env, const base::android::JavaParamRef& jweb_contents, jboolean j_override_in_new_tabs) { @@ -772,10 +759,15 @@ diff --git a/chrome/browser/android/preferences/browser_prefs_android.cc b/chrom diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc --- a/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc +++ b/chrome/browser/android/preferences/privacy_preferences_manager_impl.cc -@@ -13,6 +13,32 @@ +@@ -12,9 +12,35 @@ #include "components/policy/core/common/features.h" #include "components/prefs/pref_service.h" ++#include "base/android/jni_android.h" ++#include "base/android/jni_array.h" ++#include "base/android/jni_string.h" ++#include "base/android/scoped_java_ref.h" ++ +#include "base/command_line.h" +#include "base/base_switches.h" +#include "chrome/common/chrome_switches.h" @@ -789,11 +781,9 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl +#include "components/embedder_support/user_agent_utils.h" +#include "components/embedder_support/origin_trials/origin_trials_settings_storage.h" + -+#include "base/android/jni_android.h" -+#include "base/android/jni_array.h" -+#include "base/android/jni_string.h" -+#include "base/android/scoped_java_ref.h" -+ + // Must come after all headers that specialize FromJniType() / ToJniType(). + #include "chrome/android/chrome_jni_headers/PrivacyPreferencesManagerImpl_jni.h" + +using base::android::ConvertJavaStringToUTF8; +using base::android::ConvertUTF16ToJavaString; +using base::android::ConvertUTF8ToJavaString; @@ -805,7 +795,7 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl static jboolean JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingEnabled( JNIEnv* env) { PrefService* local_state = g_browser_process->local_state(); -@@ -34,3 +60,101 @@ JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingDisabledByPolicy( +@@ -36,3 +62,101 @@ JNI_PrivacyPreferencesManagerImpl_IsMetricsReportingDisabledByPolicy( metrics::prefs::kMetricsReportingEnabled) && !local_state->GetBoolean(metrics::prefs::kMetricsReportingEnabled); } @@ -918,15 +908,15 @@ diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_o #include "chrome/common/chrome_switches.h" #include "components/content_settings/core/common/content_settings_utils.h" #include "components/content_settings/core/common/pref_names.h" -@@ -36,6 +37,7 @@ RequestDesktopSiteWebContentsObserverAndroid:: - if (base::FeatureList::IsEnabled( - features::kRequestDesktopSiteWindowSetting)) { - pref_service_ = profile->GetPrefs(); -+ tab_android_ = TabAndroid::FromWebContents(contents); - } +@@ -34,6 +35,7 @@ RequestDesktopSiteWebContentsObserverAndroid:: + host_content_settings_map_ = + HostContentSettingsMapFactory::GetForProfile(profile); + pref_service_ = profile->GetPrefs(); ++ tab_android_ = TabAndroid::FromWebContents(contents); } -@@ -51,6 +53,15 @@ void RequestDesktopSiteWebContentsObserverAndroid::DidStartNavigation( + RequestDesktopSiteWebContentsObserverAndroid:: +@@ -48,6 +50,15 @@ void RequestDesktopSiteWebContentsObserverAndroid::DidStartNavigation( return; } @@ -964,7 +954,7 @@ diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_o 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 -@@ -1033,8 +1033,6 @@ public final class ChromePreferenceKeys { +@@ -1043,8 +1043,6 @@ public final class ChromePreferenceKeys { SIGNIN_PROMO_NTP_LAST_SHOWN_TIME, SYNC_PROMO_TOTAL_SHOW_COUNT, SEARCH_RESUMPTION_MODULE_COLLAPSE_ON_NTP, @@ -1046,7 +1036,7 @@ diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chro 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 -@@ -236,6 +236,32 @@ CHAR_LIMIT guidelines: +@@ -231,6 +231,32 @@ CHAR_LIMIT guidelines: Visit help page @@ -1082,7 +1072,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1854,6 +1854,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group"; +@@ -1880,6 +1880,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group"; inline constexpr char kHadThreeConsecutiveNotificationPermissionDenies[] = "profile.content_settings.had_three_consecutive_denies.notifications"; @@ -1238,7 +1228,7 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/content/browser/renderer_host/navigation_controller_android.cc --- a/content/browser/renderer_host/navigation_controller_android.cc +++ b/content/browser/renderer_host/navigation_controller_android.cc -@@ -252,6 +252,7 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( +@@ -254,6 +254,7 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( jboolean can_load_local_resources, jboolean is_renderer_initiated, jboolean should_replace_current_entry, @@ -1246,7 +1236,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/co const JavaParamRef& j_initiator_origin, jboolean has_user_gesture, jboolean should_clear_history_list, -@@ -352,6 +353,9 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( +@@ -354,6 +355,9 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( params.navigation_ui_data = std::move(navigation_ui_data); @@ -1270,7 +1260,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.h b/con diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3595,6 +3595,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3644,6 +3644,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( switches::kLacrosUseChromeosProtectedMedia, switches::kLacrosUseChromeosProtectedAv1, #endif @@ -1289,7 +1279,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser #include "base/check_op.h" #include "base/command_line.h" #include "base/containers/contains.h" -@@ -2145,8 +2146,6 @@ void WebContentsImpl::SetUserAgentOverride( +@@ -2163,8 +2164,6 @@ void WebContentsImpl::SetUserAgentOverride( OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::SetUserAgentOverride", "ua_override", ua_override.ua_string_override, "override_in_new_tabs", override_in_new_tabs); @@ -1298,7 +1288,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser if (GetUserAgentOverride() == ua_override) { return; -@@ -3201,6 +3200,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { +@@ -3229,6 +3228,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences() { #else prefs.viewport_meta_enabled = false; #endif @@ -1331,7 +1321,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc -@@ -865,7 +865,6 @@ void RenderThreadImpl::InitializeRenderer( +@@ -864,7 +864,6 @@ void RenderThreadImpl::InitializeRenderer( const blink::UserAgentMetadata& user_agent_metadata, const std::vector& cors_exempt_header_list, blink::mojom::OriginTrialsSettingsPtr origin_trials_settings) {