diff --git a/build/patches/Add-AllowUserCertificates-flag.patch b/build/patches/Add-AllowUserCertificates-flag.patch index 3b248971..88018fb2 100644 --- a/build/patches/Add-AllowUserCertificates-flag.patch +++ b/build/patches/Add-AllowUserCertificates-flag.patch @@ -12,10 +12,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/flag_descriptions.h | 3 +++ chrome/browser/flags/android/chrome_feature_list.cc | 5 +++++ chrome/browser/flags/android/chrome_feature_list.h | 1 + - .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 1 + .../org/chromium/chrome/browser/flags/ChromeFeatureList.java | 3 +++ net/android/java/src/org/chromium/net/X509Util.java | 5 +++++ - 10 files changed, 31 insertions(+) + 9 files changed, 30 insertions(+) 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 @@ -28,7 +27,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.printing.PrintManagerDelegateImpl; import org.chromium.printing.PrintingController; import org.chromium.printing.PrintingControllerImpl; -@@ -951,6 +952,8 @@ public abstract class ChromeActivity +@@ -961,6 +962,8 @@ public abstract class ChromeActivity UpdateMenuItemHelper.getInstance().onStart(); ChromeActivitySessionTracker.getInstance().onStartWithNative(); ChromeCachedFlags.getInstance().cacheNativeFlags(); @@ -40,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java -@@ -78,6 +78,7 @@ public class ChromeCachedFlags { +@@ -77,6 +77,7 @@ public class ChromeCachedFlags { add(ChromeFeatureList.sAndroidAuxiliarySearch); add(ChromeFeatureList.sAnonymousUpdateChecks); add(ChromeFeatureList.sAppMenuMobileSiteOption); @@ -51,7 +50,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/Chrom 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 -@@ -8830,6 +8830,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -8936,6 +8936,10 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kWin10TabSearchCaptionButton)}, #endif // BUILDFLAG(IS_WIN) @@ -93,15 +92,15 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -148,6 +148,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &feed::kFeedNoViewCache, +@@ -153,6 +153,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedReplaceAll, + &feed::kFeedShowSignInCommand, &feed::kInterestFeedContentSuggestions, + &kAllowUserCertificates, &feed::kInterestFeedV1ClicksAndViewsConditionalUpload, &feed::kInterestFeedV2, &feed::kInterestFeedV2Autoplay, -@@ -468,6 +469,10 @@ BASE_FEATURE(kAllowNewIncognitoTabIntents, +@@ -469,6 +470,10 @@ BASE_FEATURE(kAllowNewIncognitoTabIntents, "AllowNewIncognitoTabIntents", base::FEATURE_ENABLED_BY_DEFAULT); @@ -115,29 +114,18 @@ 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 -@@ -12,6 +12,7 @@ - namespace chrome { - namespace android { - -+extern const base::Feature kAllowUserCertificates; - // Alphabetical: - BASE_DECLARE_FEATURE(kAdaptiveButtonInTopToolbar); +@@ -17,6 +17,7 @@ BASE_DECLARE_FEATURE(kAdaptiveButtonInTopToolbar); BASE_DECLARE_FEATURE(kAdaptiveButtonInTopToolbarCustomizationV2); -diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java ---- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -@@ -50,6 +50,7 @@ public class CachedFeatureFlags { - ImmutableMap.builder() - .put(ChromeFeatureList.ANONYMOUS_UPDATE_CHECKS, true) - .put(ChromeFeatureList.APP_MENU_MOBILE_SITE_OPTION, false) -+ .put(ChromeFeatureList.ALLOW_USER_CERTIFICATES, false) - .put(ChromeFeatureList.BACK_GESTURE_REFACTOR, false) - .put(ChromeFeatureList.CCT_BRAND_TRANSPARENCY, false) - .put(ChromeFeatureList.CCT_INCOGNITO, true) + BASE_DECLARE_FEATURE(kAddToHomescreenIPH); + BASE_DECLARE_FEATURE(kAllowNewIncognitoTabIntents); ++BASE_DECLARE_FEATURE(kAllowUserCertificates); + BASE_DECLARE_FEATURE(kAndroidScrollOptimizations); + BASE_DECLARE_FEATURE(kAndroidSearchEngineChoiceNotification); + BASE_DECLARE_FEATURE(kAssistantConsentModal); 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 -@@ -193,6 +193,7 @@ public abstract class ChromeFeatureList { +@@ -162,6 +162,7 @@ public abstract class ChromeFeatureList { } /* Alphabetical: */ @@ -145,8 +133,8 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String ABOUT_THIS_SITE_BANNER = "AboutThisSiteBanner"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 = -@@ -648,6 +649,8 @@ public abstract class ChromeFeatureList { - public static final String FEED_REPLACE_ALL = "FeedReplaceAll"; +@@ -612,6 +613,8 @@ public abstract class ChromeFeatureList { + "SkipServiceWorkerForInstallPromot"; /* Alphabetical: */ + public static final CachedFlag sAllowUserCertificates = diff --git a/build/patches/Disable-AGSA-by-default.patch b/build/patches/Disable-AGSA-by-default.patch index 35562541..73fbd88a 100644 --- a/build/patches/Disable-AGSA-by-default.patch +++ b/build/patches/Disable-AGSA-by-default.patch @@ -14,15 +14,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/ntp/search/SearchBoxMediator.java | 1 - .../chrome/browser/share/LensUtils.java | 12 +-------- .../flags/android/chrome_feature_list.cc | 4 +-- - .../browser/flags/CachedFeatureFlags.java | 2 +- chrome/browser/ui/android/omnibox/BUILD.gn | 2 -- .../browser/omnibox/LocationBarMediator.java | 1 - - 13 files changed, 4 insertions(+), 78 deletions(-) + 12 files changed, 3 insertions(+), 77 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -408,7 +408,6 @@ if (current_toolchain == default_toolchain) { +@@ -420,7 +420,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/first_run/android:java", "//chrome/browser/flags:java", "//chrome/browser/fullscreen/android:java", @@ -30,7 +29,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/history_clusters:java", "//chrome/browser/history_clusters:java_resources", "//chrome/browser/image_descriptions:java", -@@ -1002,7 +1001,6 @@ if (current_toolchain == default_toolchain) { +@@ -1015,7 +1014,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/flags:flags_junit_tests", "//chrome/browser/flags:java", "//chrome/browser/fullscreen/android:java", @@ -38,7 +37,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/history_clusters:java", "//chrome/browser/image_descriptions:java", "//chrome/browser/image_editor/public:java", -@@ -1517,7 +1515,6 @@ if (current_toolchain == default_toolchain) { +@@ -1531,7 +1529,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/first_run/android:java", "//chrome/browser/flags:java", "//chrome/browser/fullscreen/android:java", @@ -60,15 +59,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java -@@ -42,7 +42,6 @@ import org.chromium.chrome.browser.customtabs.CustomTabsConnection; - import org.chromium.chrome.browser.document.ChromeLauncherActivity; +@@ -43,7 +43,6 @@ import org.chromium.chrome.browser.document.ChromeLauncherActivity; import org.chromium.chrome.browser.externalnav.IntentWithRequestMetadataHandler; import org.chromium.chrome.browser.externalnav.IntentWithRequestMetadataHandler.RequestMetadata; + import org.chromium.chrome.browser.flags.ChromeFeatureList; -import org.chromium.chrome.browser.gsa.GSAState; import org.chromium.chrome.browser.offlinepages.OfflinePageUtils; import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; import org.chromium.chrome.browser.profiles.Profile; -@@ -265,8 +264,6 @@ public class IntentHandler { +@@ -267,8 +266,6 @@ public class IntentHandler { private static int sReferrerId; private static String sPendingIncognitoUrl; @@ -77,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j private static final String PACKAGE_GMAIL = "com.google.android.gm"; private static final String PACKAGE_PLUS = "com.google.android.apps.plus"; private static final String PACKAGE_HANGOUTS = "com.google.android.talk"; -@@ -496,8 +493,6 @@ public class IntentHandler { +@@ -498,8 +495,6 @@ public class IntentHandler { return ExternalAppId.LINE; } else if (packageName.equals(PACKAGE_WHATSAPP)) { return ExternalAppId.WHATSAPP; @@ -89,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j 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 -@@ -112,10 +112,6 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; +@@ -113,10 +113,6 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.BrowserControlsManagerSupplier; import org.chromium.chrome.browser.fullscreen.FullscreenBackPressHandler; import org.chromium.chrome.browser.fullscreen.FullscreenManager; @@ -100,7 +99,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.history.HistoryManagerUtils; import org.chromium.chrome.browser.init.AsyncInitializationActivity; import org.chromium.chrome.browser.init.ProcessInitializationHandler; -@@ -374,8 +370,6 @@ public abstract class ChromeActivity +@@ -377,8 +373,6 @@ public abstract class ChromeActivity private LaunchCauseMetrics mLaunchCauseMetrics; @@ -109,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv // TODO(972867): Pull MenuOrKeyboardActionController out of ChromeActivity. private List mMenuActionHandlers = new ArrayList<>(); -@@ -1172,10 +1166,6 @@ public abstract class ChromeActivity +@@ -1189,10 +1183,6 @@ public abstract class ChromeActivity @Override public void onStopWithNative() { @@ -120,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv super.onStopWithNative(); } -@@ -1267,23 +1257,6 @@ public abstract class ChromeActivity +@@ -1284,23 +1274,6 @@ public abstract class ChromeActivity .recordUserFontPrefOnStartup(); }); @@ -155,7 +154,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr import org.chromium.chrome.browser.lens.LensController; import org.chromium.chrome.browser.lens.LensEntryPoint; import org.chromium.chrome.browser.lens.LensIntentParams; -@@ -987,12 +986,6 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -978,12 +977,6 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { LensMetrics.LensSupportStatus.ACTIVITY_NOT_ACCESSIBLE); return false; } @@ -196,7 +195,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -@@ -360,14 +360,6 @@ public class ProcessInitializationHandler { +@@ -356,14 +356,6 @@ public class ProcessInitializationHandler { } }); @@ -273,18 +272,6 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse BASE_FEATURE(kExploreSites, "ExploreSites", base::FEATURE_DISABLED_BY_DEFAULT); -diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java ---- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -@@ -72,7 +72,7 @@ public class CachedFeatureFlags { - .put(ChromeFeatureList.EARLY_LIBRARY_LOAD, true) - .put(ChromeFeatureList.ELASTIC_OVERSCROLL, true) - .put(ChromeFeatureList.ELIDE_PRIORITIZATION_OF_PRE_NATIVE_BOOTSTRAP_TASKS, true) -- .put(ChromeFeatureList.EXPERIMENTS_FOR_AGSA, true) -+ .put(ChromeFeatureList.EXPERIMENTS_FOR_AGSA, false) - .put(ChromeFeatureList.FEED_LOADING_PLACEHOLDER, false) - .put(ChromeFeatureList.GRID_TAB_SWITCHER_FOR_TABLETS, true) - .put(ChromeFeatureList.IMMERSIVE_UI_MODE, false) diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/android/omnibox/BUILD.gn --- a/chrome/browser/ui/android/omnibox/BUILD.gn +++ b/chrome/browser/ui/android/omnibox/BUILD.gn @@ -296,7 +283,7 @@ diff --git a/chrome/browser/ui/android/omnibox/BUILD.gn b/chrome/browser/ui/andr "//chrome/browser/history_clusters:java", "//chrome/browser/language/android:java", "//chrome/browser/lens:java", -@@ -440,7 +439,6 @@ robolectric_library("junit") { +@@ -441,7 +440,6 @@ robolectric_library("junit") { "//chrome/browser/commerce/merchant_viewer/android:java", "//chrome/browser/device:java", "//chrome/browser/flags:java", diff --git a/build/patches/Disable-feeds-support-by-default.patch b/build/patches/Disable-feeds-support-by-default.patch index 3769b349..66fadd93 100644 --- a/build/patches/Disable-feeds-support-by-default.patch +++ b/build/patches/Disable-feeds-support-by-default.patch @@ -5,14 +5,13 @@ Subject: Disable feeds support by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../org/chromium/chrome/browser/feed/FeedFeatures.java | 8 +------- - .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 2 +- components/feed/feed_feature_list.cc | 8 ++++---- - 3 files changed, 6 insertions(+), 12 deletions(-) + 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java +++ b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java -@@ -50,13 +50,7 @@ public final class FeedFeatures { +@@ -48,13 +48,7 @@ public final class FeedFeatures { * the user is signed in and confirms it's not a child profile. */ public static boolean isWebFeedUIEnabled() { @@ -27,18 +26,6 @@ diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/fe } public static boolean shouldUseWebFeedAwarenessIPH() { -diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java ---- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -@@ -78,7 +78,7 @@ public class CachedFeatureFlags { - .put(ChromeFeatureList.INCOGNITO_REAUTHENTICATION_FOR_ANDROID, false) - .put(ChromeFeatureList.INSTANCE_SWITCHER, true) - .put(ChromeFeatureList.INSTANT_START, false) -- .put(ChromeFeatureList.INTEREST_FEED_V2, true) -+ .put(ChromeFeatureList.INTEREST_FEED_V2, false) - .put(ChromeFeatureList.LENS_CAMERA_ASSISTED_SEARCH, false) - .put(ChromeFeatureList.NEW_WINDOW_APP_MENU, true) - .put(ChromeFeatureList.OMAHA_MIN_SDK_VERSION_ANDROID, false) diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc --- a/components/feed/feed_feature_list.cc +++ b/components/feed/feed_feature_list.cc diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index af7f7460..3c48cbd1 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -59,7 +59,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/flag_descriptions.h | 3 ++ .../flags/android/cached_feature_flags.cc | 18 +++++++ .../flags/android/chrome_feature_list.cc | 2 + - .../browser/flags/CachedFeatureFlags.java | 19 +++++++ + .../browser/flags/CachedFeatureFlags.java | 18 +++++++ .../browser/flags/ChromeFeatureList.java | 4 ++ .../chrome/browser/ui/appmenu/AppMenu.java | 30 +++++++++++ .../ui/appmenu/AppMenuHandlerImpl.java | 11 ++++ @@ -86,7 +86,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../accessibility/AccessibilitySettings.java | 16 ++++++ .../AccessibilitySettingsDelegate.java | 6 +++ .../render_widget_host_view_android.cc | 3 ++ - 74 files changed, 784 insertions(+), 57 deletions(-) + 74 files changed, 783 insertions(+), 57 deletions(-) diff --git a/cc/base/features.cc b/cc/base/features.cc --- a/cc/base/features.cc @@ -139,7 +139,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 -@@ -4253,6 +4253,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { +@@ -4301,6 +4301,9 @@ bool LayerTreeHostImpl::AnimateBrowserControls(base::TimeTicks time) { if (scroll_delta.IsZero()) return false; @@ -152,7 +152,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 -@@ -85,6 +85,9 @@ import org.chromium.content_public.browser.LoadUrlParams; +@@ -90,6 +90,9 @@ import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.util.ColorUtils; @@ -162,7 +162,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, View.OnClickListener, StartSurface.OnTabSelectingListener, BackPressHandler, -@@ -1095,6 +1098,8 @@ class StartSurfaceMediator implements TabSwitcher.TabSwitcherViewObserver, View. +@@ -1131,6 +1134,8 @@ class StartSurfaceMediator implements TabSwitcher.TabSwitcherViewObserver, View. } private void setTopMargin(int topMargin) { @@ -271,10 +271,10 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } } + updateThemeColor(tab); - if (type == TabSelectionType.FROM_CLOSE) return; if (TabUiFeatureUtilities.isTabGroupsAndroidEnabled(mContext) && getTabsToShowForId(lastId).contains(tab)) { -@@ -259,6 +291,7 @@ public class TabGroupUiMediator implements SnackbarManager.SnackbarController, B + return; +@@ -258,6 +290,7 @@ public class TabGroupUiMediator implements SnackbarManager.SnackbarController, B resetTabStripWithRelatedTabsForId(currentTab.getId()); RecordUserAction.record("TabStrip.SessionVisibility." + (mIsTabGroupUiVisible ? "Visible" : "Hidden")); @@ -393,8 +393,8 @@ 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/TabListContainerViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java -@@ -21,6 +21,8 @@ import androidx.recyclerview.widget.LinearLayoutManager; - import org.chromium.components.browser_ui.styles.ChromeColors; +@@ -22,6 +22,8 @@ import org.chromium.components.browser_ui.styles.ChromeColors; + import org.chromium.ui.base.ViewUtils; import org.chromium.ui.modelutil.PropertyKey; import org.chromium.ui.modelutil.PropertyModel; +import org.chromium.chrome.browser.flags.CachedFeatureFlags; @@ -402,19 +402,19 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * ViewBinder for TabListRecyclerView. -@@ -57,6 +59,8 @@ class TabListContainerViewBinder { +@@ -58,6 +60,8 @@ class TabListContainerViewBinder { params.topMargin = newTopMargin; - view.requestLayout(); + ViewUtils.requestLayout(view, "TabListContainerViewBinder.bind TOP_MARGIN"); } else if (BOTTOM_CONTROLS_HEIGHT == propertyKey) { + if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) + return; FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams(); params.bottomMargin = model.get(BOTTOM_CONTROLS_HEIGHT); - view.requestLayout(); + ViewUtils.requestLayout(view, "TabListContainerViewBinder.bind BOTTOM_CONTROLS_HEIGHT"); diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java -@@ -47,6 +47,9 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; +@@ -48,6 +48,9 @@ import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; import org.chromium.ui.resources.dynamics.DynamicResourceLoader; import org.chromium.ui.widget.ViewLookupCachingFrameLayout; @@ -424,7 +424,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; -@@ -255,6 +258,9 @@ public class TabListCoordinator +@@ -256,6 +259,9 @@ public class TabListCoordinator if (mMode == TabListMode.GRID) { GridLayoutManager gridLayoutManager = new GridLayoutManager(context, GRID_LAYOUT_SPAN_COUNT_COMPACT); @@ -437,7 +437,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/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 -@@ -36,6 +36,7 @@ import androidx.recyclerview.widget.GridLayoutManager; +@@ -37,6 +37,7 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import org.chromium.base.Log; @@ -445,7 +445,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.tabmodel.TabModel; import org.chromium.chrome.tab_ui.R; -@@ -63,6 +64,8 @@ class TabListRecyclerView +@@ -65,6 +66,8 @@ class TabListRecyclerView public static final long BASE_ANIMATION_DURATION_MS = 218; public static final long FINAL_FADE_IN_DURATION_MS = 50; @@ -454,7 +454,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * Field trial parameter for downsampling scaling factor. */ -@@ -192,6 +195,7 @@ class TabListRecyclerView +@@ -194,6 +197,7 @@ class TabListRecyclerView ? FINAL_FADE_IN_DURATION_MS : BASE_ANIMATION_DURATION_MS; @@ -462,7 +462,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser setAlpha(0); setVisibility(View.VISIBLE); mFadeInAnimator = ObjectAnimator.ofFloat(this, View.ALPHA, 1); -@@ -225,6 +229,11 @@ class TabListRecyclerView +@@ -228,6 +232,11 @@ class TabListRecyclerView } void setShadowVisibility(boolean shouldShowShadow) { @@ -474,7 +474,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser if (mShadowImageView == null) { Context context = getContext(); mShadowImageView = new ImageView(context); -@@ -237,7 +246,10 @@ class TabListRecyclerView +@@ -240,7 +249,10 @@ class TabListRecyclerView if (getParent() instanceof FrameLayout) { // Add shadow for grid tab switcher. FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( @@ -486,7 +486,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mShadowImageView.setLayoutParams(params); mShadowImageView.setTranslationY(mShadowTopOffset); FrameLayout parent = (FrameLayout) getParent(); -@@ -264,6 +276,10 @@ class TabListRecyclerView +@@ -267,6 +279,10 @@ class TabListRecyclerView void setShadowTopOffset(int shadowTopOffset) { mShadowTopOffset = shadowTopOffset; @@ -497,7 +497,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser if (mShadowImageView != null && getParent() instanceof FrameLayout) { // Since the shadow has no functionality, other than just existing visually, we can use -@@ -443,6 +459,7 @@ class TabListRecyclerView +@@ -446,6 +462,7 @@ class TabListRecyclerView mListener.finishedHiding(); } }); @@ -508,7 +508,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/TabSwitcherMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java -@@ -43,6 +43,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; +@@ -44,6 +44,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthController; import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthManager; @@ -516,7 +516,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.multiwindow.MultiWindowModeStateDispatcher; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; -@@ -457,11 +458,22 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView +@@ -460,11 +461,22 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView updateTopControlsProperties(); mContainerViewModel.set( BOTTOM_CONTROLS_HEIGHT, browserControlsStateProvider.getBottomControlsHeight()); @@ -539,7 +539,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } mContainerView = containerView; -@@ -588,6 +600,10 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView +@@ -592,6 +604,10 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView final int contentOffset = mBrowserControlsStateProvider.getContentOffset(); mContainerViewModel.set(TOP_MARGIN, contentOffset); @@ -639,7 +639,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. -@@ -748,6 +751,16 @@ public abstract class ChromeActivity +@@ -758,6 +761,16 @@ public abstract class ChromeActivity int toolbarLayoutId = getToolbarLayoutId(); if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { controlContainer.initWithToolbar(toolbarLayoutId); @@ -659,18 +659,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java -@@ -111,6 +111,7 @@ public class ChromeCachedFlags { +@@ -110,6 +110,7 @@ public class ChromeCachedFlags { add(ChromeFeatureList.sInstanceSwitcher); add(ChromeFeatureList.sInstantStart); add(ChromeFeatureList.sInterestFeedV2); + add(ChromeFeatureList.sMoveTopToolbarToBottom); add(ChromeFeatureList.sNewWindowAppMenu); + add(ChromeFeatureList.sOmniboxMatchToolbarAndStatusBarColor); add(ChromeFeatureList.sOmniboxModernizeVisualUpdate); - add(ChromeFeatureList.sOmniboxRemoveExcessiveRecycledViewClearCalls); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java -@@ -83,6 +83,8 @@ import org.chromium.ui.base.WindowAndroid; +@@ -84,6 +84,8 @@ import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.mojom.VirtualKeyboardMode; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.resources.dynamics.DynamicResourceLoader; @@ -679,7 +679,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/Comp import java.util.ArrayList; import java.util.HashSet; -@@ -316,6 +318,10 @@ public class CompositorViewHolder extends FrameLayout +@@ -317,6 +319,10 @@ public class CompositorViewHolder extends FrameLayout WebContents webContents = mTabVisible.getWebContents(); if (webContents == null) return; EventForwarder forwarder = webContents.getEventForwarder(); @@ -818,7 +818,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 -@@ -376,7 +376,7 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate +@@ -377,7 +377,7 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate // position 0 is on the left. Account for that in the offset calculation. boolean isRtl = LocalizationUtils.isLayoutRtl(); boolean useUnadjustedScrollOffset = isRtl != isLeft; @@ -830,7 +830,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 -@@ -56,6 +56,9 @@ import org.chromium.ui.base.LocalizationUtils; +@@ -59,6 +59,9 @@ import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.PageTransition; import org.chromium.ui.resources.ResourceManager; import org.chromium.url.GURL; @@ -840,7 +840,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import java.util.List; -@@ -119,9 +122,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -122,9 +125,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa private final String mDefaultTitle; private final Supplier mLayerTitleCacheSupplier; @@ -854,7 +854,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over if (mModelSelectorButton.onDown(x, y)) return; if (mStripScrim.isVisible()) return; getActiveStripLayoutHelper().onDown(time(), x, y, fromMouse, buttons); -@@ -141,6 +148,7 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -144,6 +151,7 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa @Override public void drag(float x, float y, float dx, float dy, float tx, float ty) { @@ -862,7 +862,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mModelSelectorButton.drag(x, y); if (mStripScrim.isVisible()) return; getActiveStripLayoutHelper().drag(time(), x, y, dx, dy, tx, ty); -@@ -148,6 +156,7 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -151,6 +159,7 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa @Override public void click(float x, float y, boolean fromMouse, int buttons) { @@ -870,7 +870,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); -@@ -159,13 +168,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -162,13 +171,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa @Override public void fling(float x, float y, float velocityX, float velocityY) { @@ -886,7 +886,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over getActiveStripLayoutHelper().onLongPress(time(), x, y); } -@@ -249,7 +258,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -252,7 +261,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa */ public StripLayoutHelperManager(Context context, LayoutUpdateHost updateHost, LayoutRenderHost renderHost, Supplier layerTitleCacheSupplier, @@ -896,7 +896,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over mUpdateHost = updateHost; mLayerTitleCacheSupplier = layerTitleCacheSupplier; mTabStripTreeProvider = new TabStripSceneLayer(context); -@@ -292,6 +302,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -295,6 +305,8 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa new StripLayoutHelper(context, updateHost, renderHost, false, mModelSelectorButton); mIncognitoHelper = new StripLayoutHelper(context, updateHost, renderHost, true, mModelSelectorButton); @@ -905,7 +905,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over onContextChanged(context); } -@@ -361,9 +373,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -364,9 +376,13 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa Tab selectedTab = mTabModelSelector.getCurrentModel().getTabAt( mTabModelSelector.getCurrentModel().index()); int selectedTabId = selectedTab == null ? TabModel.INVALID_TAB_INDEX : selectedTab.getId(); @@ -920,7 +920,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over return mTabStripTreeProvider; } -@@ -401,7 +417,17 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa +@@ -404,7 +420,17 @@ public class StripLayoutHelperManager implements SceneOverlay, PauseResumeWithNa mIncognitoHelper.onSizeChanged( mWidth, mHeight, orientationChanged, LayoutManagerImpl.time()); @@ -1005,7 +1005,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java -@@ -21,6 +21,8 @@ import org.chromium.chrome.browser.layouts.scene_layer.SceneLayer; +@@ -23,6 +23,8 @@ import org.chromium.chrome.browser.layouts.scene_layer.SceneLayer; import org.chromium.chrome.browser.layouts.scene_layer.SceneOverlayLayer; import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.resources.ResourceManager; @@ -1014,7 +1014,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen /** * The Java component of what is basically a CC Layer that manages drawing the Tab Strip (which is -@@ -67,10 +69,19 @@ public class TabStripSceneLayer extends SceneOverlayLayer { +@@ -77,10 +79,19 @@ public class TabStripSceneLayer extends SceneOverlayLayer { */ public void pushAndUpdateStrip(StripLayoutHelperManager layoutHelper, LayerTitleCache layerTitleCache, ResourceManager resourceManager, @@ -1077,7 +1077,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow /** * A class that manages browser control visibility and positioning. */ -@@ -396,6 +399,14 @@ public class BrowserControlsManager +@@ -395,6 +398,14 @@ public class BrowserControlsManager return mTopControlContainerHeight; } @@ -1092,7 +1092,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow @Override public int getTopControlsMinHeight() { return mTopControlsMinHeight; -@@ -462,6 +473,8 @@ public class BrowserControlsManager +@@ -461,6 +472,8 @@ public class BrowserControlsManager @Override public float getTopVisibleContentOffset() { @@ -1104,9 +1104,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/fullscreen/Brow diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/messages/MessageContainerCoordinator.java -@@ -17,6 +17,10 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; +@@ -18,6 +18,10 @@ import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.components.messages.MessageContainer; + import org.chromium.ui.base.ViewUtils; +import android.view.Gravity; +import org.chromium.chrome.browser.flags.ChromeFeatureList; @@ -1115,7 +1115,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag /** * Coordinator of {@link MessageContainer}, which can adjust margins of the message container * and control the visibility of browser control when message is being shown. -@@ -50,7 +54,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider +@@ -60,7 +64,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider } CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) mContainer.getLayoutParams(); @@ -1129,7 +1129,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/messages/Messag mContainer.setLayoutParams(params); } -@@ -110,6 +119,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider +@@ -120,6 +129,12 @@ public class MessageContainerCoordinator implements BrowserControlsStateProvider /** @return Offset of the message container from the top of the screen. */ private int getContainerTopOffset() { @@ -1157,7 +1157,7 @@ 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 -@@ -101,6 +101,8 @@ import org.chromium.content_public.browser.NavigationEntry; +@@ -98,6 +98,8 @@ import org.chromium.content_public.browser.NavigationEntry; import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.mojom.WindowOpenDisposition; @@ -1166,7 +1166,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. import java.util.List; -@@ -562,10 +564,15 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide +@@ -559,10 +561,15 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide // + topControlsDistanceToRest| will give the margin for the current animation frame. final int topControlsDistanceToRest = mBrowserControlsStateProvider.getContentOffset() - mBrowserControlsStateProvider.getTopControlsHeight(); @@ -1184,7 +1184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) { layoutParams.topMargin = topMargin; -@@ -585,7 +592,7 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide +@@ -582,7 +589,7 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide * strip. */ private int getToolbarExtraYOffset() { @@ -1301,7 +1301,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 -@@ -258,6 +258,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -257,6 +257,11 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity if (fragment instanceof INeedSnackbarManager) { ((INeedSnackbarManager)fragment).setSnackbarManager(mSnackbarManager); } @@ -1316,7 +1316,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin 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 +++ b/chrome/android/java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorCoordinator.java -@@ -24,6 +24,11 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +@@ -25,6 +25,11 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import org.chromium.ui.resources.ResourceManager; import org.chromium.ui.resources.dynamics.ViewResourceAdapter; @@ -1328,7 +1328,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/status_indicato /** * The coordinator for a status indicator that is positioned below the status bar and is persistent. * Typically used to relay status, e.g. indicate user is offline. -@@ -173,6 +178,11 @@ public class StatusIndicatorCoordinator { +@@ -174,6 +179,11 @@ public class StatusIndicatorCoordinator { private void initialize() { final ViewStub stub = mActivity.findViewById(R.id.status_indicator_stub); final ViewResourceFrameLayout root = (ViewResourceFrameLayout) stub.inflate(); @@ -1367,7 +1367,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 -@@ -178,6 +178,9 @@ import org.chromium.url.GURL; +@@ -176,6 +176,9 @@ import org.chromium.url.GURL; import java.util.List; @@ -1377,7 +1377,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar /** * 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. -@@ -670,7 +673,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -667,7 +670,7 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve mEphemeralTabCoordinatorSupplier); // clang-format off LocationBarCoordinator locationBarCoordinator = new LocationBarCoordinator( @@ -1386,7 +1386,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar PrivacyPreferencesManagerImpl.getInstance(), mLocationBarModel, mActionModeController.getActionModeCallback(), new WindowDelegate(mActivity.getWindow()), windowAndroid, mActivityTabProvider, -@@ -927,11 +930,13 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -925,11 +928,13 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve // the height won't be measured by the background image. if (mControlContainer.getBackground() == null) { setControlContainerTopMargin(getToolbarExtraYOffset()); @@ -1400,7 +1400,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mControlContainer.removeOnLayoutChangeListener(mLayoutChangeListener); mLayoutChangeListener = null; } -@@ -1311,13 +1316,25 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -1309,13 +1314,25 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve return mLocationBar.getOmniboxStub().isUrlBarFocused(); } @@ -1428,7 +1428,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar mScrimCoordinator, mOmniboxFocusStateSupplier, mBottomSheetController, mActivityLifecycleDispatcher, mIsWarmOnResumeSupplier, mTabModelSelector, mTabContentManager, mCompositorViewHolder, -@@ -1326,8 +1343,9 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -1324,8 +1341,9 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve mBottomControlsCoordinatorSupplier.set(new BottomControlsCoordinator(mActivity, mWindowAndroid, mLayoutManager, mCompositorViewHolder.getResourceManager(), mBrowserControlsSizer, mFullscreenManager, @@ -1440,7 +1440,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar } /** -@@ -2107,6 +2125,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -2105,6 +2123,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve private void setControlContainerTopMargin(int margin) { final ViewGroup.MarginLayoutParams layoutParams = ((ViewGroup.MarginLayoutParams) mControlContainer.getLayoutParams()); @@ -1499,9 +1499,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/BottomContai diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/system/StatusBarColorController.java -@@ -13,6 +13,9 @@ import android.view.Window; - import androidx.annotation.ColorInt; +@@ -14,6 +14,9 @@ import androidx.annotation.ColorInt; import androidx.annotation.Nullable; + import androidx.annotation.VisibleForTesting; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.flags.CachedFeatureFlags; @@ -1509,7 +1509,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/Statu import org.chromium.base.ApiCompatibilityUtils; import org.chromium.base.CallbackController; import org.chromium.base.supplier.ObservableSupplier; -@@ -370,6 +373,12 @@ public class StatusBarColorController +@@ -425,6 +428,12 @@ public class StatusBarColorController boolean needsDarkStatusBarIcons = !ColorUtils.shouldUseLightForegroundOnBackground(color); ApiCompatibilityUtils.setStatusBarIconColor(root, needsDarkStatusBarIcons); ApiCompatibilityUtils.setStatusBarColor(mWindow, color); @@ -1525,7 +1525,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/Statu 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 -@@ -7422,6 +7422,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -7578,6 +7578,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWindowsScrollingPersonalityDescription, kOsAll, FEATURE_VALUE_TYPE(features::kWindowsScrollingPersonality)}, @@ -1548,7 +1548,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer using base::android::JavaParamRef; using base::android::JavaRef; -@@ -82,8 +83,10 @@ void TabStripSceneLayer::SetContentTree( +@@ -81,8 +82,10 @@ void TabStripSceneLayer::SetContentTree( content_tree_ = content_tree; if (content_tree) { layer()->InsertChild(content_tree->layer(), 0); @@ -1561,9 +1561,9 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer } } } -@@ -115,12 +118,17 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, - jfloat y_offset, - jboolean should_readd_background) { +@@ -115,13 +118,18 @@ void TabStripSceneLayer::UpdateTabStripLayer(JNIEnv* env, + jboolean should_readd_background, + jint background_color) { gfx::RectF content(0, y_offset, width, height); - layer()->SetPosition(gfx::PointF(0, y_offset)); + if (base::FeatureList::IsEnabled(::features::kMoveTopToolbarToBottom)) { @@ -1574,6 +1574,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer + } tab_strip_layer_->SetBounds(gfx::Size(width, height)); scrollable_strip_layer_->SetBounds(gfx::Size(width, height)); + tab_strip_layer_->SetBackgroundColor(SkColor4f::FromColor(background_color)); // Content tree should not be affected by tab strip scene layer visibility. - if (content_tree_) @@ -1623,7 +1624,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom 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 -@@ -1752,6 +1752,10 @@ const char kImprovedKeyboardShortcutsDescription[] = +@@ -1693,6 +1693,10 @@ const char kImprovedKeyboardShortcutsDescription[] = "Ensure keyboard shortcuts work consistently with international keyboard " "layouts and deprecate legacy shortcuts."; @@ -1637,7 +1638,7 @@ 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 -@@ -987,6 +987,9 @@ extern const char kImprovedKeyboardShortcutsDescription[]; +@@ -962,6 +962,9 @@ extern const char kImprovedKeyboardShortcutsDescription[]; extern const char kCompositorThreadedScrollbarScrollingName[]; extern const char kCompositorThreadedScrollbarScrollingDescription[]; @@ -1690,26 +1691,18 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse #include "base/metrics/field_trial_params.h" #include "base/no_destructor.h" #include "base/strings/string_piece_forward.h" -@@ -250,6 +251,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { - &kKitKatSupported, +@@ -255,6 +256,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kIsVoiceSearchEnabledCache, &kLensCameraAssistedSearch, &kLensOnQuickActionSearchWidget, + &features::kMoveTopToolbarToBottom, - &kNewInstanceFromDraggedLink, &kNewTabPageTilesTitleWrapAround, &kNewWindowAppMenu, + &kNotificationPermissionVariant, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -@@ -107,6 +107,7 @@ public class CachedFeatureFlags { - .put(ChromeFeatureList.TAB_GROUPS_FOR_TABLETS, false) - .put(ChromeFeatureList.TAB_SELECTION_EDITOR_V2, false) - .put(ChromeFeatureList.TAB_STRIP_IMPROVEMENTS, false) -+ .put(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM, false) - .put(ChromeFeatureList.TAB_TO_GTS_ANIMATION, true) - .put(ChromeFeatureList.TEST_DEFAULT_DISABLED, false) - .put(ChromeFeatureList.TEST_DEFAULT_ENABLED, true) -@@ -213,6 +214,23 @@ public class CachedFeatureFlags { +@@ -124,6 +124,23 @@ public class CachedFeatureFlags { SharedPreferencesManager.getInstance().writeBoolean(preferenceName, isEnabledInNative); } @@ -1733,7 +1726,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f /** * Forces a feature to be enabled or disabled for testing. * -@@ -532,6 +550,7 @@ public class CachedFeatureFlags { +@@ -434,6 +451,7 @@ public class CachedFeatureFlags { @NativeMethods interface Natives { @@ -1744,16 +1737,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f 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 -@@ -430,6 +430,8 @@ public abstract class ChromeFeatureList { +@@ -389,6 +389,8 @@ public abstract class ChromeFeatureList { public static final String MESSAGES_FOR_ANDROID_SYNC_ERROR = "MessagesForAndroidSyncError"; public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String MODAL_PERMISSION_DIALOG_VIEW = "ModalPermissionDialogView"; + public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM = + "MoveTopToolbarToBottom"; public static final String METRICS_SETTINGS_ANDROID = "MetricsSettingsAndroid"; - public static final String NEW_INSTANCE_FROM_DRAGGED_LINK = "NewInstanceFromDraggedLink"; public static final String NEW_TAB_PAGE_TILES_TITLE_WRAP_AROUND = -@@ -714,6 +716,8 @@ public abstract class ChromeFeatureList { + "NewTabPageTilesTitleWrapAround"; +@@ -677,6 +679,8 @@ public abstract class ChromeFeatureList { public static final CachedFlag sInterestFeedV2 = new CachedFlag(INTEREST_FEED_V2, true); public static final CachedFlag sLensCameraAssistedSearch = new CachedFlag(LENS_CAMERA_ASSISTED_SEARCH, false); @@ -1911,7 +1904,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow /** * Coordinates the interactions with the UrlBar text component. */ -@@ -231,7 +234,13 @@ public class UrlBarCoordinator implements UrlBarEditingTextStateProvider, UrlFoc +@@ -236,7 +239,13 @@ public class UrlBarCoordinator implements UrlBarEditingTextStateProvider, UrlFoc // to show or hide keyboard anyway. This may happen when we schedule keyboard hide, and // receive a second request to hide the keyboard instantly. if (showKeyboard) { @@ -1990,7 +1983,7 @@ 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/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 -@@ -58,6 +58,9 @@ import org.chromium.ui.modelutil.PropertyModel; +@@ -56,6 +56,9 @@ import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; @@ -2000,17 +1993,17 @@ 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; -@@ -1011,7 +1014,9 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, +@@ -1010,7 +1013,9 @@ class AutocompleteMediator implements OnSuggestionsReceivedListener, + @Override public void onSuggestionDropdownScroll() { - if (mDropdownViewInfoListBuilder.hasFullyConcealedElements()) { - mSuggestionsListScrolled = true; -- mDelegate.setKeyboardVisibility(false, false); -+ if (!CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) { -+ mDelegate.setKeyboardVisibility(false, false); -+ } - } + mSuggestionsListScrolled = true; +- mDelegate.setKeyboardVisibility(false, false); ++ if (!CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) { ++ mDelegate.setKeyboardVisibility(false, false); ++ } } + /** 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 @@ -2024,7 +2017,7 @@ 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 { private static final long DEFERRED_INITIAL_SHRINKING_LAYOUT_FROM_IME_DURATION_MS = 300; -@@ -208,7 +211,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -246,7 +249,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { * Constructs a new list designed for containing omnibox suggestions. * @param context Context used for contained views. */ @@ -2034,7 +2027,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow super(context, null, android.R.attr.dropDownListViewStyle); setFocusable(true); setFocusableInTouchMode(true); -@@ -218,13 +222,25 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -256,13 +260,25 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { setItemAnimator(null); mLayoutScrollListener = new SuggestionLayoutScrollListener(context); @@ -2061,7 +2054,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow ViewCompat.setPaddingRelative(this, 0, 0, 0, paddingBottom); mStandardBgColor = shouldShowModernizeVisualUpdate -@@ -442,6 +458,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { +@@ -480,6 +496,8 @@ public class OmniboxSuggestionsDropdown extends RecyclerView { } private int calculateAnchorBottomRelativeToContent() { @@ -2405,7 +2398,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/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,8 @@ import org.chromium.components.browser_ui.widget.ClipDrawableProgressBar.Drawing +@@ -13,6 +13,8 @@ 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; @@ -2414,7 +2407,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,13 +41,20 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { +@@ -38,13 +40,20 @@ class TopToolbarSceneLayer extends SceneOverlayLayer { /** Push all information about the texture to native at once. */ private void pushProperties(PropertyModel model) { if (mResourceManagerSupplier.get() == null) return; @@ -2459,15 +2452,15 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c private TextScalePreference mTextScalePref; private PageZoomPreference mPageZoomDefaultZoomPref; private ChromeSwitchPreference mPageZoomAlwaysShowPref; -@@ -43,6 +44,7 @@ public class AccessibilitySettings - private AccessibilitySettingsDelegate mDelegate; +@@ -44,6 +45,7 @@ public class AccessibilitySettings private BooleanPreferenceDelegate mReaderForAccessibilityDelegate; private BooleanPreferenceDelegate mAccessibilityTabSwitcherDelegate; + private double mPageZoomLatestDefaultZoomPrefValue; + private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate; private FontSizePrefs mFontSizePrefs; private FontSizePrefsObserver mFontSizePrefsObserver = new FontSizePrefsObserver() { -@@ -62,6 +64,10 @@ public class AccessibilitySettings +@@ -63,6 +65,10 @@ public class AccessibilitySettings mFontSizePrefs = FontSizePrefs.getInstance(delegate.getBrowserContextHandle()); } @@ -2478,7 +2471,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); -@@ -126,6 +132,12 @@ public class AccessibilitySettings +@@ -127,6 +133,12 @@ public class AccessibilitySettings getPreferenceScreen().removePreference(accessibilityTabSwitcherPref); } @@ -2491,7 +2484,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener(preference -> { Intent intent = new Intent(Settings.ACTION_CAPTIONING_SETTINGS); -@@ -175,7 +187,11 @@ public class AccessibilitySettings +@@ -186,7 +198,11 @@ public class AccessibilitySettings mDelegate.getBrowserContextHandle(), (Integer) newValue); } else if (PREF_PAGE_ZOOM_ALWAYS_SHOW.equals(preference.getKey())) { PageZoomUtils.setShouldAlwaysShowZoomMenuItem((Boolean) newValue); @@ -2537,7 +2530,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ #include "cc/base/math_util.h" #include "cc/layers/layer.h" #include "cc/layers/surface_layer.h" -@@ -479,6 +480,8 @@ void RenderWidgetHostViewAndroid::OnRenderFrameMetadataChangedBeforeActivation( +@@ -845,6 +846,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/Unexpire-tab-groups-flags.patch b/build/patches/Unexpire-tab-groups-flags.patch index cdceb9d7..0915b8fe 100644 --- a/build/patches/Unexpire-tab-groups-flags.patch +++ b/build/patches/Unexpire-tab-groups-flags.patch @@ -6,15 +6,14 @@ Disabled by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/flag-metadata.json | 4 ++-- - chrome/browser/flags/android/chrome_feature_list.cc | 8 ++++---- - .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 2 +- - 3 files changed, 7 insertions(+), 7 deletions(-) + chrome/browser/flag-metadata.json | 4 ++-- + chrome/browser/flags/android/chrome_feature_list.cc | 8 ++++---- + 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -3099,7 +3099,7 @@ +@@ -3138,7 +3138,7 @@ { "name": "enable-tab-groups", "owners": [ "memex-team@google.com" ], @@ -23,7 +22,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js }, { "name": "enable-tab-groups-continuation", -@@ -3114,7 +3114,7 @@ +@@ -3153,7 +3153,7 @@ { "name": "enable-tab-groups-ui-improvements", "owners": [ "memex-team@google.com" ], @@ -35,7 +34,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js 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 -@@ -977,16 +977,16 @@ BASE_FEATURE(kTabEngagementReportingAndroid, +@@ -965,16 +965,16 @@ BASE_FEATURE(kTabEngagementReportingAndroid, base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kTabGroupsAndroid, @@ -56,17 +55,5 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse BASE_FEATURE(kTabGroupsForTablets, "TabGroupsForTablets", -diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java ---- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java -@@ -102,7 +102,7 @@ public class CachedFeatureFlags { - .put(ChromeFeatureList.STORE_HOURS, false) - .put(ChromeFeatureList.SWAP_PIXEL_FORMAT_TO_FIX_CONVERT_FROM_TRANSLUCENT, true) - .put(ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID, true) -- .put(ChromeFeatureList.TAB_GROUPS_ANDROID, true) -+ .put(ChromeFeatureList.TAB_GROUPS_ANDROID, false) - .put(ChromeFeatureList.TAB_GROUPS_CONTINUATION_ANDROID, false) - .put(ChromeFeatureList.TAB_GROUPS_FOR_TABLETS, false) - .put(ChromeFeatureList.TAB_SELECTION_EDITOR_V2, false) -- 2.25.1