From e26a19c4b8c25b77cefd5dc5e5c10c643f21da43 Mon Sep 17 00:00:00 2001 From: Nishith Khanna Date: Thu, 7 Aug 2025 18:45:55 +0530 Subject: [PATCH 01/12] Update to chromium version 139.0.7258.158 --- versions.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/versions.txt b/versions.txt index d33baa87..a5287c86 100644 --- a/versions.txt +++ b/versions.txt @@ -1,3 +1,3 @@ -chromium_version="138.0.7204.179" -cromite_branch="v138.0.7204.184-0509d052981e047d6670967788a3e916c70fd4b9" -ungoogled_chromium_branch="138.0.7204.183-1" +chromium_version="139.0.7258.158" +cromite_branch="v139.0.7258.158-6d6ce62db92b0a6b415c55e9b8fd861da13bfd6e" +ungoogled_chromium_branch="139.0.7258.154-1" -- GitLab From 8b57ca9a9ef6a6866312e7eb1dbd869e59b785d5 Mon Sep 17 00:00:00 2001 From: Nishith Khanna Date: Thu, 7 Aug 2025 18:46:23 +0530 Subject: [PATCH 02/12] [Auto] Update cromite patches --- .../AImageReader-CFI-crash-mitigations.patch | 22 +- .../Add-AllowUserCertificates-flag.patch | 8 +- ...dd-Alt-D-hotkey-to-focus-address-bar.patch | 2 +- .../Add-IsCleartextPermitted-flag.patch | 2 +- .../Add-a-proxy-configuration-page.patch | 24 +- .../Add-an-always-incognito-mode.patch | 193 ++- .../Add-bookmark-import-export-actions.patch | 84 +- .../Add-cromite-flags-support.patch | 139 +- ...dd-custom-tab-intents-privacy-option.patch | 48 +- .../cromite_patches/Add-exit-menu-item.patch | 78 +- ...g-for-omnibox-autocomplete-filtering.patch | 8 +- ...nfigure-maximum-connections-per-host.patch | 2 +- .../Add-flag-to-disable-IPv6-probes.patch | 4 +- ...-to-disable-external-intent-requests.patch | 12 +- .../Add-flag-to-disable-vibration.patch | 6 +- ...Add-lifetime-options-for-permissions.patch | 289 +++-- .../Add-menu-item-to-bookmark-all-tabs.patch | 90 +- .../Add-menu-item-to-view-source.patch | 133 +- .../Add-option-to-force-tablet-UI.patch | 66 +- ...-to-not-persist-tabs-across-sessions.patch | 16 +- .../Add-option-to-use-home-page-as-NTP.patch | 22 +- build/cromite_patches/Add-search-engine.patch | 20 +- .../Add-site-engagement-flag.patch | 8 +- ...-support-for-ISupportHelpAndFeedback.patch | 4 +- .../Add-webGL-site-setting.patch | 8 +- ...ow-building-without-enable_reporting.patch | 22 +- ...ow-building-without-supervised-users.patch | 34 +- .../Allow-playing-audio-in-background.patch | 12 +- ...e-new-tab-page-for-default-home-page.patch | 6 +- ...ioBuffer-AnalyserNode-fp-mitigations.patch | 10 +- .../Block-qjz9zk-or-trk-requests.patch | 10 +- .../Bookmarks-select-all-menu-entry.patch | 8 +- .../Bromite-subresource-adblocker.patch | 84 +- .../Client-hints-overrides.patch | 10 +- .../Content-settings-infrastructure.patch | 295 +++-- ...ctionary-suggestions-for-the-Omnibox.patch | 2 +- ...ble-Accessibility-service-by-default.patch | 2 +- .../Disable-PrivacyGuide.patch | 2 +- .../Disable-TLS-resumption.patch | 14 +- .../Disable-all-predictors-code.patch | 307 +++-- .../Disable-all-promo-dialogs.patch | 12 +- .../Disable-conversion-measurement-api.patch | 56 +- .../Disable-crash-reporting.patch | 6 +- ...Disable-fetching-of-all-field-trials.patch | 32 +- ...media-router-and-remoting-by-default.patch | 16 +- .../Disable-minidump-upload-scheduling.patch | 2 +- .../Disable-omission-of-URL-elements.patch | 2 +- .../Disable-plugins-enumeration.patch | 2 +- ...e-privacy-issues-in-password-manager.patch | 8 +- .../Disable-privacy-sandbox.patch | 45 +- ...e-references-to-fonts.googleapis.com.patch | 2 +- .../Disable-safety-check.patch | 14 +- .../Disable-smart-selection-by-default.patch | 41 +- ...isable-some-signed-exchange-features.patch | 2 +- .../Disable-text-fragments-by-default.patch | 8 +- .../Disable-third-party-origin-trials.patch | 8 +- .../Disable-various-metrics.patch | 20 +- .../Do-not-build-API-keys-infobar.patch | 2 +- .../Do-not-compile-QR-code-sharing.patch | 10 +- .../Do-not-link-with-libatomic.patch | 2 +- build/cromite_patches/DoH-improvements.patch | 8 +- .../Enable-Certificate-Transparency.patch | 2 +- .../Enable-HEVC-by-default.patch | 2 +- .../Enable-ImprovedBookmarks-by-default.patch | 8 +- ...ctOriginIsolation-and-SitePerProcess.patch | 8 +- ...e-darken-websites-checkbox-in-themes.patch | 2 +- ...fwrapv-in-Clang-for-non-UBSan-builds.patch | 2 +- .../Enable-native-Android-autofill.patch | 278 ++-- .../Enable-network-isolation-features.patch | 2 +- .../cromite_patches/Enable-share-intent.patch | 22 +- .../Experimental-user-scripts-support.patch | 1115 ++++++++++++++++- .../Eyeo-Adblock-for-Cromite.patch | 61 +- .../Fix-chromium-build-bugs.patch | 10 +- .../Fix-chromium-vanilla.patch | 4 +- ...ing-against-incognito-mode-detection.patch | 2 +- ...story-number-of-days-privacy-setting.patch | 32 +- ...number-of-autocomplete-matches-to-10.patch | 2 +- .../Invalidate-components-public-key.patch | 2 +- build/cromite_patches/JIT-site-settings.patch | 8 +- .../Keep-empty-tabs-between-sessions.patch | 6 +- ...-allow-screenshots-in-Incognito-mode.patch | 2 +- .../Logcat-crash-reports-UI.patch | 10 +- .../Modify-default-preferences.patch | 10 +- .../Move-navigation-bar-to-bottom.patch | 345 +++-- ...nt-settings-back-to-privacy-settings.patch | 10 +- ...HTTP-probes-for-connection-detection.patch | 2 +- .../OpenSearch-miscellaneous.patch | 4 +- .../Override-Navigator-Language.patch | 4 +- .../Partition-Blink-memory-cache.patch | 18 +- .../Partition-blobs-by-top-frame-URL.patch | 4 +- ...-modal-dialog-flag-to-close-all-tabs.patch | 6 +- ...e-introduce-override_build_timestamp.patch | 4 +- ...ders-in-DoH-requests-to-bare-minimum.patch | 8 +- ...referrals-in-cross-origin-navigation.patch | 28 +- .../Remove-SMS-integration.patch | 8 +- .../Remove-binary-blob-integrations.patch | 435 +++++-- .../Remove-help-menu-item.patch | 51 +- .../Remove-segmentation-platform.patch | 4 +- ...Remove-voice-recognition-integration.patch | 94 +- ...ndow-name-on-cross-origin-navigation.patch | 4 +- ...ce-DoH-probe-domain-with-RIPE-domain.patch | 2 +- .../Restore-LastTabStandingTracker.patch | 6 +- .../Restore-Search-Ready-Omnibox-flag.patch | 4 +- .../Restore-Simplified-NTP-launch.patch | 109 +- ...-button-in-top-toolbar-customization.patch | 48 +- .../Restore-chrome-password-store.patch | 118 +- .../Restore-offline-indicator-v2-flag.patch | 18 +- ...emove-disable-pull-to-refresh-effect.patch | 2 +- ...l-of-execution-context-address-space.patch | 38 +- ...script-content-setting-secondary-url.patch | 30 +- ...-Note-9-SDK27-crazylinker-workaround.patch | 4 +- ...tings-for-cookies-javascript-and-ads.patch | 12 +- .../Site-setting-for-images.patch | 28 +- .../Switch-to-fstack-protector-strong.patch | 2 +- .../Temp-disable-UseContextSnapshot.patch | 2 +- .../Timezone-customization.patch | 12 +- .../Use-browser-navigation-handler.patch | 16 +- .../Use-dummy-DFM-installer.patch | 10 +- .../User-agent-customization.patch | 52 +- build/cromite_patches/Welcome-screen.patch | 81 +- .../autofill-miscellaneous.patch | 35 +- .../cromite_patches/bromite-build-utils.patch | 50 +- .../enable-ftrivial-auto-var-init-zero.patch | 2 +- .../eyeo-133.0.6943.49-android_api.patch | 14 +- .../eyeo-133.0.6943.49-android_settings.patch | 2 +- .../eyeo-133.0.6943.49-base.patch | 46 +- ...yeo-133.0.6943.49-chrome_integration.patch | 68 +- .../eyeo-133.0.6943.49-extension_api.patch | 58 +- ...rce-text-x-suse-ymp-to-be-downloaded.patch | 2 +- ...always-prompt-for-download-directory.patch | 2 +- ...gled-chromium-Disable-profile-avatar.patch | 6 +- ...romium-Disable-translate-integration.patch | 2 +- ...ed-chromium-no-special-hosts-domains.patch | 120 +- ...iew-Hard-no-to-persistent-histograms.patch | 4 +- 134 files changed, 3750 insertions(+), 2278 deletions(-) diff --git a/build/cromite_patches/AImageReader-CFI-crash-mitigations.patch b/build/cromite_patches/AImageReader-CFI-crash-mitigations.patch index 9e1d1665..320fdc29 100644 --- a/build/cromite_patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/cromite_patches/AImageReader-CFI-crash-mitigations.patch @@ -90,7 +90,7 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i 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 -@@ -3514,6 +3514,10 @@ +@@ -3627,6 +3627,10 @@ "chrome-signin-team@google.com" ], "expiry_milestone": 138 @@ -119,7 +119,7 @@ new file mode 100644 diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json --- a/gpu/config/gpu_driver_bug_list.json +++ b/gpu/config/gpu_driver_bug_list.json -@@ -2613,6 +2613,22 @@ +@@ -2617,6 +2617,22 @@ "no_downscaled_overlay_promotion" ] }, @@ -145,7 +145,7 @@ diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_lis diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc -@@ -58,6 +58,11 @@ BASE_FEATURE(kAggressiveShaderCacheLimits, +@@ -59,6 +59,11 @@ BASE_FEATURE(kAggressiveShaderCacheLimits, base::FEATURE_DISABLED_BY_DEFAULT); #if BUILDFLAG(IS_ANDROID) @@ -160,14 +160,14 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc diff --git a/gpu/config/gpu_finch_features.h b/gpu/config/gpu_finch_features.h --- a/gpu/config/gpu_finch_features.h +++ b/gpu/config/gpu_finch_features.h -@@ -26,6 +26,7 @@ GPU_EXPORT BASE_DECLARE_FEATURE(kUseGles2ForOopR); - GPU_EXPORT BASE_DECLARE_FEATURE(kAggressiveShaderCacheLimits); +@@ -26,6 +26,7 @@ GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kUseGles2ForOopR); + GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kAggressiveShaderCacheLimits); #if BUILDFLAG(IS_ANDROID) -+GPU_EXPORT BASE_DECLARE_FEATURE(kAImageReaderMediaPlayer); - GPU_EXPORT BASE_DECLARE_FEATURE(kAndroidSurfaceControl); - GPU_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControl); - GPU_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControlForTV); ++GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kAImageReaderMediaPlayer); + GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kAndroidSurfaceControl); + GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControl); + GPU_CONFIG_EXPORT BASE_DECLARE_FEATURE(kWebViewSurfaceControlForTV); diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc --- a/gpu/config/gpu_util.cc +++ b/gpu/config/gpu_util.cc @@ -207,7 +207,7 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc -@@ -70,6 +70,7 @@ +@@ -69,6 +69,7 @@ #if BUILDFLAG(IS_ANDROID) #include "ui/gfx/android/android_surface_control_compat.h" @@ -215,7 +215,7 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc #endif #if BUILDFLAG(ENABLE_VULKAN) -@@ -687,6 +688,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, +@@ -688,6 +689,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } #endif // BUILDFLAG(IS_WIN) diff --git a/build/cromite_patches/Add-AllowUserCertificates-flag.patch b/build/cromite_patches/Add-AllowUserCertificates-flag.patch index a3b1fa20..ed2df25e 100644 --- a/build/cromite_patches/Add-AllowUserCertificates-flag.patch +++ b/build/cromite_patches/Add-AllowUserCertificates-flag.patch @@ -28,7 +28,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; -@@ -981,6 +982,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -977,6 +978,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity super.onStartWithNative(); ChromeActivitySessionTracker.getInstance().onStartWithNative(getProfileProviderSupplier()); @@ -40,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv 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 -@@ -169,6 +169,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -179,6 +179,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedPerformanceStudy, &feed::kFeedShowSignInCommand, &feed::kFeedSignedOutViewDemotion, @@ -59,7 +59,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_PAGE_SUMMARY = "AdaptiveButtonInTopToolbarPageSummary"; public static final String ALLOW_TAB_CLOSING_UPON_MINIMIZATION = -@@ -680,6 +681,8 @@ public abstract class ChromeFeatureList { +@@ -728,6 +729,8 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidWindowPopupLargeScreen = newCachedFlag(ANDROID_WINDOW_POPUP_LARGE_SCREEN, false); public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, true); @@ -68,7 +68,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sAsyncNotificationManager = newCachedFlag(ASYNC_NOTIFICATION_MANAGER, false, true); public static final CachedFlag sAsyncNotificationManagerForDownload = -@@ -941,6 +944,7 @@ public abstract class ChromeFeatureList { +@@ -1032,6 +1035,7 @@ public abstract class ChromeFeatureList { sAccountForSuppressedKeyboardInsets, sAllowTabClosingUponMinimization, sAndroidAppIntegration, diff --git a/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch b/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch index 4ae4cb70..bec8195b 100644 --- a/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch +++ b/build/cromite_patches/Add-Alt-D-hotkey-to-focus-address-bar.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java -@@ -839,6 +839,11 @@ public class KeyboardShortcuts { +@@ -888,6 +888,11 @@ public class KeyboardShortcuts { KeyEvent.KEYCODE_B, (KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON)); } diff --git a/build/cromite_patches/Add-IsCleartextPermitted-flag.patch b/build/cromite_patches/Add-IsCleartextPermitted-flag.patch index 177c9ea7..de20f56d 100644 --- a/build/cromite_patches/Add-IsCleartextPermitted-flag.patch +++ b/build/cromite_patches/Add-IsCleartextPermitted-flag.patch @@ -44,7 +44,7 @@ new file mode 100644 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -387,6 +387,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { +@@ -398,6 +398,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { } } diff --git a/build/cromite_patches/Add-a-proxy-configuration-page.patch b/build/cromite_patches/Add-a-proxy-configuration-page.patch index 98224260..22244090 100644 --- a/build/cromite_patches/Add-a-proxy-configuration-page.patch +++ b/build/cromite_patches/Add-a-proxy-configuration-page.patch @@ -78,7 +78,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -101,6 +101,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -100,6 +100,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private static final String PREF_PASSWORD_LEAK_DETECTION = "password_leak_detection"; private static final String PREF_SYNC_AND_SERVICES_LINK = "sync_and_services_link"; private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox"; @@ -100,7 +100,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd -@@ -221,6 +221,9 @@ +@@ -215,6 +215,9 @@ @@ -197,7 +197,7 @@ diff --git a/chrome/browser/net/proxy_service_factory.h b/chrome/browser/net/pro diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -204,6 +204,8 @@ +@@ -206,6 +206,8 @@ #include "printing/buildflags/buildflags.h" #include "rlz/buildflags/buildflags.h" @@ -206,7 +206,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/extensions/background_mode_manager.h" #endif -@@ -1613,6 +1615,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1689,6 +1691,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -218,7 +218,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/prefs/chrome_command_line_pref_store.cc b/chrome/browser/prefs/chrome_command_line_pref_store.cc --- a/chrome/browser/prefs/chrome_command_line_pref_store.cc +++ b/chrome/browser/prefs/chrome_command_line_pref_store.cc -@@ -160,7 +160,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() { +@@ -163,7 +163,7 @@ void ChromeCommandLinePrefStore::ApplyProxyMode() { command_line()->GetSwitchValueASCII(switches::kProxyBypassList); SetValue(proxy_config::prefs::kProxy, base::Value(ProxyConfigDictionary::CreateFixedServers( @@ -661,7 +661,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -204,6 +204,8 @@ static_library("ui") { +@@ -194,6 +194,8 @@ static_library("ui") { "webui/metrics_internals/metrics_internals_ui.h", "webui/net_export_ui.cc", "webui/net_export_ui.h", @@ -673,17 +673,17 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/ui/webui/chrome_web_ui_configs.cc --- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc -@@ -57,6 +57,9 @@ +@@ -56,6 +56,9 @@ #include "extensions/buildflags/buildflags.h" #include "printing/buildflags/buildflags.h" +#include "chrome/browser/ui/webui/proxy_config_ui.h" + + - #if BUILDFLAG(ENABLE_NACL) - #include "chrome/browser/ui/webui/nacl_ui.h" + #if BUILDFLAG(ENABLE_WEBUI_CERTIFICATE_VIEWER) + #include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.h" #endif -@@ -422,7 +425,7 @@ void RegisterChromeWebUIConfigs() { +@@ -415,7 +418,7 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); #endif @@ -1150,11 +1150,11 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons + kChromeUIProxyConfigHost, kChromeUIAboutHost, kChromeUIAccessibilityHost, - #if !BUILDFLAG(IS_ANDROID) + kChromeUIActorInternalsHost, diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -179,6 +179,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; +@@ -180,6 +180,8 @@ inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/"; inline constexpr char kChromeUINewTabHost[] = "newtab"; inline constexpr char kChromeUINewTabFooterHost[] = "newtab-footer"; diff --git a/build/cromite_patches/Add-an-always-incognito-mode.patch b/build/cromite_patches/Add-an-always-incognito-mode.patch index 41e4e984..0e1c53ec 100644 --- a/build/cromite_patches/Add-an-always-incognito-mode.patch +++ b/build/cromite_patches/Add-an-always-incognito-mode.patch @@ -28,21 +28,21 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/app/ChromeActivity.java | 4 + .../AppMenuPropertiesDelegateImpl.java | 7 +- .../ChromeContextMenuPopulator.java | 6 +- - .../CustomTabActivityLifecycleUmaTracker.java | 39 ----- + .../CustomTabActivityLifecycleUmaTracker.java | 39 ---- .../CustomTabAppMenuPropertiesDelegate.java | 4 + - .../CustomTabIntentDataProvider.java | 10 ++ + .../CustomTabIntentDataProvider.java | 10 + .../browser/download/DownloadUtils.java | 13 +- .../history/HistoryContentManager.java | 7 +- .../browser/history/HistoryManager.java | 27 ++- .../chrome/browser/history/HistoryPage.java | 16 ++ .../native_page/NativePageFactory.java | 4 +- .../chrome/browser/ntp/RecentTabsManager.java | 28 ++- - .../privacy/settings/IncognitoSettings.java | 162 ++++++++++++++++++ + .../privacy/settings/IncognitoSettings.java | 175 ++++++++++++++++++ .../settings/FragmentDependencyProvider.java | 4 + .../HistoricalTabModelObserver.java | 5 +- .../tab/tab_restore/HistoricalTabSaver.java | 2 +- .../tab_restore/HistoricalTabSaverImpl.java | 17 +- - .../TabbedAppMenuPropertiesDelegate.java | 17 +- + .../TabbedAppMenuPropertiesDelegate.java | 6 +- .../tabbed_mode/TabbedRootUiCoordinator.java | 4 +- .../browser/tabmodel/ChromeTabCreator.java | 5 +- .../tabmodel/TabModelSelectorImpl.java | 3 + @@ -55,17 +55,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../remote_suggestions_service_factory.cc | 5 + .../bookmarks/android/bookmark_bridge.cc | 7 + .../host_content_settings_map_factory.cc | 22 ++- - chrome/browser/history/history_tab_helper.cc | 20 +++ + chrome/browser/history/history_tab_helper.cc | 20 ++ chrome/browser/history/history_tab_helper.h | 10 +- .../android/offline_page_bridge.cc | 11 +- - .../android/offline_page_model_factory.cc | 20 ++- + .../android/offline_page_model_factory.cc | 20 +- .../android/request_coordinator_factory.cc | 33 +++- .../offline_page_model_factory.h | 1 + .../offline_pages/recent_tab_helper.cc | 31 +++- .../browser/offline_pages/recent_tab_helper.h | 5 + .../request_coordinator_factory.h | 4 +- chrome/browser/prefs/browser_prefs.cc | 5 + - chrome/browser/profiles/profile_selections.cc | 10 ++ + chrome/browser/profiles/profile_selections.cc | 10 + chrome/browser/profiles/profile_selections.h | 7 +- .../browser/ui/android/native_page/BUILD.gn | 2 + .../browser/ui/native_page/NativePage.java | 22 ++- @@ -88,7 +88,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 1 + .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + - 69 files changed, 798 insertions(+), 113 deletions(-) + 69 files changed, 800 insertions(+), 113 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java @@ -101,7 +101,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -646,6 +646,7 @@ chrome_java_resources = [ +@@ -639,6 +639,7 @@ chrome_java_resources = [ "java/res/xml/main_preferences_legacy.xml", "java/res/xml/manage_sync_preferences.xml", "java/res/xml/personalize_google_services_preferences.xml", @@ -120,7 +120,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", "java/src/org/chromium/chrome/browser/ActivityUtils.java", -@@ -898,6 +899,7 @@ chrome_java_sources = [ +@@ -902,6 +903,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy/settings/IncognitoLockSettings.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java", @@ -247,7 +247,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -74,6 +74,10 @@ import org.chromium.base.task.TaskTraits; +@@ -74,6 +74,10 @@ import org.chromium.build.annotations.Nullable; import org.chromium.build.annotations.UsedByReflection; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; @@ -258,7 +258,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.IntentHandler.ExternalAppId; import org.chromium.chrome.browser.IntentHandler.TabOpenType; import org.chromium.chrome.browser.app.ChromeActivity; -@@ -726,14 +730,19 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -761,14 +765,19 @@ public class ChromeTabbedActivity extends ChromeActivity { Profile profile = mTabModelSelector.getCurrentModel().getProfile(); // For saving non-incognito tab closures for Recent Tabs. @@ -285,7 +285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct // Defer creation of this helper so it triggers after TabGroupModelFilter observers. mUndoRefocusHelper = new UndoRefocusHelper( -@@ -2876,8 +2885,9 @@ public class ChromeTabbedActivity extends ChromeActivity { +@@ -2951,8 +2960,9 @@ public class ChromeTabbedActivity extends ChromeActivity { // We determine the model as soon as possible so every systems get initialized coherently. boolean startIncognito = @@ -300,7 +300,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct 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 -@@ -96,6 +96,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerH +@@ -95,6 +95,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerH import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager; import org.chromium.chrome.browser.device.DeviceClassManager; import org.chromium.chrome.browser.devtools.DevToolsWindowAndroid; @@ -308,7 +308,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.dom_distiller.DomDistillerUiUtils; import org.chromium.chrome.browser.dom_distiller.ReaderModeManager; import org.chromium.chrome.browser.download.DownloadManagerService; -@@ -1980,6 +1981,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -1981,6 +1982,9 @@ public abstract class ChromeActivity extends AsyncInitializationActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -321,16 +321,16 @@ 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/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- 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 -@@ -88,6 +88,8 @@ import java.lang.annotation.Retention; - import java.lang.annotation.RetentionPolicy; +@@ -88,6 +88,8 @@ import java.lang.annotation.RetentionPolicy; import java.util.Iterator; + import java.util.List; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + /** * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu * items based on activity state. -@@ -496,8 +498,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -606,8 +608,9 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties && !isNativePage && !isFileScheme && !isContentScheme @@ -345,15 +345,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java -@@ -31,6 +31,7 @@ import org.chromium.base.metrics.RecordUserAction; +@@ -34,6 +34,7 @@ import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.shared_preferences.SharedPreferencesManager; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.bookmarks.BookmarkUtils; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuItem.Item; - import org.chromium.chrome.browser.contextmenu.ContextMenuCoordinator.ListItemType; -@@ -347,6 +348,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { + import org.chromium.chrome.browser.download.DownloadUtils; +@@ -370,6 +371,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { public List> buildContextMenu() { mShowEphemeralTabNewLabel = null; @@ -363,7 +363,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr List> groupedItems = new ArrayList<>(); if (mParams.isPage() && shouldShowEmptySpaceContextMenu()) { -@@ -415,7 +419,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -438,7 +442,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { } } if (FirstRunStatus.getFirstRunFlowComplete()) { @@ -424,7 +424,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/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -21,6 +21,7 @@ import org.chromium.base.supplier.ObservableSupplier; +@@ -18,6 +18,7 @@ import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; @@ -432,20 +432,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import org.chromium.chrome.browser.DefaultBrowserInfo; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; import org.chromium.chrome.browser.bookmarks.BookmarkModel; -@@ -200,6 +201,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat - openInChromeItemVisible = false; - tryAddingReadAloud = false; - } +@@ -218,6 +219,9 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat + openInChromeItemVisible = false; + tryAddingReadAloud = false; + } + if (AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()) { + downloadItemVisible = true; + } - boolean isNativePage = - url.getScheme().equals(UrlConstants.CHROME_SCHEME) + boolean isNativePage = + url.getScheme().equals(UrlConstants.CHROME_SCHEME) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -98,6 +98,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; +@@ -99,6 +99,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; import org.chromium.net.NetId; @@ -455,7 +455,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -@@ -1250,6 +1253,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1260,6 +1263,13 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid return getInitialActivityWidth() > 0; } @@ -533,9 +533,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java -@@ -54,6 +54,14 @@ import org.chromium.ui.base.Clipboard; - +@@ -56,6 +56,14 @@ import org.chromium.ui.base.Clipboard; import java.util.List; + import java.util.function.Function; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; +import org.chromium.chrome.browser.profiles.Profile; @@ -548,7 +548,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Combines and manages the different UI components of browsing history. */ public class HistoryManager implements OnMenuItemClickListener, -@@ -156,7 +164,7 @@ public class HistoryManager +@@ -161,7 +169,7 @@ public class HistoryManager mUmaRecorder.recordOpenHistory(); // If incognito placeholder is shown, we don't need to create History UI elements. @@ -557,7 +557,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History mSelectableListLayout = null; mRootView = getIncognitoHistoryPlaceholderView(); return; -@@ -406,9 +414,22 @@ public class HistoryManager +@@ -413,9 +421,22 @@ public class HistoryManager onBackPressStateChanged(); } @@ -581,7 +581,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // If Incognito placeholder is shown no need to call any destroy method. return; } -@@ -468,7 +489,7 @@ public class HistoryManager +@@ -475,7 +496,7 @@ public class HistoryManager * @return True if manager handles this event, false if it decides to ignore. */ private boolean onBackPressed() { @@ -626,7 +626,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java -@@ -18,6 +18,7 @@ import org.chromium.base.supplier.ObservableSupplier; +@@ -19,6 +19,7 @@ import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; @@ -634,7 +634,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; -@@ -326,7 +327,8 @@ public class NativePageFactory { +@@ -351,7 +352,8 @@ public class NativePageFactory { String url, NativePage candidatePage, Tab tab, boolean isIncognito, PdfInfo pdfInfo) { NativePage page; @@ -700,7 +700,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java -@@ -0,0 +1,162 @@ +@@ -0,0 +1,175 @@ +/* + This file is part of Bromite. + @@ -733,7 +733,10 @@ new file mode 100644 +import androidx.preference.PreferenceFragmentCompat; +import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat; + ++import org.chromium.base.supplier.ObservableSupplier; ++import org.chromium.base.supplier.ObservableSupplierImpl; +import org.chromium.base.supplier.Supplier; ++ +import org.chromium.chrome.R; +import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.chrome.browser.profiles.Profile; @@ -743,8 +746,11 @@ new file mode 100644 +import org.chromium.chrome.browser.ui.messages.snackbar.INeedSnackbarManager; +import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; +import org.chromium.chrome.browser.lifetime.ApplicationLifetime; ++import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; ++ +import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; +import org.chromium.components.browser_ui.settings.SettingsUtils; ++import org.chromium.components.browser_ui.settings.SettingsFragment; +import org.chromium.components.prefs.PrefService; +import org.chromium.components.user_prefs.UserPrefs; + @@ -752,8 +758,8 @@ new file mode 100644 + * Fragment to keep track of the all the always incognito related preferences. + */ +public class IncognitoSettings -+ extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener, -+ INeedSnackbarManager { ++ extends ChromeBaseSettingsFragment implements Preference.OnPreferenceChangeListener, ++ INeedSnackbarManager { + private Supplier mSnackbarManagerSupplier; + private Snackbar mSnackbar; + @@ -762,16 +768,23 @@ new file mode 100644 + private static final String PREF_INCOGNITO_SAVE_SITE_SETTING = "incognito_save_site_setting"; + + private final PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); ++ private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); ++ ++ @Override ++ public ObservableSupplier getPageTitle() { ++ return mPageTitle; ++ } ++ ++ @Override ++ public @SettingsFragment.AnimationType int getAnimationType() { ++ return SettingsFragment.AnimationType.PROPERTY; ++ } + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { -+ PrivacyPreferencesManagerImpl privacyPrefManager = -+ PrivacyPreferencesManagerImpl.getInstance(); ++ mPageTitle.set(getString(R.string.incognito_settings_title)); + SettingsUtils.addPreferencesFromResource(this, R.xml.incognito_preferences); -+ getActivity().setTitle(R.string.incognito_settings_title); -+ + setHasOptionsMenu(true); -+ + updatePreferences(); + } + @@ -993,7 +1006,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -26,6 +26,7 @@ import org.chromium.base.supplier.Supplier; +@@ -25,6 +25,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.build.BuildConfig; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; @@ -1001,40 +1014,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.ai.AiAssistantService; import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; -@@ -371,6 +372,13 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm - } +@@ -219,7 +220,10 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm + } - private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { + // New Tab +- modelList.add(buildNewTabItem()); + boolean always_incognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); -+ if (always_incognito) { -+ final MenuItem newTabOption = menu.findItem(R.id.new_tab_menu_id); -+ if (newTabOption != null) -+ newTabOption.setVisible(false); ++ if (!always_incognito) { ++ modelList.add(buildNewTabItem()); + } -+ - // We have to iterate all menu items since same menu item ID may be associated with more - // than one menu items. - boolean isOverviewModeMenu = menuGroup == MenuGroup.OVERVIEW_MODE_MENU; -@@ -430,7 +438,14 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm - } - if (item.getItemId() == R.id.recent_tabs_menu_id) { -- item.setVisible(!isIncognito); -+ if (always_incognito) { -+ boolean historyEnabledInIncognito = -+ UserPrefs.get(currentTab.getProfile()).getBoolean(Pref.INCOGNITO_TAB_HISTORY_ENABLED); -+ item.setVisible(historyEnabledInIncognito); -+ } -+ else { -+ item.setVisible(!isIncognito); -+ } - } - if (item.getItemId() == R.id.menu_select_tabs) { - item.setVisible(isMenuSelectTabsVisible); + // New Incognito Tab + modelList.add(buildNewIncognitoTabItem()); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -214,6 +214,8 @@ import org.chromium.ui.InsetObserver; +@@ -218,6 +218,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFacto import org.chromium.ui.UiUtils; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; @@ -1043,7 +1038,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.ui.base.IntentRequestTracker; import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.display.DisplayUtil; -@@ -1212,7 +1214,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1238,7 +1240,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1055,7 +1050,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -48,6 +48,10 @@ import org.chromium.ui.base.PageTransition; +@@ -52,6 +52,10 @@ import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; @@ -1064,9 +1059,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome +import org.chromium.chrome.browser.tab.TabObserver; + /** This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */ + @NullMarked public class ChromeTabCreator extends TabCreator - implements NeedsTabModel, NeedsTabModelOrderController { -@@ -545,7 +549,6 @@ public class ChromeTabCreator extends TabCreator +@@ -567,7 +571,6 @@ public class ChromeTabCreator extends TabCreator // TODO(crbug.com/40691614): Clean up the launches from SearchActivity/Chrome. public Tab launchUrlFromExternalApp( LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) { @@ -1077,15 +1072,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorImpl.java -@@ -12,6 +12,7 @@ import androidx.annotation.VisibleForTesting; - - import org.chromium.base.supplier.OneshotSupplier; - import org.chromium.base.supplier.Supplier; +@@ -17,6 +17,7 @@ import org.chromium.build.annotations.EnsuresNonNull; + import org.chromium.build.annotations.Initializer; + import org.chromium.build.annotations.NullMarked; + import org.chromium.build.annotations.Nullable; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.ntp.RecentlyClosedBridge; -@@ -119,6 +120,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod +@@ -127,6 +128,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ProfileProvider profileProvider = mProfileProviderSupplier.get(); assert profileProvider != null; @@ -1097,7 +1092,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -51,6 +51,8 @@ import org.chromium.chrome.browser.tabwindow.TabWindowManager; +@@ -54,6 +54,8 @@ import org.chromium.chrome.browser.tabwindow.TabWindowManager; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.content_public.browser.LoadUrlParams; @@ -1106,7 +1101,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; -@@ -835,6 +837,13 @@ public class TabPersistentStore { +@@ -844,6 +846,13 @@ public class TabPersistentStore { } } } @@ -1123,7 +1118,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer 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 -@@ -49,6 +49,7 @@ import org.chromium.base.supplier.Supplier; +@@ -50,6 +50,7 @@ import org.chromium.base.supplier.Supplier; import org.chromium.cc.input.BrowserControlsState; import org.chromium.chrome.R; import org.chromium.chrome.browser.ActivityTabProvider; @@ -1131,7 +1126,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton; import org.chromium.chrome.browser.back_press.BackPressManager; -@@ -828,7 +829,7 @@ public class ToolbarManager +@@ -856,7 +857,7 @@ public class ToolbarManager TraceEvent.end("isOfflinePage"); return ret; } @@ -1392,7 +1387,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo #else #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" -@@ -570,6 +573,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -568,6 +571,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -1406,7 +1401,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) return nullptr; -@@ -577,6 +587,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -575,6 +585,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -1755,7 +1750,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -254,6 +254,7 @@ +@@ -256,6 +256,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -1763,7 +1758,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #include "chrome/browser/android/ntp/recent_tabs_page_prefs.h" #include "chrome/browser/android/oom_intervention/oom_intervention_decider.h" #include "chrome/browser/android/preferences/browser_prefs_android.h" -@@ -2068,6 +2069,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2142,6 +2143,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1828,7 +1823,7 @@ diff --git a/chrome/browser/profiles/profile_selections.h b/chrome/browser/profi diff --git a/chrome/browser/ui/android/native_page/BUILD.gn b/chrome/browser/ui/android/native_page/BUILD.gn --- a/chrome/browser/ui/android/native_page/BUILD.gn +++ b/chrome/browser/ui/android/native_page/BUILD.gn -@@ -30,6 +30,8 @@ robolectric_library("junit") { +@@ -31,6 +31,8 @@ robolectric_library("junit") { deps = [ ":java", @@ -1924,7 +1919,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -89,6 +89,11 @@ import org.chromium.ui.base.WindowAndroid; +@@ -91,6 +91,11 @@ import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.interpolators.Interpolators; import org.chromium.url.GURL; @@ -1936,7 +1931,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import java.util.ArrayList; import java.util.List; import java.util.function.BooleanSupplier; -@@ -1232,10 +1237,13 @@ class LocationBarMediator +@@ -1300,10 +1305,13 @@ class LocationBarMediator } Tab tab = mLocationBarDataProvider.getTab(); if (tab == null) return false; @@ -1954,7 +1949,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -6682,6 +6682,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6796,6 +6796,31 @@ To change this setting, BEGIN_LINKdelete the Chrome d Cookies, cache, and other site data @@ -1989,7 +1984,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/LocationBarModel.java -@@ -164,6 +164,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro +@@ -165,6 +165,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro protected GURL mVisibleGurl = GURL.emptyGURL(); protected String mFormattedFullUrl; protected String mUrlForDisplay; @@ -1997,7 +1992,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow // notifyUrlChanged and notifySecurityStateChanged are usually called 3 times across a same // document navigation. The first call is usually necessary, which updates the UrlBar to reflect -@@ -187,7 +188,9 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro +@@ -188,7 +189,9 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro Context context, NewTabPageDelegate newTabPageDelegate, UrlFormatter urlFormatter, @@ -2078,7 +2073,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -4106,6 +4106,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -4090,6 +4090,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2226,7 +2221,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc --- a/components/omnibox/browser/search_provider.cc +++ b/components/omnibox/browser/search_provider.cc -@@ -912,7 +912,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( +@@ -915,7 +915,8 @@ std::unique_ptr SearchProvider::CreateSuggestLoader( // is required. // Request for suggestions in OTR contexts is not allowed; except for the Lens // searchboxes. diff --git a/build/cromite_patches/Add-bookmark-import-export-actions.patch b/build/cromite_patches/Add-bookmark-import-export-actions.patch index 435fd76a..2ad28dbd 100644 --- a/build/cromite_patches/Add-bookmark-import-export-actions.patch +++ b/build/cromite_patches/Add-bookmark-import-export-actions.patch @@ -124,15 +124,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java -@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.app.bookmarks; +@@ -9,6 +9,7 @@ import static org.chromium.build.NullUtil.assumeNonNull; import android.content.ComponentName; import android.content.Intent; import android.text.TextUtils; +import android.os.Bundle; import org.chromium.base.IntentUtils; - import org.chromium.build.annotations.Nullable; -@@ -29,6 +30,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; + import org.chromium.build.annotations.NullMarked; +@@ -32,6 +33,9 @@ import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType; @@ -142,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B /** * The activity that displays the bookmark UI on the phone. It keeps a {@link * BookmarkManagerCoordinator} inside of it and creates a snackbar manager. This activity should -@@ -42,6 +46,9 @@ public class BookmarkActivity extends SnackbarActivity { +@@ -46,6 +50,9 @@ public class BookmarkActivity extends SnackbarActivity { private @Nullable BookmarkManagerCoordinator mBookmarkManagerCoordinator; private @Nullable BookmarkOpener mBookmarkOpener; @@ -152,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B @Override protected void onProfileAvailable(Profile profile) { super.onProfileAvailable(profile); -@@ -68,6 +75,14 @@ public class BookmarkActivity extends SnackbarActivity { +@@ -73,6 +80,14 @@ public class BookmarkActivity extends SnackbarActivity { mBookmarkManagerCoordinator.updateForUrl(url); setContentView(mBookmarkManagerCoordinator.getView()); BackPressHelper.create(this, getOnBackPressedDispatcher(), mBookmarkManagerCoordinator); @@ -167,15 +167,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B } @Override -@@ -87,6 +102,7 @@ public class BookmarkActivity extends SnackbarActivity { +@@ -91,6 +106,7 @@ public class BookmarkActivity extends SnackbarActivity { @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { + protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); + mWindowAndroid.getIntentRequestTracker().onActivityResult(requestCode, resultCode, data); if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) { + assumeNonNull(data); BookmarkId bookmarkId = - BookmarkId.getBookmarkIdFromString( -@@ -95,6 +111,21 @@ public class BookmarkActivity extends SnackbarActivity { +@@ -100,6 +116,21 @@ public class BookmarkActivity extends SnackbarActivity { } } @@ -200,7 +200,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java -@@ -18,6 +18,7 @@ import org.chromium.base.supplier.ObservableSupplier; +@@ -19,6 +19,7 @@ import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; @@ -208,7 +208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier; -@@ -59,7 +60,7 @@ import org.chromium.ui.util.ColorUtils; +@@ -62,7 +63,7 @@ import org.chromium.ui.util.ColorUtils; * Creates NativePage objects to show chrome-native:// URLs using the native Android view system. */ public class NativePageFactory { @@ -217,7 +217,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final BrowserControlsManager mBrowserControlsManager; private final Supplier mCurrentTabSupplier; -@@ -82,7 +83,7 @@ public class NativePageFactory { +@@ -85,7 +86,7 @@ public class NativePageFactory { private static NativePage sTestPage; public NativePageFactory( @@ -226,7 +226,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat @NonNull BottomSheetController sheetController, @NonNull BrowserControlsManager browserControlsManager, @NonNull Supplier currentTabSupplier, -@@ -154,7 +155,7 @@ public class NativePageFactory { +@@ -157,7 +158,7 @@ public class NativePageFactory { @VisibleForTesting static class NativePageBuilder { @@ -235,10 +235,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final Supplier mNewTabPageCreationTracker; private final BrowserControlsManager mBrowserControlsManager; -@@ -251,7 +252,7 @@ public class NativePageFactory { - mSnackbarManagerSupplier.get(), - tab.getProfile(), - new TabShim(tab, mBrowserControlsManager, mTabModelSelector), +@@ -262,7 +263,7 @@ public class NativePageFactory { + mBrowserControlsManager, + mTabModelSelector, + mEdgeToEdgeControllerSupplier), - mActivity.getComponentName()); + mActivity.getComponentName(), mActivity); } @@ -247,7 +247,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -222,6 +222,8 @@ static_library("browser") { +@@ -248,6 +248,8 @@ static_library("browser") { "bluetooth/chrome_bluetooth_delegate_impl_client.h", "bookmarks/bookmark_model_factory.cc", "bookmarks/bookmark_model_factory.h", @@ -256,7 +256,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "bookmarks/chrome_bookmark_client.cc", "bookmarks/chrome_bookmark_client.h", "bookmarks/managed_bookmark_service_factory.cc", -@@ -1731,6 +1733,13 @@ static_library("browser") { +@@ -1760,6 +1762,13 @@ static_library("browser") { ] } @@ -270,7 +270,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", -@@ -3639,8 +3648,6 @@ static_library("browser") { +@@ -3684,8 +3693,6 @@ static_library("browser") { "bookmarks/bookmark_expanded_state_tracker.h", "bookmarks/bookmark_expanded_state_tracker_factory.cc", "bookmarks/bookmark_expanded_state_tracker_factory.h", @@ -758,7 +758,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerCoordinator.java -@@ -53,6 +53,8 @@ import org.chromium.components.image_fetcher.ImageFetcher; +@@ -57,6 +57,8 @@ import org.chromium.components.image_fetcher.ImageFetcher; import org.chromium.components.image_fetcher.ImageFetcherConfig; import org.chromium.components.image_fetcher.ImageFetcherFactory; import org.chromium.ui.KeyboardVisibilityDelegate; @@ -767,7 +767,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType; import org.chromium.ui.modelutil.MVCListAdapter.ListItem; -@@ -322,6 +324,13 @@ public class BookmarkManagerCoordinator +@@ -333,6 +335,13 @@ public class BookmarkManagerCoordinator // Public API implementation. @@ -784,7 +784,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManagerMediator.java -@@ -59,6 +59,8 @@ import org.chromium.components.commerce.core.SubscriptionsObserver; +@@ -62,6 +62,8 @@ import org.chromium.components.commerce.core.SubscriptionsObserver; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.power_bookmarks.PowerBookmarkMeta; import org.chromium.components.power_bookmarks.PowerBookmarkType; @@ -793,7 +793,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows import org.chromium.ui.accessibility.AccessibilityState; import org.chromium.ui.listmenu.ListMenu; import org.chromium.ui.listmenu.ListMenuItemProperties; -@@ -77,6 +79,47 @@ import java.util.function.BooleanSupplier; +@@ -80,6 +82,47 @@ import java.util.function.BooleanSupplier; import java.util.function.Consumer; import java.util.function.Predicate; @@ -840,8 +840,8 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows + /** Responsible for BookmarkManager business logic. */ // TODO(crbug.com/40256938): Remove BookmarkDelegate if possible. - class BookmarkManagerMediator -@@ -86,6 +129,9 @@ class BookmarkManagerMediator + @NullMarked +@@ -90,6 +133,9 @@ class BookmarkManagerMediator private static boolean sPreventLoadingForTesting; @@ -851,7 +851,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** Keeps track of whether drag is enabled / active for bookmark lists. */ private class BookmarkDragStateDelegate implements DragStateDelegate { private BookmarkDelegate mBookmarkDelegate; -@@ -583,6 +629,14 @@ class BookmarkManagerMediator +@@ -596,6 +642,14 @@ class BookmarkManagerMediator mNativePage = nativePage; } @@ -866,7 +866,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows /** See BookmarkManager(Coordinator)#updateForUrl */ void updateForUrl(String url) { // Bookmark model is null if the manager has been destroyed. -@@ -758,6 +812,235 @@ class BookmarkManagerMediator +@@ -768,6 +822,235 @@ class BookmarkManagerMediator } } @@ -1105,7 +1105,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPage.java -@@ -16,6 +16,9 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; +@@ -15,6 +15,9 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.native_page.BasicNativePage; import org.chromium.chrome.browser.ui.native_page.NativePageHost; import org.chromium.components.embedder_support.util.UrlConstants; @@ -1114,20 +1114,20 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows +import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; /** A native page holding a {@link BookmarkManagerCoordinator} on _tablet_. */ - public class BookmarkPage extends BasicNativePage { + @NullMarked @@ -35,7 +38,8 @@ public class BookmarkPage extends BasicNativePage { - @NonNull SnackbarManager snackbarManager, - @NonNull Profile profile, - @NonNull NativePageHost host, + SnackbarManager snackbarManager, + Profile profile, + NativePageHost host, - @Nullable ComponentName componentName) { + @Nullable ComponentName componentName, + ChromeActivity activity) { super(host); mTitle = host.getContext().getString(R.string.bookmarks); -@@ -55,6 +59,9 @@ public class BookmarkPage extends BasicNativePage { - new BookmarkManagerOpenerImpl(), - PriceDropNotificationManagerFactory.create(profile)); +@@ -56,6 +60,9 @@ public class BookmarkPage extends BasicNativePage { + PriceDropNotificationManagerFactory.create(profile), + host::createEdgeToEdgePadAdjuster); mBookmarkManagerCoordinator.setBasicNativePage(this); + mBookmarkManagerCoordinator.setWindow(activity.getWindowAndroid(), + new ModalDialogManager( @@ -1327,7 +1327,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse 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 -@@ -223,6 +223,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -236,6 +236,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kBatchTabRestore, &kBlockIntentsWhileLocked, &kBookmarkPaneAndroid, @@ -1338,7 +1338,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -625,6 +625,7 @@ public abstract class ChromeFeatureList { +@@ -662,6 +662,7 @@ public abstract class ChromeFeatureList { public static final String USE_LIBUNWINDSTACK_NATIVE_UNWINDER_ANDROID = "UseLibunwindstackNativeUnwinderAndroid"; public static final String VISITED_URL_RANKING_SERVICE = "VisitedURLRankingService"; @@ -1349,7 +1349,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer/profile_writer.cc --- a/chrome/browser/importer/profile_writer.cc +++ b/chrome/browser/importer/profile_writer.cc -@@ -125,6 +125,16 @@ void ProfileWriter::AddBookmarks( +@@ -126,6 +126,16 @@ void ProfileWriter::AddBookmarks( return; BookmarkModel* model = BookmarkModelFactory::GetForBrowserContext(profile_); @@ -1401,7 +1401,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** Whether Chrome is set as the default browser. Default value is false. */ public static final String CHROME_DEFAULT_BROWSER = "applink.chrome_default_browser"; -@@ -999,6 +1001,7 @@ public final class ChromePreferenceKeys { +@@ -1008,6 +1010,7 @@ public final class ChromePreferenceKeys { AUXILIARY_SEARCH_SCHEMA_VERSION, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1441,7 +1441,7 @@ diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn @@ -352,6 +352,9 @@ static_library("common_lib") { - sources += [ + "chrome_descriptors_android.h", "media/chrome_media_drm_bridge_client.cc", "media/chrome_media_drm_bridge_client.h", + ## Bromite dependencies for bookmark import functionality @@ -1693,7 +1693,7 @@ diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui return mimeTypes; } -@@ -1155,6 +1169,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -1168,6 +1182,10 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick return countAcceptTypesFor(superType) == mMimeTypes.size(); } diff --git a/build/cromite_patches/Add-cromite-flags-support.patch b/build/cromite_patches/Add-cromite-flags-support.patch index e3c87ad6..20709c0d 100644 --- a/build/cromite_patches/Add-cromite-flags-support.patch +++ b/build/cromite_patches/Add-cromite-flags-support.patch @@ -144,7 +144,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/base/BUILD.gn b/base/BUILD.gn --- a/base/BUILD.gn +++ b/base/BUILD.gn -@@ -178,6 +178,8 @@ use_epoll = is_linux || is_chromeos || is_android +@@ -174,6 +174,8 @@ use_epoll = is_linux || is_chromeos || is_android # This does not include test code (test support and anything in the test # directory) which should use source_set as is recommended for GN targets). component("base") { @@ -153,7 +153,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1036,7 +1038,7 @@ component("base") { +@@ -1035,7 +1037,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -224,7 +224,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc namespace { // Pointer to the FeatureList instance singleton that was set via -@@ -472,6 +497,46 @@ bool FeatureList::IsEnabled(const Feature& feature) { +@@ -470,6 +495,46 @@ bool FeatureList::IsEnabled(const Feature& feature) { return g_feature_list_instance->IsFeatureEnabled(feature); } @@ -271,7 +271,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc // static bool FeatureList::IsValidFeatureOrFieldTrialName(std::string_view name) { return IsStringASCII(name) && name.find_first_of(",<*") == std::string::npos; -@@ -742,6 +807,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor, +@@ -737,6 +802,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor, void FeatureList::FinalizeInitialization() { DCHECK(!initialized_); @@ -292,7 +292,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc diff --git a/base/feature_list.h b/base/feature_list.h --- a/base/feature_list.h +++ b/base/feature_list.h -@@ -174,8 +174,10 @@ enum class FeatureMacroHandshake { kSecret }; +@@ -177,8 +177,10 @@ enum class FeatureMacroHandshake { kSecret }; struct BASE_EXPORT LOGICALLY_CONST Feature { constexpr Feature(const char* name, FeatureState default_state, @@ -305,7 +305,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h #if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX) if (std::string_view(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) == 0) { -@@ -202,6 +204,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { +@@ -205,6 +207,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { // command line switch. const FeatureState default_state; @@ -315,7 +315,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h private: friend class FeatureList; -@@ -481,6 +486,11 @@ class BASE_EXPORT FeatureList { +@@ -485,6 +490,11 @@ class BASE_EXPORT FeatureList { // instance, which is checked in builds with DCHECKs enabled. static bool IsEnabled(const Feature& feature); @@ -327,7 +327,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h // Some characters are not allowed to appear in feature names or the // associated field trial names, as they are used as special characters for // command-line serialization. This function checks that the strings are ASCII -@@ -750,4 +760,62 @@ class BASE_EXPORT FeatureList { +@@ -754,4 +764,62 @@ class BASE_EXPORT FeatureList { } // namespace base @@ -393,7 +393,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h diff --git a/build/android/gyp/java_cpp_features.py b/build/android/gyp/java_cpp_features.py --- a/build/android/gyp/java_cpp_features.py +++ b/build/android/gyp/java_cpp_features.py -@@ -22,10 +22,27 @@ class FeatureParserDelegate(java_cpp_utils.CppConstantParser.Delegate): +@@ -21,10 +21,27 @@ class FeatureParserDelegate(java_cpp_utils.CppConstantParser.Delegate): # ExtractConstantName() -> 'ConstantName' # ExtractValue() -> '"StringNameOfTheFeature"' FEATURE_RE = re.compile(r'BASE_FEATURE\(k([^,]+),') @@ -463,7 +463,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -127,7 +127,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -130,7 +130,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } @Override @@ -528,7 +528,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -@@ -34,7 +35,9 @@ import org.chromium.base.Callback; +@@ -32,7 +33,9 @@ import org.chromium.base.Callback; import org.chromium.base.CallbackUtils; import org.chromium.base.Log; import org.chromium.base.metrics.RecordHistogram; @@ -538,7 +538,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeBaseAppCompatActivity; -@@ -42,12 +45,14 @@ import org.chromium.chrome.browser.back_press.BackPressHelper; +@@ -40,12 +43,14 @@ import org.chromium.chrome.browser.back_press.BackPressHelper; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; @@ -553,7 +553,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory; import org.chromium.components.browser_ui.bottomsheet.ManagedBottomSheetController; -@@ -89,6 +94,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -88,6 +93,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, SnackbarManageable { private static final String TAG = "SettingsActivity"; @@ -594,7 +594,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) public static final String EXTRA_SHOW_FRAGMENT = "show_fragment"; -@@ -155,7 +194,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -154,7 +193,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity mProfile, mSnackbarManagerSupplier, mBottomSheetControllerSupplier, @@ -607,7 +607,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/tracing/settings/DeveloperSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tracing/settings/DeveloperSettings.java -@@ -17,11 +17,12 @@ import org.chromium.base.version_info.VersionInfo; +@@ -19,12 +19,13 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.R; import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; @@ -616,24 +616,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting import org.chromium.components.browser_ui.settings.SettingsUtils; /** Settings fragment containing preferences aimed at Chrome and web developers. */ + @NullMarked -public class DeveloperSettings extends PreferenceFragmentCompat implements EmbeddableSettingsPage { +public class DeveloperSettings extends ChromeBaseSettingsFragment implements EmbeddableSettingsPage { private static final String UI_PREF_BETA_STABLE_HINT = "beta_stable_hint"; // Non-translated strings: -@@ -52,7 +53,7 @@ public class DeveloperSettings extends PreferenceFragmentCompat implements Embed +@@ -55,7 +56,7 @@ public class DeveloperSettings extends PreferenceFragmentCompat implements Embed } @Override -- public void onCreatePreferences(Bundle savedInstanceState, String s) { -+ public void onCreatePreferencesCromite(Bundle savedInstanceState, String s) { +- public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String s) { ++ public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String s) { SettingsUtils.addPreferencesFromResource(this, R.xml.developer_preferences); if (VersionInfo.isBetaBuild() || VersionInfo.isStableBuild()) { 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 -@@ -406,6 +406,10 @@ using flags_ui::kOsLinux; +@@ -407,6 +407,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -644,9 +645,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4705,6 +4709,10 @@ const FeatureEntry::FeatureVariation kHistorySyncOptinExpansionPillVariations[] - nullptr}}; - #endif // BUILDFLAG(ENABLE_DICE_SUPPORT) +@@ -4835,6 +4839,10 @@ const FeatureEntry::Choice kDataSharingVersioningStateChoices[] = { + }; + // LINT.ThenChange(//ios/chrome/browser/flags/about_flags.mm:DataSharingVersioningChoices) +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -655,7 +656,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc // RECORDING USER METRICS FOR FLAGS: // ----------------------------------------------------------------------------- // The first line of the entry is the internal name. -@@ -4731,6 +4739,9 @@ const FeatureEntry::FeatureVariation kHistorySyncOptinExpansionPillVariations[] +@@ -4861,6 +4869,9 @@ const FeatureEntry::Choice kDataSharingVersioningStateChoices[] = { const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -727,7 +728,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -1348,5 +1348,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, +@@ -1421,5 +1421,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, "WebOtpCrossDeviceSimpleString", base::FEATURE_DISABLED_BY_DEFAULT); @@ -737,9 +738,9 @@ 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 -@@ -286,6 +286,7 @@ constexpr base::FeatureParam kQuickDeleteAndroidSurveyTriggerId( - "trigger_id", - /*default_value=*/""); +@@ -318,6 +318,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutTextVariant( + "text_variant", + /*default_value=*/false); +#include "cromite_flags/chrome_browser_flags_android_chrome_feature_list_h.inc" } // namespace android @@ -759,7 +760,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -924,7 +928,7 @@ public abstract class ChromeFeatureList { +@@ -1015,7 +1019,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sWebApkMinShellApkVersion = newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true); @@ -768,7 +769,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f List.of( sAccountForSuppressedKeyboardInsets, sAllowTabClosingUponMinimization, -@@ -1048,6 +1052,13 @@ public abstract class ChromeFeatureList { +@@ -1152,6 +1156,13 @@ public abstract class ChromeFeatureList { sUseLibunwindstackNativeUnwinderAndroid, sWebApkMinShellApkVersion); @@ -958,7 +959,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc -@@ -500,4 +500,5 @@ bool HasTabSearchToolbarButton() { +@@ -430,4 +430,5 @@ bool HasTabSearchToolbarButton() { return has_tab_search_toolbar_button; } @@ -999,7 +1000,7 @@ diff --git a/chrome/browser/unexpire_flags.cc b/chrome/browser/unexpire_flags.cc diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc -@@ -1795,4 +1795,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, +@@ -1866,4 +1866,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, "DisableShortcutsEnableDiy", base::FEATURE_ENABLED_BY_DEFAULT); @@ -1146,7 +1147,7 @@ diff --git a/components/components_strings.grd b/components/components_strings.g + - + diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc --- a/components/content_settings/core/common/features.cc +++ b/components/content_settings/core/common/features.cc @@ -1186,7 +1187,7 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o diff --git a/components/password_manager/core/browser/features/password_features.cc b/components/password_manager/core/browser/features/password_features.cc --- a/components/password_manager/core/browser/features/password_features.cc +++ b/components/password_manager/core/browser/features/password_features.cc -@@ -183,4 +183,5 @@ BASE_FEATURE(kImprovedPasswordChangeService, +@@ -191,4 +191,5 @@ BASE_FEATURE(kImprovedPasswordChangeService, "ImprovedPasswordChangeService", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1195,7 +1196,7 @@ diff --git a/components/password_manager/core/browser/features/password_features diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -146,6 +146,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, +@@ -147,6 +147,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, "OsAdditionalSecurityPermissionKillSwitch", base::FEATURE_DISABLED_BY_DEFAULT); #endif @@ -1249,7 +1250,7 @@ diff --git a/components/variations/synthetic_trials_active_group_id_provider.h b diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flags_state.cc --- a/components/webui/flags/flags_state.cc +++ b/components/webui/flags/flags_state.cc -@@ -376,6 +376,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( +@@ -377,6 +377,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); @@ -1271,7 +1272,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag CHECK(entry_it != name_to_switch_map.end()); const SwitchEntry& entry = entry_it->second; -@@ -709,6 +724,27 @@ void FlagsState::GetFlagFeatureEntries( +@@ -710,6 +725,27 @@ void FlagsState::GetFlagFeatureEntries( data.Set("links", std::move(links)); } @@ -1299,7 +1300,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag switch (entry.type) { case FeatureEntry::SINGLE_VALUE: case FeatureEntry::SINGLE_DISABLE_VALUE: -@@ -836,6 +872,16 @@ void FlagsState::AddSwitchesToCommandLine( +@@ -837,6 +873,16 @@ void FlagsState::AddSwitchesToCommandLine( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); if (entry_it == name_to_switch_map.end()) { @@ -1316,7 +1317,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag NOTREACHED(); } -@@ -1092,6 +1138,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName( +@@ -1093,6 +1139,14 @@ const FeatureEntry* FlagsState::FindFeatureEntryByName( bool FlagsState::IsSupportedFeature(const FlagsStorage* storage, const std::string& name, int platform_mask) const { @@ -1331,7 +1332,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag for (const auto& entry : feature_entries_) { DCHECK(entry.IsValid()); if (!(entry.supported_platforms & platform_mask)) { -@@ -1130,6 +1184,11 @@ void FlagsState::SetFlags( +@@ -1131,6 +1185,11 @@ void FlagsState::SetFlags( FindFeatureEntryByName(feature_internal_name); // Since this flag is currently enabled, we know for sure that we can find // its feature entry using its internal name. @@ -1346,7 +1347,7 @@ diff --git a/components/webui/flags/flags_state.cc b/components/webui/flags/flag diff --git a/components/webui/flags/resources/app.css b/components/webui/flags/resources/app.css --- a/components/webui/flags/resources/app.css +++ b/components/webui/flags/resources/app.css -@@ -383,3 +383,27 @@ cr-tabs { +@@ -391,3 +391,27 @@ cr-tabs { padding-top: 1.5rem; } } @@ -1385,7 +1386,7 @@ diff --git a/components/webui/flags/resources/app.html.ts b/components/webui/fla @@ -1491,7 +1492,7 @@ diff --git a/components/webui/flags/resources/app.ts b/components/webui/flags/re diff --git a/components/webui/flags/resources/experiment.css b/components/webui/flags/resources/experiment.css --- a/components/webui/flags/resources/experiment.css +++ b/components/webui/flags/resources/experiment.css -@@ -12,6 +12,7 @@ +@@ -17,6 +17,7 @@ } .experiment { @@ -1499,7 +1500,7 @@ diff --git a/components/webui/flags/resources/experiment.css b/components/webui/ color: var(--secondary-color); line-height: 1.45; width: 100%; -@@ -79,6 +80,11 @@ +@@ -84,6 +85,11 @@ resize: none; } @@ -1511,7 +1512,7 @@ diff --git a/components/webui/flags/resources/experiment.css b/components/webui/ select { background: white; border: 1px solid var(--link-color); -@@ -155,6 +161,7 @@ input { +@@ -160,6 +166,7 @@ input { @media (max-width: 480px) { .experiment { border-bottom: 1px solid var(--separator-color); @@ -1519,7 +1520,7 @@ diff --git a/components/webui/flags/resources/experiment.css b/components/webui/ } .experiment-name { -@@ -172,7 +179,6 @@ input { +@@ -177,7 +184,6 @@ input { .experiment .experiment-actions { max-width: 100%; padding-top: 12px; @@ -1527,7 +1528,7 @@ diff --git a/components/webui/flags/resources/experiment.css b/components/webui/ width: 100%; } -@@ -180,7 +186,6 @@ input { +@@ -185,7 +191,6 @@ input { .body { overflow: hidden; text-overflow: ellipsis; @@ -1551,7 +1552,7 @@ diff --git a/components/webui/flags/resources/experiment.html.ts b/components/we @@ -86,7 +87,9 @@ export function getHtml(this: ExperimentElement) { @change="${this.onExperimentSelectChange_}"> ${this.feature_.options!.map(option => html` -