diff --git a/build-chromium/build-chromium.sh b/build-chromium/build-chromium.sh
index 4356c6e..911366d 100755
--- a/build-chromium/build-chromium.sh
+++ b/build-chromium/build-chromium.sh
@@ -2,8 +2,8 @@
 
 set -e
 
-chromium_version="121.0.6167.71"
-chromium_code="616710100"
+chromium_version="123.0.6312.40"
+chromium_code="631204000"
 clean=0
 gsync=0
 supported_archs=(arm64 x64)
diff --git a/build-chromium/fetch-patches.sh b/build-chromium/fetch-patches.sh
index c471ada..cc3bc2b 100755
--- a/build-chromium/fetch-patches.sh
+++ b/build-chromium/fetch-patches.sh
@@ -13,7 +13,7 @@
         exit 1
     fi
 
-     echo $NEWNAME
+    echo $NEWNAME
     mv patches/$PATCH patches/$NEWNAME
     wget -O patches/$NEWNAME https://raw.githubusercontent.com/GrapheneOS/Vanadium/main/patches/$NEWNAME
 done
diff --git a/build-chromium/patches/0018-disable-metrics-by-default.patch b/build-chromium/patches/0018-disable-metrics-by-default.patch
index b6421fd..d61cdff 100644
--- a/build-chromium/patches/0018-disable-metrics-by-default.patch
+++ b/build-chromium/patches/0018-disable-metrics-by-default.patch
@@ -8,12 +8,12 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
-index ef301742b77fa..03b150acf1c18 100644
+index ee84be84d7988..2aeb57ba26e7a 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java
 @@ -63,7 +63,7 @@ public abstract class FirstRunActivityBase extends AsyncInitializationActivity
-     static final String SHOW_SEARCH_ENGINE_PAGE = "ShowSearchEnginePage";
      static final String SHOW_SYNC_CONSENT_PAGE = "ShowSyncConsent";
+     static final String SHOW_HISTORY_SYNC_PAGE = "ShowHistorySync";
  
 -    public static final boolean DEFAULT_METRICS_AND_CRASH_REPORTING = true;
 +    public static final boolean DEFAULT_METRICS_AND_CRASH_REPORTING = false;
diff --git a/build-chromium/patches/0022-disable-content-feed-suggestions-by-default.patch b/build-chromium/patches/0022-disable-content-feed-suggestions-by-default.patch
index f762170..ad2ed2f 100644
--- a/build-chromium/patches/0022-disable-content-feed-suggestions-by-default.patch
+++ b/build-chromium/patches/0022-disable-content-feed-suggestions-by-default.patch
@@ -8,7 +8,7 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc
-index c1c92dba8b006..6e7a7949c3788 100644
+index c489728fd6814..2f9e6df24176c 100644
 --- a/components/feed/feed_feature_list.cc
 +++ b/components/feed/feed_feature_list.cc
 @@ -23,7 +23,7 @@ namespace feed {
@@ -18,5 +18,5 @@
 -             base::FEATURE_ENABLED_BY_DEFAULT);
 +             base::FEATURE_DISABLED_BY_DEFAULT);
  
- BASE_FEATURE(kInterestFeedV2Autoplay,
-              "InterestFeedV2Autoplay",
+ BASE_FEATURE(kInterestFeedV2Hearts,
+              "InterestFeedV2Hearts",
diff --git a/build-chromium/patches/0027-disable-payment-support-by-default.patch b/build-chromium/patches/0027-disable-payment-support-by-default.patch
index d379f50..57ccdce 100644
--- a/build-chromium/patches/0027-disable-payment-support-by-default.patch
+++ b/build-chromium/patches/0027-disable-payment-support-by-default.patch
@@ -8,10 +8,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/components/payments/core/payment_prefs.cc b/components/payments/core/payment_prefs.cc
-index 3196befc8c400..2caca44e2d4e7 100644
+index d42858bde4cf7..a632291402897 100644
 --- a/components/payments/core/payment_prefs.cc
 +++ b/components/payments/core/payment_prefs.cc
-@@ -16,7 +16,7 @@ const char kCanMakePaymentEnabled[] = "payments.can_make_payment_enabled";
+@@ -11,7 +11,7 @@ namespace payments {
  void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(kPaymentsFirstTransactionCompleted, false);
    registry->RegisterBooleanPref(
diff --git a/build-chromium/patches/0028-disable-media-router-media-remoting-by-default.patch b/build-chromium/patches/0028-disable-media-router-media-remoting-by-default.patch
index 161066e..fc5066d 100644
--- a/build-chromium/patches/0028-disable-media-router-media-remoting-by-default.patch
+++ b/build-chromium/patches/0028-disable-media-router-media-remoting-by-default.patch
@@ -8,10 +8,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
-index 764d9243637f6..b0329e4476ac8 100644
+index b8ea36d95c7eb..176877e027c23 100644
 --- a/chrome/browser/media/router/media_router_feature.cc
 +++ b/chrome/browser/media/router/media_router_feature.cc
-@@ -146,7 +146,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -147,7 +147,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
    registry->RegisterStringPref(prefs::kMediaRouterReceiverIdHashToken, "",
                                 PrefRegistry::PUBLIC);
    registry->RegisterBooleanPref(
diff --git a/build-chromium/patches/0029-disable-media-router-by-default.patch b/build-chromium/patches/0029-disable-media-router-by-default.patch
index 63e1d1b..cb2d7d1 100644
--- a/build-chromium/patches/0029-disable-media-router-by-default.patch
+++ b/build-chromium/patches/0029-disable-media-router-by-default.patch
@@ -9,10 +9,10 @@
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/chrome/browser/media/router/media_router_feature.cc b/chrome/browser/media/router/media_router_feature.cc
-index b0329e4476ac8..4c5cc00da7040 100644
+index 176877e027c23..3594cf35e0b0b 100644
 --- a/chrome/browser/media/router/media_router_feature.cc
 +++ b/chrome/browser/media/router/media_router_feature.cc
-@@ -133,7 +133,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
+@@ -134,7 +134,7 @@ bool MediaRouterEnabled(content::BrowserContext* context) {
      pref_values.insert(std::make_pair(context, allowed));
      return allowed;
    }
@@ -22,10 +22,10 @@
  
  #if !BUILDFLAG(IS_ANDROID)
 diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc
-index 52a5f08810e85..1933b09a29c74 100644
+index 669c8ab31a549..cc4fb7d05b83e 100644
 --- a/chrome/browser/profiles/profile_impl.cc
 +++ b/chrome/browser/profiles/profile_impl.cc
-@@ -417,7 +417,7 @@ void ProfileImpl::RegisterProfilePrefs(
+@@ -424,7 +424,7 @@ void ProfileImpl::RegisterProfilePrefs(
  #endif
  
    registry->RegisterBooleanPref(prefs::kForceEphemeralProfiles, false);
diff --git a/build-chromium/patches/0030-disable-offering-translations-by-default.patch b/build-chromium/patches/0030-disable-offering-translations-by-default.patch
index 2ae7a62..066c30f 100644
--- a/build-chromium/patches/0030-disable-offering-translations-by-default.patch
+++ b/build-chromium/patches/0030-disable-offering-translations-by-default.patch
@@ -8,10 +8,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc
-index 95d3988d536f9..5218968346864 100644
+index c5ae80c271b6a..4910b1a4511cc 100644
 --- a/chrome/browser/ui/browser_ui_prefs.cc
 +++ b/chrome/browser/ui/browser_ui_prefs.cc
-@@ -82,7 +82,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
+@@ -85,7 +85,7 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) {
    registry->RegisterBooleanPref(prefs::kWebAppCreateInAppsMenu, true);
    registry->RegisterBooleanPref(prefs::kWebAppCreateInQuickLaunchBar, true);
    registry->RegisterBooleanPref(
diff --git a/build-chromium/patches/0031-disable-browser-sign-in-feature-by-default.patch b/build-chromium/patches/0031-disable-browser-sign-in-feature-by-default.patch
index b6a58f4..c8178d1 100644
--- a/build-chromium/patches/0031-disable-browser-sign-in-feature-by-default.patch
+++ b/build-chromium/patches/0031-disable-browser-sign-in-feature-by-default.patch
@@ -9,7 +9,7 @@
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/chrome/browser/signin/account_consistency_mode_manager.cc b/chrome/browser/signin/account_consistency_mode_manager.cc
-index 222ba8a3084aa..496a2ed2c65b6 100644
+index 79f00f9b96b74..1fd6ef457d351 100644
 --- a/chrome/browser/signin/account_consistency_mode_manager.cc
 +++ b/chrome/browser/signin/account_consistency_mode_manager.cc
 @@ -123,7 +123,7 @@ AccountConsistencyModeManager::~AccountConsistencyModeManager() {}
@@ -22,15 +22,15 @@
  
  // static
 diff --git a/components/signin/internal/identity_manager/primary_account_manager.cc b/components/signin/internal/identity_manager/primary_account_manager.cc
-index f7b3ed7459d55..e36b73d6f9003 100644
+index 6fe0f2612b0f6..815171103eb73 100644
 --- a/components/signin/internal/identity_manager/primary_account_manager.cc
 +++ b/components/signin/internal/identity_manager/primary_account_manager.cc
-@@ -193,7 +193,7 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) {
+@@ -228,7 +228,7 @@ void PrimaryAccountManager::RegisterProfilePrefs(PrefRegistrySimple* registry) {
        prefs::kGoogleServicesSyncingUsernameMigratedToSignedIn, std::string());
    registry->RegisterBooleanPref(prefs::kAutologinEnabled, true);
    registry->RegisterListPref(prefs::kReverseAutologinRejectedEmailList);
 -  registry->RegisterBooleanPref(prefs::kSigninAllowed, true);
 +  registry->RegisterBooleanPref(prefs::kSigninAllowed, false);
    registry->RegisterBooleanPref(prefs::kSignedInWithCredentialProvider, false);
+   registry->RegisterBooleanPref(prefs::kExplicitBrowserSignin, false);
  }
- 
diff --git a/build-chromium/patches/0036-disable-autofill-server-communication-by-default.patch b/build-chromium/patches/0036-disable-autofill-server-communication-by-default.patch
index 13fc4f9..44997cd 100644
--- a/build-chromium/patches/0036-disable-autofill-server-communication-by-default.patch
+++ b/build-chromium/patches/0036-disable-autofill-server-communication-by-default.patch
@@ -8,10 +8,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc
-index b2c551ea3108a..8f72eef6c64e0 100644
+index 106b4b91f173b..e41ea53948eab 100644
 --- a/components/autofill/core/common/autofill_features.cc
 +++ b/components/autofill/core/common/autofill_features.cc
-@@ -848,7 +848,7 @@ const base::FeatureParam<std::string>
+@@ -762,7 +762,7 @@ const base::FeatureParam<std::string>
  // i.e., https://other.autofill.server:port/tbproxy/af/
  BASE_FEATURE(kAutofillServerCommunication,
               "AutofillServerCommunication",
diff --git a/build-chromium/patches/0041-disable-Omaha-update-check-support.patch b/build-chromium/patches/0041-disable-Omaha-update-check-support.patch
index 4af4655..aa6305d 100644
--- a/build-chromium/patches/0041-disable-Omaha-update-check-support.patch
+++ b/build-chromium/patches/0041-disable-Omaha-update-check-support.patch
@@ -9,7 +9,7 @@
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
-index 4f7a64abb07f5..ae7ee72d8fb19 100644
+index 6a5bc7fbdc96b..b7859536ac995 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase.java
 @@ -161,7 +161,7 @@ public class OmahaBase {
@@ -22,7 +22,7 @@
  
      /**
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
-index 97a6757ee1914..3334cfc34d567 100644
+index aafca709ec9db..ab30313aaed6d 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java
 @@ -51,7 +51,7 @@ public class VersionNumberGetter {
diff --git a/build-chromium/patches/0054-disable-using-Play-services-fonts.patch b/build-chromium/patches/0053-disable-using-Play-services-fonts.patch
similarity index 100%
rename from build-chromium/patches/0054-disable-using-Play-services-fonts.patch
rename to build-chromium/patches/0053-disable-using-Play-services-fonts.patch
diff --git a/build-chromium/patches/0076-add-trichrome-browser-apk-targets.patch b/build-chromium/patches/0075-add-trichrome-browser-apk-targets.patch
similarity index 92%
rename from build-chromium/patches/0076-add-trichrome-browser-apk-targets.patch
rename to build-chromium/patches/0075-add-trichrome-browser-apk-targets.patch
index f552ac2..415727d 100644
--- a/build-chromium/patches/0076-add-trichrome-browser-apk-targets.patch
+++ b/build-chromium/patches/0075-add-trichrome-browser-apk-targets.patch
@@ -9,10 +9,10 @@
  2 files changed, 37 insertions(+)
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
-index 9ef4d7045a0db..40bce15d64f89 100644
+index 167b6a6f6b44c..14774020c38bc 100644
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -2430,6 +2430,10 @@ if (current_toolchain == default_toolchain) {
+@@ -2390,6 +2390,10 @@ if (current_toolchain == default_toolchain) {
      is_trichrome = true
      is_bundle_module = true
    }
@@ -23,7 +23,7 @@
  
    # Exists separately from chrome_public_base_module_java_for_test to allow
    # downstream to depend on test support packages without needing to depend on
-@@ -2796,6 +2800,37 @@ if (current_toolchain == default_toolchain) {
+@@ -2769,6 +2773,37 @@ if (current_toolchain == default_toolchain) {
        }
      }
    }
@@ -62,7 +62,7 @@
    # As compared to chrome_public_test_apk, this target contains only unit tests
    # that require on device capabilities. These tests are smaller, more tightly
 diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_public_apk_tmpl.gni
-index 54c50b54bb7ca..1fc91f09297a5 100644
+index df3d58c8bade4..b4a17cf298dd5 100644
 --- a/chrome/android/chrome_public_apk_tmpl.gni
 +++ b/chrome/android/chrome_public_apk_tmpl.gni
 @@ -454,6 +454,8 @@ template("chrome_common_apk_or_module_tmpl") {
diff --git a/build-chromium/patches/0080-remove-Help-feedback-menu-entry.patch b/build-chromium/patches/0079-remove-Help-feedback-menu-entry.patch
similarity index 91%
rename from build-chromium/patches/0080-remove-Help-feedback-menu-entry.patch
rename to build-chromium/patches/0079-remove-Help-feedback-menu-entry.patch
index 3bebf77..41ad4f8 100644
--- a/build-chromium/patches/0080-remove-Help-feedback-menu-entry.patch
+++ b/build-chromium/patches/0079-remove-Help-feedback-menu-entry.patch
@@ -8,10 +8,10 @@
  1 file changed, 2 insertions(+)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
-index 0dd8acdca4dbc..780e90bddf053 100644
+index 4601831676edd..a997aec3b2948 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java
-@@ -580,6 +580,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
+@@ -587,6 +587,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
          menu.findItem(R.id.reader_mode_prefs_id)
                  .setVisible(isCurrentTabNotNull && shouldShowReaderModePrefs(currentTab));
  
diff --git a/build-chromium/patches/0081-hide-passwords.google.com-link-when-not-supported.patch b/build-chromium/patches/0080-hide-passwords.google.com-link-when-not-supported.patch
similarity index 100%
rename from build-chromium/patches/0081-hide-passwords.google.com-link-when-not-supported.patch
rename to build-chromium/patches/0080-hide-passwords.google.com-link-when-not-supported.patch
diff --git a/build-chromium/patches/0083-Consolidate-downstream-changes-in-dependencies-sourc.patch b/build-chromium/patches/0082-Consolidate-downstream-changes-in-dependencies-sourc.patch
similarity index 95%
rename from build-chromium/patches/0083-Consolidate-downstream-changes-in-dependencies-sourc.patch
rename to build-chromium/patches/0082-Consolidate-downstream-changes-in-dependencies-sourc.patch
index c601601..4a97ef3 100644
--- a/build-chromium/patches/0083-Consolidate-downstream-changes-in-dependencies-sourc.patch
+++ b/build-chromium/patches/0082-Consolidate-downstream-changes-in-dependencies-sourc.patch
@@ -17,7 +17,7 @@
  create mode 100644 chrome/android/chrome_ext_java_sources.gni
 
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
-index 40bce15d64f89..dac7963df6224 100644
+index 14774020c38bc..fec47e97f8fe6 100644
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
 @@ -10,6 +10,9 @@ import("//build/config/cronet/config.gni")
@@ -30,7 +30,7 @@
  import("//chrome/android/chrome_java_resources.gni")
  import("//chrome/android/chrome_public_apk_tmpl.gni")
  import("//chrome/android/expectations/expectations.gni")
-@@ -175,6 +178,8 @@ if (current_toolchain == default_toolchain) {
+@@ -168,6 +171,8 @@ if (current_toolchain == default_toolchain) {
  
    android_resources("chrome_app_java_resources") {
      sources = chrome_java_resources
@@ -39,7 +39,7 @@
      sources += [ "//chrome/android/java/res_app/layout/main.xml" ]
  
      deps = [
-@@ -693,6 +698,11 @@ if (current_toolchain == default_toolchain) {
+@@ -697,6 +702,11 @@ if (current_toolchain == default_toolchain) {
      # From java_sources.gni.
      sources = chrome_java_sources + [ app_hooks_impl ]
  
@@ -91,7 +91,7 @@
 +chrome_ext_java_sources = [
 +]
 diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
-index 5a0b795f9febb..408fc10bd1afa 100644
+index d0b9774e87b16..1ebd8fd8b3871 100644
 --- a/chrome/android/chrome_java_resources.gni
 +++ b/chrome/android/chrome_java_resources.gni
 @@ -7,6 +7,8 @@
diff --git a/build-chromium/patches/0084-Consolidate-downstream-strings-in-a-separate-file-fo.patch b/build-chromium/patches/0083-Consolidate-downstream-strings-in-a-separate-file-fo.patch
similarity index 97%
rename from build-chromium/patches/0084-Consolidate-downstream-strings-in-a-separate-file-fo.patch
rename to build-chromium/patches/0083-Consolidate-downstream-strings-in-a-separate-file-fo.patch
index c426f1c..5f50329 100644
--- a/build-chromium/patches/0084-Consolidate-downstream-strings-in-a-separate-file-fo.patch
+++ b/build-chromium/patches/0083-Consolidate-downstream-strings-in-a-separate-file-fo.patch
@@ -23,7 +23,7 @@
 +<grit-part>
 +</grit-part>
 diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-index 5c4d8ee89a605..1d66587781a2a 100644
+index ac15c0e1fc904..09774057f0f07 100644
 --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
 +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
 @@ -202,6 +202,7 @@ CHAR_LIMIT guidelines:
diff --git a/build-chromium/patches/0085-Utility-class-for-adding-shared-preference-keys.patch b/build-chromium/patches/0084-Utility-class-for-adding-shared-preference-keys.patch
similarity index 97%
rename from build-chromium/patches/0085-Utility-class-for-adding-shared-preference-keys.patch
rename to build-chromium/patches/0084-Utility-class-for-adding-shared-preference-keys.patch
index 059a60a..870a578 100644
--- a/build-chromium/patches/0085-Utility-class-for-adding-shared-preference-keys.patch
+++ b/build-chromium/patches/0084-Utility-class-for-adding-shared-preference-keys.patch
@@ -11,10 +11,10 @@
  create mode 100644 base/android/java/src/org/chromium/base/shared_preferences/SharedPrefsUtils.java
 
 diff --git a/base/BUILD.gn b/base/BUILD.gn
-index 3d538b3370caa..110eff5889447 100644
+index a989a351a8765..51084c21d7911 100644
 --- a/base/BUILD.gn
 +++ b/base/BUILD.gn
-@@ -4507,6 +4507,9 @@ if (is_android) {
+@@ -4588,6 +4588,9 @@ if (is_android) {
        "android/java/src/org/chromium/base/shared_preferences/SharedPreferencesManager.java",
        "android/java/src/org/chromium/base/shared_preferences/StrictPreferenceKeyChecker.java",
      ]
@@ -23,7 +23,7 @@
 +    ]
    }
  
-   android_aidl("process_launcher_aidl") {
+   android_library("base_cached_flags_java") {
 diff --git a/base/android/java/src/org/chromium/base/shared_preferences/SharedPrefsUtils.java b/base/android/java/src/org/chromium/base/shared_preferences/SharedPrefsUtils.java
 new file mode 100644
 index 0000000000000..d482be2d6cc06
diff --git a/build-chromium/patches/0086-Helper-class-for-modifying-preferences-at-chrome-lay.patch b/build-chromium/patches/0085-Helper-class-for-modifying-preferences-at-chrome-lay.patch
similarity index 100%
rename from build-chromium/patches/0086-Helper-class-for-modifying-preferences-at-chrome-lay.patch
rename to build-chromium/patches/0085-Helper-class-for-modifying-preferences-at-chrome-lay.patch
diff --git a/build-chromium/patches/0087-Utility-class-for-modifying-preferences-at-Privacy-s.patch b/build-chromium/patches/0086-Utility-class-for-modifying-preferences-at-Privacy-s.patch
similarity index 97%
rename from build-chromium/patches/0087-Utility-class-for-modifying-preferences-at-Privacy-s.patch
rename to build-chromium/patches/0086-Utility-class-for-modifying-preferences-at-Privacy-s.patch
index 739e267..d03f077 100644
--- a/build-chromium/patches/0087-Utility-class-for-modifying-preferences-at-Privacy-s.patch
+++ b/build-chromium/patches/0086-Utility-class-for-modifying-preferences-at-Privacy-s.patch
@@ -49,7 +49,7 @@
 +</PreferenceScreen>
 +
 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
-index 85177ad55395a..621f86ce4473a 100644
+index 6d36f86cc96e8..021a074b4b8d0 100644
 --- 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
 @@ -78,6 +78,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
@@ -61,7 +61,7 @@
          Preference sandboxPreference = findPreference(PREF_PRIVACY_SANDBOX);
          // Overwrite the click listener to pass a correct referrer to the fragment.
          sandboxPreference.setOnPreferenceClickListener(
-@@ -205,6 +207,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
+@@ -203,6 +205,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
                              thirdPartyCookies.getTitle().toString());
          }
  
@@ -70,7 +70,7 @@
          updatePreferences();
      }
  
-@@ -326,6 +330,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
+@@ -324,6 +328,8 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
                              UserPrefs.get(getProfile()).getInteger(COOKIE_CONTROLS_MODE)));
          }
  
diff --git a/build-chromium/patches/0088-Remove-not-applicable-additional-terms-of-services.patch b/build-chromium/patches/0087-Remove-not-applicable-additional-terms-of-services.patch
similarity index 100%
rename from build-chromium/patches/0088-Remove-not-applicable-additional-terms-of-services.patch
rename to build-chromium/patches/0087-Remove-not-applicable-additional-terms-of-services.patch
diff --git a/build-chromium/patches/0091-remove-unwanted-sync-and-services-link.patch b/build-chromium/patches/0090-remove-unwanted-sync-and-services-link.patch
similarity index 92%
rename from build-chromium/patches/0091-remove-unwanted-sync-and-services-link.patch
rename to build-chromium/patches/0090-remove-unwanted-sync-and-services-link.patch
index 72861f2..348a0aa 100644
--- a/build-chromium/patches/0091-remove-unwanted-sync-and-services-link.patch
+++ b/build-chromium/patches/0090-remove-unwanted-sync-and-services-link.patch
@@ -8,10 +8,10 @@
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 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
-index 621f86ce4473a..0c5cb984efa6f 100644
+index 021a074b4b8d0..3c7f9d25b2e0f 100644
 --- 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
-@@ -185,8 +185,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
+@@ -183,8 +183,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
          Preference secureDnsPref = findPreference(PREF_SECURE_DNS);
          secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled());
  
diff --git a/build-chromium/patches/0092-remove-safety-check-menu.patch b/build-chromium/patches/0091-remove-safety-check-menu.patch
similarity index 89%
rename from build-chromium/patches/0092-remove-safety-check-menu.patch
rename to build-chromium/patches/0091-remove-safety-check-menu.patch
index 2cc2d68..25d2e99 100644
--- a/build-chromium/patches/0092-remove-safety-check-menu.patch
+++ b/build-chromium/patches/0091-remove-safety-check-menu.patch
@@ -8,10 +8,10 @@
  1 file changed, 2 insertions(+)
 
 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
-index 5bfc494a117a0..5fbd9902c2dab 100644
+index 043684391072a..604a1e44dd8f5 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
-@@ -236,6 +236,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
+@@ -242,6 +242,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
              templateUrlService.load();
          }
  
diff --git a/build-chromium/patches/0093-remove-unwanted-account-and-services-section.patch b/build-chromium/patches/0092-remove-unwanted-account-and-services-section.patch
similarity index 90%
rename from build-chromium/patches/0093-remove-unwanted-account-and-services-section.patch
rename to build-chromium/patches/0092-remove-unwanted-account-and-services-section.patch
index 6d482a3..03eeeb4 100644
--- a/build-chromium/patches/0093-remove-unwanted-account-and-services-section.patch
+++ b/build-chromium/patches/0092-remove-unwanted-account-and-services-section.patch
@@ -8,10 +8,10 @@
  1 file changed, 2 insertions(+)
 
 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
-index 5fbd9902c2dab..0816b785cc72e 100644
+index 604a1e44dd8f5..3a519a943dac0 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
-@@ -237,6 +237,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
+@@ -243,6 +243,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
          }
  
          getPreferenceScreen().removePreference(findPreference(PREF_SAFETY_CHECK));
diff --git a/build-chromium/patches/0094-remove-translate-offer-preference.patch b/build-chromium/patches/0093-remove-translate-offer-preference.patch
similarity index 100%
rename from build-chromium/patches/0094-remove-translate-offer-preference.patch
rename to build-chromium/patches/0093-remove-translate-offer-preference.patch
diff --git a/build-chromium/patches/0095-Hide-Sign-In-preference-when-disallowed.patch b/build-chromium/patches/0094-Hide-Sign-In-preference-when-disallowed.patch
similarity index 80%
rename from build-chromium/patches/0095-Hide-Sign-In-preference-when-disallowed.patch
rename to build-chromium/patches/0094-Hide-Sign-In-preference-when-disallowed.patch
index 8bbd5c1..17eeb73 100644
--- a/build-chromium/patches/0095-Hide-Sign-In-preference-when-disallowed.patch
+++ b/build-chromium/patches/0094-Hide-Sign-In-preference-when-disallowed.patch
@@ -8,14 +8,14 @@
  1 file changed, 1 insertion(+)
 
 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SignInPreference.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SignInPreference.java
-index 043ab492edd75..6db3510b53b0a 100644
+index a24437dfebf3e..e64daa47ae9ea 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SignInPreference.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/SignInPreference.java
-@@ -158,6 +158,7 @@ public class SignInPreference extends Preference
+@@ -163,6 +163,7 @@ public class SignInPreference extends Preference
      }
  
      private void setupSigninDisallowed() {
-+        setViewEnabled(false);
++        setViewEnabledAndShowAlertIcon(/* enabled= */ false, /* alertIconVisible= */ false);
          mWasGenericSigninPromoDisplayed = false;
      }
  
diff --git a/build-chromium/patches/0106-Add-missing-null-check-for-password-manager-autofill.patch b/build-chromium/patches/0106-Add-missing-null-check-for-password-manager-autofill.patch
index 7f23a3b..32092f2 100644
--- a/build-chromium/patches/0106-Add-missing-null-check-for-password-manager-autofill.patch
+++ b/build-chromium/patches/0106-Add-missing-null-check-for-password-manager-autofill.patch
@@ -8,10 +8,10 @@
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
-index d37448c396471..dd2d3471406cd 100644
+index 8bc8fe59b4e26..1372f3c440ff0 100644
 --- a/components/autofill/content/renderer/password_autofill_agent.cc
 +++ b/components/autofill/content/renderer/password_autofill_agent.cc
-@@ -827,7 +827,9 @@ void PasswordAutofillAgent::UpdatePasswordStateForTextChange(
+@@ -832,7 +832,9 @@ void PasswordAutofillAgent::UpdatePasswordStateForTextChange(
  
  void PasswordAutofillAgent::TrackAutofilledElement(
      const blink::WebFormControlElement& element) {
diff --git a/build-chromium/patches/0112-Drop-workaround-with-android-autofill-in-compatibili.patch b/build-chromium/patches/0111-Drop-workaround-with-android-autofill-in-compatibili.patch
similarity index 93%
rename from build-chromium/patches/0112-Drop-workaround-with-android-autofill-in-compatibili.patch
rename to build-chromium/patches/0111-Drop-workaround-with-android-autofill-in-compatibili.patch
index a165412..fc935e3 100644
--- a/build-chromium/patches/0112-Drop-workaround-with-android-autofill-in-compatibili.patch
+++ b/build-chromium/patches/0111-Drop-workaround-with-android-autofill-in-compatibili.patch
@@ -11,10 +11,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
-index 3a366ebbee8bf..bdf7e5d05d4c5 100644
+index cbd3107d111eb..3e1238e52f5cf 100644
 --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
 +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/UrlBar.java
-@@ -384,7 +384,7 @@ public abstract class UrlBar extends AutocompleteEditText {
+@@ -379,7 +379,7 @@ public abstract class UrlBar extends AutocompleteEditText {
              // the domain changes. We restore this behavior by mimicking the relevant part of
              // TextView.notifyListeningManagersAfterTextChanged().
              // https://cs.android.com/android/platform/superproject/+/5d123b67756dffcfdebdb936ab2de2b29c799321:frameworks/base/core/java/android/widget/TextView.java;l=10618;drc=master;bpv=0
diff --git a/build-chromium/patches/0113-Enable-android-autofill-on-http-authentication-dialo.patch b/build-chromium/patches/0112-Enable-android-autofill-on-http-authentication-dialo.patch
similarity index 100%
rename from build-chromium/patches/0113-Enable-android-autofill-on-http-authentication-dialo.patch
rename to build-chromium/patches/0112-Enable-android-autofill-on-http-authentication-dialo.patch
diff --git a/build-chromium/patches/0114-Support-both-password-manager-and-android-autofill-f.patch b/build-chromium/patches/0113-Support-both-password-manager-and-android-autofill-f.patch
similarity index 72%
rename from build-chromium/patches/0114-Support-both-password-manager-and-android-autofill-f.patch
rename to build-chromium/patches/0113-Support-both-password-manager-and-android-autofill-f.patch
index 58572d7..39aaea3 100644
--- a/build-chromium/patches/0114-Support-both-password-manager-and-android-autofill-f.patch
+++ b/build-chromium/patches/0113-Support-both-password-manager-and-android-autofill-f.patch
@@ -6,15 +6,15 @@
 
 ---
  .../autofill/content/renderer/autofill_agent.cc     |  2 --
- .../content/renderer/password_autofill_agent.cc     | 11 -----------
+ .../content/renderer/password_autofill_agent.cc     | 10 ----------
  .../core/browser/browser_autofill_manager.cc        | 13 +++++++++++++
- 3 files changed, 13 insertions(+), 13 deletions(-)
+ 3 files changed, 13 insertions(+), 12 deletions(-)
 
 diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc
-index 382710524cd30..0e80f8c6eb647 100644
+index 21e0318be88f1..114990e514cbd 100644
 --- a/components/autofill/content/renderer/autofill_agent.cc
 +++ b/components/autofill/content/renderer/autofill_agent.cc
-@@ -556,14 +556,12 @@ void AutofillAgent::OnTextFieldDidChange(const WebFormControlElement& element) {
+@@ -514,14 +514,12 @@ void AutofillAgent::OnTextFieldDidChange(const WebFormControlElement& element) {
    if (password_generation_agent_ && !input_element.IsNull() &&
        password_generation_agent_->TextDidChangeInTextField(input_element)) {
      is_popup_possibly_visible_ = true;
@@ -30,32 +30,31 @@
  
    if (!input_element.IsNull()) {
 diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc
-index dd2d3471406cd..f467d2993f5b3 100644
+index 1372f3c440ff0..b6b2fa4780a65 100644
 --- a/components/autofill/content/renderer/password_autofill_agent.cc
 +++ b/components/autofill/content/renderer/password_autofill_agent.cc
-@@ -1146,17 +1146,6 @@ bool PasswordAutofillAgent::ShowSuggestions(const WebInputElement& element,
-   if (element.Value().length() > kMaximumTextSizeForAutocomplete)
+@@ -1612,16 +1612,6 @@ bool PasswordAutofillAgent::ShowSuggestionsForDomain(
      return false;
+   }
  
 -#if BUILDFLAG(IS_ANDROID)
--  // Don't call ShowSuggestionPopup if a keyboard replacing surface is currently
--  // showing. Since a keyboard replacing surface in spirit is very similar to a
--  // suggestion pop-up, return true so that the AutofillAgent does not try to
--  // show other autofill suggestions instead.
+-  // Don't call `ShowSuggestionPopup` if a keyboard replacing surface is
+-  // currently showing. Since a keyboard replacing surface in spirit is very
+-  // similar to a suggestion pop-up, return true so that the AutofillAgent does
+-  // not try to show other autofill suggestions instead.
 -  if (keyboard_replacing_surface_state_ ==
 -      KeyboardReplacingSurfaceState::kIsShowing) {
 -    return true;
 -  }
 -#endif
--
-   if (!HasDocumentWithValidFrame(element))
-     return false;
  
+   if (!HasDocumentWithValidFrame(element)) {
+     return false;
 diff --git a/components/autofill/core/browser/browser_autofill_manager.cc b/components/autofill/core/browser/browser_autofill_manager.cc
-index c87e797550ce2..1e741c34c8ce9 100644
+index 103dc76137de5..2e212d852f3b7 100644
 --- a/components/autofill/core/browser/browser_autofill_manager.cc
 +++ b/components/autofill/core/browser/browser_autofill_manager.cc
-@@ -1114,6 +1114,19 @@ void BrowserAutofillManager::OnAskForValuesToFillImpl(
+@@ -965,6 +965,19 @@ void BrowserAutofillManager::OnAskForValuesToFillImpl(
    if (base::FeatureList::IsEnabled(features::kAutofillDisableFilling)) {
      return;
    }
@@ -74,4 +73,4 @@
 +  }
  
    external_delegate_->SetCurrentDataListValues(field.datalist_options);
-   external_delegate_->OnQuery(form, field, transformed_box);
+   external_delegate_->OnQuery(form, field, transformed_box, trigger_source);
diff --git a/build-chromium/patches/0114-Support-for-both-browser-and-android-autofill-functi.patch b/build-chromium/patches/0114-Support-for-both-browser-and-android-autofill-functi.patch
new file mode 100644
index 0000000..5ffbf94
--- /dev/null
+++ b/build-chromium/patches/0114-Support-for-both-browser-and-android-autofill-functi.patch
@@ -0,0 +1,364 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: fgei <fgei@gmail.com>
+Date: Tue, 21 Feb 2023 01:48:15 +0000
+Subject: [PATCH] Support for both browser and android autofill functionality
+
+---
+ .../ui/autofill/chrome_autofill_client.cc     | 14 +++++
+ .../ui/autofill/chrome_autofill_client.h      |  6 +++
+ .../browser/android_autofill_client.cc        | 12 +++++
+ .../browser/android_autofill_client.h         |  6 +++
+ .../content/browser/content_autofill_client.h | 12 +++++
+ .../browser/content_autofill_driver.cc        | 53 +++++++++++++++++++
+ .../content/browser/content_autofill_driver.h |  4 ++
+ .../content_autofill_driver_factory.cc        |  1 +
+ .../autofill/core/browser/autofill_driver.h   |  6 +++
+ .../core/browser/test_autofill_driver.cc      |  8 +++
+ .../core/browser/test_autofill_driver.h       |  3 ++
+ 11 files changed, 125 insertions(+)
+
+diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc
+index 31c18bd793885..c270bf816f25d 100644
+--- a/chrome/browser/ui/autofill/chrome_autofill_client.cc
++++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
+@@ -61,6 +61,9 @@
+ #include "chrome/browser/web_data_service_factory.h"
+ #include "chrome/common/channel_info.h"
+ #include "chrome/common/url_constants.h"
++#if BUILDFLAG(IS_ANDROID)
++#include "components/android_autofill/browser/android_autofill_manager.h"
++#endif // BUILDFLAG(IS_ANDROID)
+ #include "components/autofill/content/browser/autofill_log_router_factory.h"
+ #include "components/autofill/content/browser/content_autofill_driver.h"
+ #include "components/autofill/content/browser/content_autofill_driver_factory.h"
+@@ -1453,4 +1456,15 @@ void ChromeAutofillClient::InitAgent(
+   }
+ }
+ 
++std::unique_ptr<AutofillManager> ChromeAutofillClient::CreateSecondaryManager(
++    base::PassKey<ContentAutofillDriver> pass_key,
++    ContentAutofillDriver& driver) {
++  return std::make_unique<AndroidAutofillManager>(&driver, this);
++}
++
++void ChromeAutofillClient::InitSecondaryAgent(
++    base::PassKey<ContentAutofillDriverFactory> pass_key,
++    const mojo::AssociatedRemote<mojom::AutofillAgent>& agent) {
++}
++
+ }  // namespace autofill
+diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.h b/chrome/browser/ui/autofill/chrome_autofill_client.h
+index 598c40b4eb6dc..c33813b569997 100644
+--- a/chrome/browser/ui/autofill/chrome_autofill_client.h
++++ b/chrome/browser/ui/autofill/chrome_autofill_client.h
+@@ -296,6 +296,12 @@ class ChromeAutofillClient : public ContentAutofillClient,
+   void InitAgent(
+       base::PassKey<ContentAutofillDriverFactory> pass_key,
+       const mojo::AssociatedRemote<mojom::AutofillAgent>& agent) override;
++  std::unique_ptr<AutofillManager> CreateSecondaryManager(
++      base::PassKey<ContentAutofillDriver> pass_key,
++      ContentAutofillDriver& driver) override;
++  void InitSecondaryAgent(
++      base::PassKey<ContentAutofillDriverFactory> pass_key,
++      const mojo::AssociatedRemote<mojom::AutofillAgent>& agent) override;
+ 
+  protected:
+   explicit ChromeAutofillClient(content::WebContents* web_contents);
+diff --git a/components/android_autofill/browser/android_autofill_client.cc b/components/android_autofill/browser/android_autofill_client.cc
+index 557ed85cd56d9..55ccc058fd391 100644
+--- a/components/android_autofill/browser/android_autofill_client.cc
++++ b/components/android_autofill/browser/android_autofill_client.cc
+@@ -410,4 +410,16 @@ void AndroidAutofillClient::InitAgent(
+     const mojo::AssociatedRemote<autofill::mojom::AutofillAgent>& agent) {
+ }
+ 
++std::unique_ptr<autofill::AutofillManager> AndroidAutofillClient::CreateSecondaryManager(
++    base::PassKey<autofill::ContentAutofillDriver> pass_key,
++    autofill::ContentAutofillDriver& driver) {
++  return 0;
++}
++
++void AndroidAutofillClient::InitSecondaryAgent(
++    base::PassKey<autofill::ContentAutofillDriverFactory> pass_key,
++    const mojo::AssociatedRemote<autofill::mojom::AutofillAgent>& agent) {
++  // empty block, cannot use `NOTREACHED();`, this is also called in webview
++}
++
+ }  // namespace android_autofill
+diff --git a/components/android_autofill/browser/android_autofill_client.h b/components/android_autofill/browser/android_autofill_client.h
+index 89e84922e6adc..5b2e8150c5d7d 100644
+--- a/components/android_autofill/browser/android_autofill_client.h
++++ b/components/android_autofill/browser/android_autofill_client.h
+@@ -161,6 +161,12 @@ class AndroidAutofillClient : public autofill::ContentAutofillClient {
+   void InitAgent(base::PassKey<autofill::ContentAutofillDriverFactory> pass_key,
+                  const mojo::AssociatedRemote<autofill::mojom::AutofillAgent>&
+                      agent) override;
++  std::unique_ptr<autofill::AutofillManager> CreateSecondaryManager(
++      base::PassKey<autofill::ContentAutofillDriver> pass_key,
++      autofill::ContentAutofillDriver& driver) override;
++  void InitSecondaryAgent(
++      base::PassKey<autofill::ContentAutofillDriverFactory> pass_key,
++      const mojo::AssociatedRemote<autofill::mojom::AutofillAgent>& agent) override;
+ 
+  private:
+   friend class content::WebContentsUserData<AndroidAutofillClient>;
+diff --git a/components/autofill/content/browser/content_autofill_client.h b/components/autofill/content/browser/content_autofill_client.h
+index 19e42727f1969..166ddd51f6c99 100644
+--- a/components/autofill/content/browser/content_autofill_client.h
++++ b/components/autofill/content/browser/content_autofill_client.h
+@@ -41,6 +41,18 @@ class ContentAutofillClient
+       base::PassKey<ContentAutofillDriverFactory> pass_key,
+       const mojo::AssociatedRemote<mojom::AutofillAgent>& agent) = 0;
+ 
++  // Called by ContentAutofillDriver's constructor to inject embedder-specific
++  // behaviour. Implementations should not call into `driver`.
++  virtual std::unique_ptr<AutofillManager> CreateSecondaryManager(
++      base::PassKey<ContentAutofillDriver> pass_key,
++      ContentAutofillDriver& driver) = 0;
++
++  // Called by ContentAutofillDriverFactory to tweak the AutofillAgent in to the
++  // embedder's needs.
++  virtual void InitSecondaryAgent(
++      base::PassKey<ContentAutofillDriverFactory> pass_key,
++      const mojo::AssociatedRemote<mojom::AutofillAgent>& agent) = 0;
++
+  private:
+   friend class content::WebContentsUserData<ContentAutofillClient>;
+ 
+diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc
+index 71c12c2949d2f..c38a184961428 100644
+--- a/components/autofill/content/browser/content_autofill_driver.cc
++++ b/components/autofill/content/browser/content_autofill_driver.cc
+@@ -85,6 +85,7 @@ ContentAutofillDriver::ContentAutofillDriver(
+     ContentAutofillDriverFactory* owner)
+     : render_frame_host_(*render_frame_host), owner_(*owner) {
+   autofill_manager_ = owner_->client().CreateManager(/*pass_key=*/{}, *this);
++  secondary_autofill_manager_ = owner_->client().CreateSecondaryManager(/*pass_key=*/{}, *this);
+ }
+ 
+ ContentAutofillDriver::~ContentAutofillDriver() {
+@@ -160,6 +161,18 @@ AutofillManager& ContentAutofillDriver::GetAutofillManager() {
+   return *autofill_manager_;
+ }
+ 
++AutofillManager& ContentAutofillDriver::GetSecondaryAutofillManager() {
++  return *secondary_autofill_manager_;
++}
++
++bool ContentAutofillDriver::HasSecondaryAutofillManager() {
++  if (secondary_autofill_manager_) {
++    return true;
++  }
++
++  return false;
++}
++
+ std::optional<LocalFrameToken> ContentAutofillDriver::Resolve(
+     FrameToken query) {
+   if (absl::holds_alternative<LocalFrameToken>(query)) {
+@@ -423,6 +436,10 @@ void ContentAutofillDriver::FormsSeen(
+                         const std::vector<FormGlobalId>& removed_forms) {
+                        target->GetAutofillManager().OnFormsSeen(
+                            WithNewVersion(updated_forms), removed_forms);
++                       if (target->HasSecondaryAutofillManager()) {
++                         target->GetSecondaryAutofillManager().OnFormsSeen(
++                             WithNewVersion(updated_forms), removed_forms);
++                       }
+                      });
+ }
+ 
+@@ -440,6 +457,10 @@ void ContentAutofillDriver::FormSubmitted(
+          bool known_success, mojom::SubmissionSource submission_source) {
+         target->GetAutofillManager().OnFormSubmitted(
+             WithNewVersion(form), known_success, submission_source);
++        if (target->HasSecondaryAutofillManager()) {
++          target->GetSecondaryAutofillManager().OnFormSubmitted(
++              WithNewVersion(form), known_success, submission_source);
++        }
+       });
+ }
+ 
+@@ -461,6 +482,10 @@ void ContentAutofillDriver::TextFieldDidChange(const FormData& raw_form,
+          base::TimeTicks timestamp) {
+         target->GetAutofillManager().OnTextFieldDidChange(
+             WithNewVersion(form), field, bounding_box, timestamp);
++        if (target->HasSecondaryAutofillManager()) {
++          target->GetSecondaryAutofillManager().OnTextFieldDidChange(
++            WithNewVersion(form), field, bounding_box, timestamp);
++        }
+       });
+ }
+ 
+@@ -480,6 +505,10 @@ void ContentAutofillDriver::TextFieldDidScroll(const FormData& raw_form,
+          const FormFieldData& field, const gfx::RectF& bounding_box) {
+         target->GetAutofillManager().OnTextFieldDidScroll(WithNewVersion(form),
+                                                           field, bounding_box);
++        if (target->HasSecondaryAutofillManager()) {
++          target->GetSecondaryAutofillManager().OnTextFieldDidScroll(WithNewVersion(form),
++                                                            field, bounding_box);
++        }
+       });
+ }
+ 
+@@ -500,6 +529,10 @@ void ContentAutofillDriver::SelectControlDidChange(
+          const FormFieldData& field, const gfx::RectF& bounding_box) {
+         target->GetAutofillManager().OnSelectControlDidChange(
+             WithNewVersion(form), field, bounding_box);
++        if (target->HasSecondaryAutofillManager()) {
++          target->GetSecondaryAutofillManager().OnSelectControlDidChange(
++            WithNewVersion(form), field, bounding_box);
++        }
+       });
+ }
+ 
+@@ -522,6 +555,10 @@ void ContentAutofillDriver::AskForValuesToFill(
+          AutofillSuggestionTriggerSource trigger_source) {
+         target->GetAutofillManager().OnAskForValuesToFill(
+             WithNewVersion(form), field, bounding_box, trigger_source);
++        if (target->HasSecondaryAutofillManager()) {
++          target->GetSecondaryAutofillManager().OnAskForValuesToFill(
++            WithNewVersion(form), field, bounding_box, trigger_source);
++        }
+       });
+ }
+ 
+@@ -533,6 +570,9 @@ void ContentAutofillDriver::HidePopup() {
+     DCHECK(!target->IsPrerendering())
+         << "We should never affect UI while prerendering";
+     target->GetAutofillManager().OnHidePopup();
++    if (target->HasSecondaryAutofillManager()) {
++      target->GetSecondaryAutofillManager().OnHidePopup();
++    }
+   });
+ }
+ 
+@@ -544,6 +584,9 @@ void ContentAutofillDriver::FocusNoLongerOnForm(bool had_interacted_form) {
+       this, had_interacted_form,
+       [](autofill::AutofillDriver* target, bool had_interacted_form) {
+         target->GetAutofillManager().OnFocusNoLongerOnForm(had_interacted_form);
++        if (target->HasSecondaryAutofillManager()) {
++          target->GetSecondaryAutofillManager().OnFocusNoLongerOnForm(had_interacted_form);
++        }
+       });
+ }
+ 
+@@ -566,6 +609,9 @@ void ContentAutofillDriver::FocusOnFormField(const FormData& raw_form,
+       },
+       [](autofill::AutofillDriver* target) {
+         target->GetAutofillManager().OnFocusNoLongerOnForm(true);
++        if (target->HasSecondaryAutofillManager()) {
++          target->GetSecondaryAutofillManager().OnFocusNoLongerOnForm(true);
++        }
+       });
+ }
+ 
+@@ -580,6 +626,10 @@ void ContentAutofillDriver::DidFillAutofillFormData(const FormData& raw_form,
+          base::TimeTicks timestamp) {
+         target->GetAutofillManager().OnDidFillAutofillFormData(
+             WithNewVersion(form), timestamp);
++        if (target->HasSecondaryAutofillManager()) {
++          target->GetSecondaryAutofillManager().OnDidFillAutofillFormData(
++            WithNewVersion(form), timestamp);
++        }
+       });
+ }
+ 
+@@ -641,6 +691,9 @@ 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<mojom::AutofillAgent>&
+diff --git a/components/autofill/content/browser/content_autofill_driver.h b/components/autofill/content/browser/content_autofill_driver.h
+index 736c27911e20b..c37096948c0fb 100644
+--- a/components/autofill/content/browser/content_autofill_driver.h
++++ b/components/autofill/content/browser/content_autofill_driver.h
+@@ -156,6 +156,8 @@ class ContentAutofillDriver : public AutofillDriver,
+   std::optional<LocalFrameToken> Resolve(FrameToken query) override;
+   ContentAutofillDriver* GetParent() override;
+   AutofillManager& GetAutofillManager() override;
++  AutofillManager& GetSecondaryAutofillManager() override;
++  bool HasSecondaryAutofillManager() override;
+   bool IsInActiveFrame() const override;
+   bool IsInAnyMainFrame() const override;
+   bool IsPrerendering() const override;
+@@ -331,6 +333,8 @@ class ContentAutofillDriver : public AutofillDriver,
+   mojo::AssociatedRemote<mojom::AutofillAgent> autofill_agent_;
+ 
+   std::unique_ptr<AutofillManager> autofill_manager_ = nullptr;
++
++  std::unique_ptr<AutofillManager> secondary_autofill_manager_ = nullptr;
+ };
+ 
+ }  // namespace autofill
+diff --git a/components/autofill/content/browser/content_autofill_driver_factory.cc b/components/autofill/content/browser/content_autofill_driver_factory.cc
+index 0dd163004b217..d3e7cf69c283a 100644
+--- a/components/autofill/content/browser/content_autofill_driver_factory.cc
++++ b/components/autofill/content/browser/content_autofill_driver_factory.cc
+@@ -101,6 +101,7 @@ ContentAutofillDriver* ContentAutofillDriverFactory::DriverForFrame(
+       DCHECK_EQ(driver_map_.find(render_frame_host)->second.get(),
+                 driver.get());
+       client().InitAgent(/*pass_key=*/{}, driver->GetAutofillAgent());
++      client().InitSecondaryAgent(/*pass_key=*/{}, driver->GetAutofillAgent());
+     } else {
+       driver_map_.erase(iter);
+       DCHECK_EQ(driver_map_.count(render_frame_host), 0u);
+diff --git a/components/autofill/core/browser/autofill_driver.h b/components/autofill/core/browser/autofill_driver.h
+index f32d4340b5dfe..03efebeaa21dd 100644
+--- a/components/autofill/core/browser/autofill_driver.h
++++ b/components/autofill/core/browser/autofill_driver.h
+@@ -70,6 +70,12 @@ class AutofillDriver {
+   // Returns the AutofillManager owned by the AutofillDriver.
+   virtual AutofillManager& GetAutofillManager() = 0;
+ 
++  // Returns the secondary AutofillManager owned by the AutofillDriver.
++  virtual AutofillManager& GetSecondaryAutofillManager() = 0;
++
++  // Returns if there is a secondary AutofillManager owned by the AutofillDriver.
++  virtual bool HasSecondaryAutofillManager() = 0;
++
+   // Returns whether the AutofillDriver instance is associated with an active
+   // frame in the MPArch sense.
+   virtual bool IsInActiveFrame() const = 0;
+diff --git a/components/autofill/core/browser/test_autofill_driver.cc b/components/autofill/core/browser/test_autofill_driver.cc
+index 0d07793657acc..10d9e024b4c4b 100644
+--- a/components/autofill/core/browser/test_autofill_driver.cc
++++ b/components/autofill/core/browser/test_autofill_driver.cc
+@@ -13,4 +13,12 @@ AutofillManager& TestAutofillDriver::GetAutofillManager() {
+   return *autofill_manager_;
+ }
+ 
++AutofillManager& TestAutofillDriver::GetSecondaryAutofillManager() {
++  return *secondary_autofill_manager_;
++}
++
++bool TestAutofillDriver::HasSecondaryAutofillManager() {
++  return false;
++}
++
+ }  // namespace autofill
+diff --git a/components/autofill/core/browser/test_autofill_driver.h b/components/autofill/core/browser/test_autofill_driver.h
+index 4980ef107698b..15af50ef750a5 100644
+--- a/components/autofill/core/browser/test_autofill_driver.h
++++ b/components/autofill/core/browser/test_autofill_driver.h
+@@ -191,6 +191,8 @@ class TestAutofillDriver : public TestAutofillDriverTemplate<AutofillDriver> {
+ 
+   // AutofillDriver
+   AutofillManager& GetAutofillManager() override;
++  AutofillManager& GetSecondaryAutofillManager() override;
++  bool HasSecondaryAutofillManager() override;
+ 
+   void set_autofill_manager(std::unique_ptr<AutofillManager> autofill_manager) {
+     autofill_manager_ = std::move(autofill_manager);
+@@ -198,6 +200,7 @@ class TestAutofillDriver : public TestAutofillDriverTemplate<AutofillDriver> {
+ 
+  private:
+   std::unique_ptr<AutofillManager> autofill_manager_ = nullptr;
++  std::unique_ptr<AutofillManager> secondary_autofill_manager_ = nullptr;
+ };
+ 
+ }  // namespace autofill
diff --git a/build-chromium/patches/0115-Support-for-both-browser-and-android-autofill-functi.patch b/build-chromium/patches/0115-Support-for-both-browser-and-android-autofill-functi.patch
deleted file mode 100644
index 5b19e1f..0000000
--- a/build-chromium/patches/0115-Support-for-both-browser-and-android-autofill-functi.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: fgei <fgei@gmail.com>
-Date: Tue, 21 Feb 2023 01:48:15 +0000
-Subject: [PATCH] Support for both browser and android autofill functionality
-
----
- .../browser/android_autofill_manager.cc       | 15 ++++++
- .../browser/android_autofill_manager.h        | 15 ++++++
- .../browser/content_autofill_driver.cc        | 52 +++++++++++++++++++
- .../content/browser/content_autofill_driver.h |  8 +++
- .../autofill/core/browser/autofill_driver.h   |  6 +++
- 5 files changed, 96 insertions(+)
-
-diff --git a/components/android_autofill/browser/android_autofill_manager.cc b/components/android_autofill/browser/android_autofill_manager.cc
-index 0d51b11b639b6..de3e78c4eaec8 100644
---- a/components/android_autofill/browser/android_autofill_manager.cc
-+++ b/components/android_autofill/browser/android_autofill_manager.cc
-@@ -15,6 +15,7 @@
- #include "components/android_autofill/browser/autofill_provider.h"
- #include "components/android_autofill/browser/form_event_logger_weblayer_android.h"
- #include "components/autofill/content/browser/content_autofill_driver.h"
-+#include "components/autofill/core/browser/browser_autofill_manager.h"
- #include "components/autofill/core/common/mojom/autofill_types.mojom-shared.h"
- #include "content/public/browser/render_frame_host.h"
- #include "content/public/browser/web_contents.h"
-@@ -33,6 +34,20 @@ void AndroidDriverInitHook(AutofillClient* client,
-   driver->GetAutofillAgent()->SetQueryPasswordSuggestion(true);
- }
- 
-+void AndroidAndBrowserDriverInitHook(
-+    AutofillClient* client,
-+    const std::string& app_locale,
-+    ContentAutofillDriver* driver) {
-+  driver->set_autofill_manager(std::make_unique<BrowserAutofillManager>(
-+      driver, client, app_locale));
-+  driver->set_secondary_autofill_manager(base::WrapUnique(
-+      new AndroidAutofillManager(driver, client)));
-+  driver->GetAutofillAgent()->SetUserGestureRequired(false);
-+  driver->GetAutofillAgent()->SetSecureContextRequired(true);
-+  driver->GetAutofillAgent()->SetFocusRequiresScroll(false);
-+  driver->GetAutofillAgent()->SetQueryPasswordSuggestion(true);
-+}
-+
- AndroidAutofillManager::AndroidAutofillManager(AutofillDriver* driver,
-                                                AutofillClient* client)
-     : AutofillManager(driver, client) {
-diff --git a/components/android_autofill/browser/android_autofill_manager.h b/components/android_autofill/browser/android_autofill_manager.h
-index 9ef74e9a284a6..2972c6b08a156 100644
---- a/components/android_autofill/browser/android_autofill_manager.h
-+++ b/components/android_autofill/browser/android_autofill_manager.h
-@@ -23,6 +23,16 @@ class AutofillProvider;
- class ContentAutofillDriver;
- class FormEventLoggerWeblayerAndroid;
- 
-+// Creates an AndroidAutofillManager and attaches it to the `driver`.
-+//
-+// This hook is to be passed to CreateForWebContentsAndDelegate().
-+// It is the glue between ContentAutofillDriver[Factory] and
-+// AndroidAutofillManager, BrowserAutofillManager.
-+void AndroidAndBrowserDriverInitHook(
-+    AutofillClient* client,
-+    const std::string& app_locale,
-+    ContentAutofillDriver* driver);
-+
- // Creates an AndroidAutofillManager and attaches it to the `driver`.
- //
- // This hook is to be passed to CreateForWebContentsAndDelegate().
-@@ -92,6 +102,11 @@ class AndroidAutofillManager : public AutofillManager,
-                           PopupItemId popup_item_id) override;
- 
-  protected:
-+  friend void AndroidAndBrowserDriverInitHook(
-+      AutofillClient* client,
-+      const std::string& app_locale,
-+      ContentAutofillDriver* driver);
-+
-   friend void AndroidDriverInitHook(AutofillClient* client,
-                                     ContentAutofillDriver* driver);
- 
-diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc
-index 98437f9b05252..83d44f5932068 100644
---- a/components/autofill/content/browser/content_autofill_driver.cc
-+++ b/components/autofill/content/browser/content_autofill_driver.cc
-@@ -157,6 +157,18 @@ AutofillManager& ContentAutofillDriver::GetAutofillManager() {
-   return *autofill_manager_;
- }
- 
-+AutofillManager& ContentAutofillDriver::GetSecondaryAutofillManager() {
-+  return *secondary_autofill_manager_;
-+}
-+
-+bool ContentAutofillDriver::HasSecondaryAutofillManager() {
-+  if (secondary_autofill_manager_) {
-+    return true;
-+  }
-+
-+  return false;
-+}
-+
- absl::optional<LocalFrameToken> ContentAutofillDriver::Resolve(
-     FrameToken query) {
-   if (absl::holds_alternative<LocalFrameToken>(query)) {
-@@ -455,6 +467,10 @@ void ContentAutofillDriver::FormsSeen(
-                         const std::vector<FormGlobalId>& removed_forms) {
-                        target->GetAutofillManager().OnFormsSeen(
-                            WithNewVersion(updated_forms), removed_forms);
-+                       if (target->HasSecondaryAutofillManager()) {
-+                         target->GetSecondaryAutofillManager().OnFormsSeen(
-+                             WithNewVersion(updated_forms), removed_forms);
-+                       }
-                      });
- }
- 
-@@ -482,6 +498,10 @@ void ContentAutofillDriver::FormSubmitted(
-         }
-         target->GetAutofillManager().OnFormSubmitted(
-             WithNewVersion(form), known_success, submission_source);
-+        if (target->HasSecondaryAutofillManager()) {
-+          target->GetSecondaryAutofillManager().OnFormSubmitted(
-+              WithNewVersion(form), known_success, submission_source);
-+        }
-       });
- }
- 
-@@ -503,6 +523,10 @@ void ContentAutofillDriver::TextFieldDidChange(const FormData& raw_form,
-          base::TimeTicks timestamp) {
-         target->GetAutofillManager().OnTextFieldDidChange(
-             WithNewVersion(form), field, bounding_box, timestamp);
-+        if (target->HasSecondaryAutofillManager()) {
-+          target->GetSecondaryAutofillManager().OnTextFieldDidChange(
-+            WithNewVersion(form), field, bounding_box, timestamp);
-+        }
-       });
- }
- 
-@@ -522,6 +546,10 @@ void ContentAutofillDriver::TextFieldDidScroll(const FormData& raw_form,
-          const FormFieldData& field, const gfx::RectF& bounding_box) {
-         target->GetAutofillManager().OnTextFieldDidScroll(WithNewVersion(form),
-                                                           field, bounding_box);
-+        if (target->HasSecondaryAutofillManager()) {
-+          target->GetSecondaryAutofillManager().OnTextFieldDidScroll(WithNewVersion(form),
-+                                                            field, bounding_box);
-+        }
-       });
- }
- 
-@@ -542,6 +570,10 @@ void ContentAutofillDriver::SelectControlDidChange(
-          const FormFieldData& field, const gfx::RectF& bounding_box) {
-         target->GetAutofillManager().OnSelectControlDidChange(
-             WithNewVersion(form), field, bounding_box);
-+        if (target->HasSecondaryAutofillManager()) {
-+          target->GetSecondaryAutofillManager().OnSelectControlDidChange(
-+            WithNewVersion(form), field, bounding_box);
-+        }
-       });
- }
- 
-@@ -564,6 +596,10 @@ void ContentAutofillDriver::AskForValuesToFill(
-          AutofillSuggestionTriggerSource trigger_source) {
-         target->GetAutofillManager().OnAskForValuesToFill(
-             WithNewVersion(form), field, bounding_box, trigger_source);
-+        if (target->HasSecondaryAutofillManager()) {
-+          target->GetSecondaryAutofillManager().OnAskForValuesToFill(
-+            WithNewVersion(form), field, bounding_box, trigger_source);
-+        }
-       });
- }
- 
-@@ -575,6 +611,9 @@ void ContentAutofillDriver::HidePopup() {
-     DCHECK(!target->IsPrerendering())
-         << "We should never affect UI while prerendering";
-     target->GetAutofillManager().OnHidePopup();
-+    if (target->HasSecondaryAutofillManager()) {
-+      target->GetSecondaryAutofillManager().OnHidePopup();
-+    }
-   });
- }
- 
-@@ -586,6 +625,9 @@ void ContentAutofillDriver::FocusNoLongerOnForm(bool had_interacted_form) {
-       this, had_interacted_form,
-       [](autofill::AutofillDriver* target, bool had_interacted_form) {
-         target->GetAutofillManager().OnFocusNoLongerOnForm(had_interacted_form);
-+        if (target->HasSecondaryAutofillManager()) {
-+          target->GetSecondaryAutofillManager().OnFocusNoLongerOnForm(had_interacted_form);
-+        }
-       });
- }
- 
-@@ -608,6 +650,9 @@ void ContentAutofillDriver::FocusOnFormField(const FormData& raw_form,
-       },
-       [](autofill::AutofillDriver* target) {
-         target->GetAutofillManager().OnFocusNoLongerOnForm(true);
-+        if (target->HasSecondaryAutofillManager()) {
-+          target->GetSecondaryAutofillManager().OnFocusNoLongerOnForm(true);
-+        }
-       });
- }
- 
-@@ -622,6 +667,10 @@ void ContentAutofillDriver::DidFillAutofillFormData(const FormData& raw_form,
-          base::TimeTicks timestamp) {
-         target->GetAutofillManager().OnDidFillAutofillFormData(
-             WithNewVersion(form), timestamp);
-+        if (target->HasSecondaryAutofillManager()) {
-+          target->GetSecondaryAutofillManager().OnDidFillAutofillFormData(
-+            WithNewVersion(form), timestamp);
-+        }
-       });
- }
- 
-@@ -686,6 +735,9 @@ 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<mojom::AutofillAgent>&
-diff --git a/components/autofill/content/browser/content_autofill_driver.h b/components/autofill/content/browser/content_autofill_driver.h
-index 2bf1c751de4eb..1851045fdf3ea 100644
---- a/components/autofill/content/browser/content_autofill_driver.h
-+++ b/components/autofill/content/browser/content_autofill_driver.h
-@@ -132,6 +132,10 @@ class ContentAutofillDriver : public AutofillDriver,
-     autofill_manager_ = std::move(autofill_manager);
-   }
- 
-+  void set_secondary_autofill_manager(std::unique_ptr<AutofillManager> secondary_autofill_manager) {
-+    secondary_autofill_manager_ = std::move(secondary_autofill_manager);
-+  }
-+
-   content::RenderFrameHost* render_frame_host() { return &*render_frame_host_; }
-   const content::RenderFrameHost* render_frame_host() const {
-     return &*render_frame_host_;
-@@ -160,6 +164,8 @@ class ContentAutofillDriver : public AutofillDriver,
-   absl::optional<LocalFrameToken> Resolve(FrameToken query) override;
-   ContentAutofillDriver* GetParent() override;
-   AutofillManager& GetAutofillManager() override;
-+  AutofillManager& GetSecondaryAutofillManager() override;
-+  bool HasSecondaryAutofillManager() override;
-   bool IsInActiveFrame() const override;
-   bool IsInAnyMainFrame() const override;
-   bool IsPrerendering() const override;
-@@ -351,6 +357,8 @@ class ContentAutofillDriver : public AutofillDriver,
- 
-   std::unique_ptr<AutofillManager> autofill_manager_ = nullptr;
- 
-+  std::unique_ptr<AutofillManager> secondary_autofill_manager_ = nullptr;
-+
-   mojo::AssociatedReceiver<mojom::AutofillDriver> receiver_{this};
- 
-   mojo::AssociatedRemote<mojom::AutofillAgent> autofill_agent_;
-diff --git a/components/autofill/core/browser/autofill_driver.h b/components/autofill/core/browser/autofill_driver.h
-index ed61f8b928a1e..c5a2e80443223 100644
---- a/components/autofill/core/browser/autofill_driver.h
-+++ b/components/autofill/core/browser/autofill_driver.h
-@@ -69,6 +69,12 @@ class AutofillDriver {
-   // Returns the AutofillManager owned by the AutofillDriver.
-   virtual AutofillManager& GetAutofillManager() = 0;
- 
-+  // Returns the secondary AutofillManager owned by the AutofillDriver.
-+  virtual AutofillManager& GetSecondaryAutofillManager() = 0;
-+
-+  // Returns if there is a secondary AutofillManager owned by the AutofillDriver.
-+  virtual bool HasSecondaryAutofillManager() = 0;
-+
-   // Returns whether the AutofillDriver instance is associated with an active
-   // frame in the MPArch sense.
-   virtual bool IsInActiveFrame() const = 0;
diff --git a/build-chromium/patches/0116-Support-native-Android-autofill-at-browser.patch b/build-chromium/patches/0115-Support-native-Android-autofill-at-browser.patch
similarity index 82%
rename from build-chromium/patches/0116-Support-native-Android-autofill-at-browser.patch
rename to build-chromium/patches/0115-Support-native-Android-autofill-at-browser.patch
index d687b0e..1c7d802 100644
--- a/build-chromium/patches/0116-Support-native-Android-autofill-at-browser.patch
+++ b/build-chromium/patches/0115-Support-native-Android-autofill-at-browser.patch
@@ -7,43 +7,21 @@
 entries, reusing the codebase used for webview's android autofill
 support.
 ---
- android_webview/browser/aw_autofill_client.cc |  4 ++
  chrome/android/BUILD.gn                       |  1 +
- .../chromium/chrome/browser/tab/TabImpl.java  | 44 +++++++++++++++++
+ .../chromium/chrome/browser/tab/TabImpl.java  | 45 +++++++++++++++++
  .../browser/tab/TabViewAndroidDelegate.java   | 13 +++++
  chrome/browser/BUILD.gn                       |  7 +++
- .../ui/autofill/chrome_autofill_client.cc     | 14 +++++-
+ .../ui/autofill/chrome_autofill_client.cc     |  4 ++
+ .../browser/android_autofill_client.cc        |  4 ++
  .../embedder_support/view/ContentView.java    | 48 +++++++++++++++++++
  .../chromium/ui/base/ViewAndroidDelegate.java |  8 ++++
- 8 files changed, 138 insertions(+), 1 deletion(-)
+ 8 files changed, 130 insertions(+)
 
-diff --git a/android_webview/browser/aw_autofill_client.cc b/android_webview/browser/aw_autofill_client.cc
-index e78b00768655b..4a76d9c0502c8 100644
---- a/android_webview/browser/aw_autofill_client.cc
-+++ b/android_webview/browser/aw_autofill_client.cc
-@@ -73,6 +73,7 @@ AwAutofillClient::GetURLLoaderFactory() {
- 
- autofill::AutofillCrowdsourcingManager*
- AwAutofillClient::GetCrowdsourcingManager() {
-+#if defined(USE_BROWSER_AUTOFILL_ONLY)
-   if (autofill::AutofillProvider::
-           is_crowdsourcing_manager_disabled_for_testing()) {
-     return nullptr;
-@@ -84,6 +85,9 @@ AwAutofillClient::GetCrowdsourcingManager() {
-             this, GetChannel(), GetLogManager());
-   }
-   return crowdsourcing_manager_.get();
-+#else
-+  return nullptr;
-+#endif // defined(USE_BROWSER_AUTOFILL_ONLY)
- }
- 
- autofill::PersonalDataManager* AwAutofillClient::GetPersonalDataManager() {
 diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
-index dac7963df6224..b85c663c9a714 100644
+index fec47e97f8fe6..bd79fac82ab09 100644
 --- a/chrome/android/BUILD.gn
 +++ b/chrome/android/BUILD.gn
-@@ -467,6 +467,7 @@ if (current_toolchain == default_toolchain) {
+@@ -472,6 +472,7 @@ if (current_toolchain == default_toolchain) {
        "//chrome/browser/xsurface:java",
        "//chrome/browser/xsurface_provider:dependency_provider_impl_java",
        "//chrome/browser/xsurface_provider:java",
@@ -52,13 +30,13 @@
        "//components/background_task_scheduler:background_task_scheduler_java",
        "//components/background_task_scheduler:background_task_scheduler_task_ids_java",
 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
-index f5f10dd2f13a1..97c29c85df08b 100644
+index 4fca840ad3a78..88cfd11aa8045 100644
 --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
 +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
-@@ -10,10 +10,14 @@ import android.annotation.SuppressLint;
- import android.app.Activity;
+@@ -9,10 +9,14 @@ import android.app.Activity;
  import android.content.Context;
  import android.graphics.Rect;
+ import android.net.Uri;
 +import android.os.Build;
  import android.text.TextUtils;
 +import android.util.SparseArray;
@@ -70,18 +48,19 @@
  
  import androidx.annotation.NonNull;
  import androidx.annotation.Nullable;
-@@ -51,6 +55,7 @@ import org.chromium.chrome.browser.rlz.RevenueStats;
+@@ -54,6 +58,8 @@ import org.chromium.chrome.browser.tab.Tab.LoadUrlResult;
  import org.chromium.chrome.browser.tab.TabUtils.UseDesktopUserAgentCaller;
  import org.chromium.chrome.browser.ui.native_page.FrozenNativePage;
  import org.chromium.chrome.browser.ui.native_page.NativePage;
 +import org.chromium.components.autofill.AutofillProvider;
++// import org.chromium.components.autofill.AutofillSelectionMenuItemHelper;
  import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils;
  import org.chromium.components.embedder_support.util.UrlConstants;
  import org.chromium.components.embedder_support.view.ContentView;
-@@ -64,9 +69,11 @@ import org.chromium.content_public.browser.ChildProcessImportance;
- import org.chromium.content_public.browser.ContentFeatureList;
+@@ -65,9 +71,11 @@ import org.chromium.content_public.browser.ContentFeatureList;
  import org.chromium.content_public.browser.ContentFeatureMap;
  import org.chromium.content_public.browser.LoadUrlParams;
+ import org.chromium.content_public.browser.NavigationHandle;
 +import org.chromium.content_public.browser.SelectionPopupController;
  import org.chromium.content_public.browser.WebContents;
  import org.chromium.content_public.browser.WebContentsAccessibility;
@@ -90,15 +69,15 @@
  import org.chromium.ui.base.PageTransition;
  import org.chromium.ui.base.ViewAndroidDelegate;
  import org.chromium.ui.base.WindowAndroid;
-@@ -200,6 +207,7 @@ class TabImpl implements Tab {
-     private int mParentId = INVALID_TAB_ID;
+@@ -203,6 +211,7 @@ class TabImpl implements Tab {
      private int mRootId;
+     private @Nullable Token mTabGroupId;
      private @TabUserAgent int mUserAgent = TabUserAgent.DEFAULT;
 +    AutofillProvider mAutofillProvider;
  
      /**
       * Navigation state of the WebContents as returned by nativeGetContentsStateAsByteBuffer(),
-@@ -259,12 +267,18 @@ class TabImpl implements Tab {
+@@ -271,12 +280,18 @@ class TabImpl implements Tab {
                      public void onViewAttachedToWindow(View view) {
                          mIsViewAttachedToWindow = true;
                          updateInteractableState();
@@ -117,7 +96,7 @@
                      }
                  };
          mTabViewManager = new TabViewManagerImpl(this);
-@@ -844,6 +858,11 @@ class TabImpl implements Tab {
+@@ -857,6 +872,11 @@ class TabImpl implements Tab {
          for (TabObserver observer : mObservers) observer.onDestroyed(this);
          mObservers.clear();
  
@@ -129,7 +108,7 @@
          mUserDataHost.destroy();
          mTabViewManager.destroy();
          hideNativePage(false, null);
-@@ -1424,6 +1443,18 @@ class TabImpl implements Tab {
+@@ -1454,6 +1474,18 @@ class TabImpl implements Tab {
          return mWebContentsState == null ? -1 : mWebContentsState.version();
      }
  
@@ -148,7 +127,7 @@
      /**
       * Initializes the {@link WebContents}. Completes the browser content components initialization
       * around a native WebContents pointer.
-@@ -1479,6 +1510,12 @@ class TabImpl implements Tab {
+@@ -1509,6 +1541,12 @@ class TabImpl implements Tab {
              boolean isBackgroundTab = isDetached();
  
              assert mNativeTabAndroid != 0;
@@ -161,7 +140,7 @@
              TabImplJni.get()
                      .initWebContents(
                              mNativeTabAndroid,
-@@ -1489,6 +1526,13 @@ class TabImpl implements Tab {
+@@ -1519,6 +1557,13 @@ class TabImpl implements Tab {
                              new TabContextMenuPopulatorFactory(
                                      mDelegateFactory.createContextMenuPopulatorFactory(this),
                                      this));
@@ -208,10 +187,10 @@
      public void onTopControlsChanged(
              int topControlsOffsetY, int contentOffsetY, int topControlsMinHeightOffsetY) {
 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
-index afdf577837a49..d18e8c3ec8661 100644
+index e9c28ab05bd01..d8685ce0ef18c 100644
 --- a/chrome/browser/BUILD.gn
 +++ b/chrome/browser/BUILD.gn
-@@ -2662,6 +2662,13 @@ static_library("browser") {
+@@ -2660,6 +2660,13 @@ static_library("browser") {
      deps += [ "//chrome/browser/error_reporting" ]
    }
  
@@ -226,20 +205,10 @@
      deps += [
        "//ui/events/ozone",
 diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc
-index 4707fc2d949d2..e762cddf40665 100644
+index c270bf816f25d..4e592b70f7ba7 100644
 --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc
 +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc
-@@ -58,6 +58,9 @@
- #include "chrome/browser/web_data_service_factory.h"
- #include "chrome/common/channel_info.h"
- #include "chrome/common/url_constants.h"
-+#if BUILDFLAG(IS_ANDROID)
-+#include "components/android_autofill/browser/android_autofill_manager.h"
-+#endif // BUILDFLAG(IS_ANDROID)
- #include "components/autofill/content/browser/autofill_log_router_factory.h"
- #include "components/autofill/content/browser/content_autofill_driver.h"
- #include "components/autofill/content/browser/content_autofill_driver_factory.h"
-@@ -218,12 +221,16 @@ ChromeAutofillClient::GetURLLoaderFactory() {
+@@ -245,12 +245,16 @@ ChromeAutofillClient::GetURLLoaderFactory() {
  }
  
  AutofillCrowdsourcingManager* ChromeAutofillClient::GetCrowdsourcingManager() {
@@ -256,20 +225,28 @@
  }
  
  AutofillOptimizationGuide* ChromeAutofillClient::GetAutofillOptimizationGuide()
-@@ -1362,7 +1369,12 @@ void ChromeAutofillClient::OnZoomChanged(
- ChromeAutofillClient::ChromeAutofillClient(content::WebContents* web_contents)
-     : ContentAutofillClient(
-           web_contents,
--          base::BindRepeating(&BrowserDriverInitHook,
-+          base::BindRepeating(
-+#if BUILDFLAG(IS_ANDROID)
-+                              &AndroidAndBrowserDriverInitHook,
+diff --git a/components/android_autofill/browser/android_autofill_client.cc b/components/android_autofill/browser/android_autofill_client.cc
+index 55ccc058fd391..8247c5b9faf3c 100644
+--- a/components/android_autofill/browser/android_autofill_client.cc
++++ b/components/android_autofill/browser/android_autofill_client.cc
+@@ -73,6 +73,7 @@ AndroidAutofillClient::GetURLLoaderFactory() {
+ 
+ autofill::AutofillCrowdsourcingManager*
+ AndroidAutofillClient::GetCrowdsourcingManager() {
++#if defined(USE_BROWSER_AUTOFILL_ONLY)
+   if (autofill::AutofillProvider::
+           is_crowdsourcing_manager_disabled_for_testing()) {
+     return nullptr;
+@@ -84,6 +85,9 @@ AndroidAutofillClient::GetCrowdsourcingManager() {
+             this, GetChannel(), GetLogManager());
+   }
+   return crowdsourcing_manager_.get();
 +#else
-+                              &BrowserDriverInitHook,
-+#endif // BUILDFLAG(IS_ANDROID)
-                               this,
-                               g_browser_process->GetApplicationLocale())),
-       content::WebContentsObserver(web_contents),
++  return nullptr;
++#endif // defined(USE_BROWSER_AUTOFILL_ONLY)
+ }
+ 
+ autofill::PersonalDataManager* AndroidAutofillClient::GetPersonalDataManager() {
 diff --git a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java
 index abe1ac2b7907d..9cf691982660d 100644
 --- a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java
@@ -356,7 +333,7 @@
 +    }
  }
 diff --git a/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java b/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java
-index 0bd9924087048..b2b110c91c1c3 100644
+index 99b29f07becf9..25c744ce5d74e 100644
 --- a/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java
 +++ b/ui/android/java/src/org/chromium/ui/base/ViewAndroidDelegate.java
 @@ -32,6 +32,10 @@ import org.chromium.ui.dragdrop.DragStateTracker;
@@ -370,7 +347,7 @@
  /** Class to acquire, position, and remove anchor views from the implementing View. */
  @JNINamespace("ui")
  public class ViewAndroidDelegate {
-@@ -586,4 +590,8 @@ public class ViewAndroidDelegate {
+@@ -573,4 +577,8 @@ public class ViewAndroidDelegate {
          sDragAndDropDelegateForTesting = testDelegate;
          ResettersForTesting.register(() -> sDragAndDropDelegateForTesting = null);
      }
diff --git a/build-chromium/patches/0117-Disable-Play-services-dependent-password-manager-pre.patch b/build-chromium/patches/0116-Disable-Play-services-dependent-password-manager-pre.patch
similarity index 87%
rename from build-chromium/patches/0117-Disable-Play-services-dependent-password-manager-pre.patch
rename to build-chromium/patches/0116-Disable-Play-services-dependent-password-manager-pre.patch
index c487ed5..439c41b 100644
--- a/build-chromium/patches/0117-Disable-Play-services-dependent-password-manager-pre.patch
+++ b/build-chromium/patches/0116-Disable-Play-services-dependent-password-manager-pre.patch
@@ -9,17 +9,16 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc
-index 85006f2848dde..76521f56db4a7 100644
+index 2483866d026a6..83a596f04f0ca 100644
 --- a/components/password_manager/core/browser/password_manager.cc
 +++ b/components/password_manager/core/browser/password_manager.cc
-@@ -303,9 +303,9 @@ void PasswordManager::RegisterProfilePrefs(
+@@ -301,8 +301,8 @@ void PasswordManager::RegisterProfilePrefs(
        user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
    registry->RegisterBooleanPref(prefs::kPasswordsPrefWithNewLabelUsed, false);
  #if BUILDFLAG(IS_ANDROID)
 -  registry->RegisterBooleanPref(prefs::kOfferToSavePasswordsEnabledGMS, true);
-+  registry->RegisterBooleanPref(prefs::kOfferToSavePasswordsEnabledGMS, false);
-   registry->RegisterBooleanPref(prefs::kSavePasswordsSuspendedByError, false);
 -  registry->RegisterBooleanPref(prefs::kAutoSignInEnabledGMS, true);
++  registry->RegisterBooleanPref(prefs::kOfferToSavePasswordsEnabledGMS, false);
 +  registry->RegisterBooleanPref(prefs::kAutoSignInEnabledGMS, false);
    registry->RegisterBooleanPref(prefs::kSettingsMigratedToUPMLocal, false);
    registry->RegisterIntegerPref(
